<?xml version="1.0" encoding="utf-8" ?>
<otrs_package version="1.1">
    <Name>ITSMConfigurationManagement</Name>
    <Version>11.1.1</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-06-24 14:05:35" 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>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>792a1e33be03ff314ff772c0751c6444a3b8a1c6</BuildCommitID>
    <BuildDate>2026-06-24 14:05:44</BuildDate>
    <BuildHost>opms.rother-oss.com</BuildHost>
    <Filelist>
        <File Location="Custom/Kernel/Modules/AdminDynamicField.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSBkMjYzYjg0MWIwMjU0MGY0ZWNlYWYzYjYyNTEyOGUwNGZhMWEwNjA2IC0gS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6Ok1vZHVsZXM6OkFkbWluRHluYW1pY0ZpZWxkOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIHNldCBwcmVmIGZvciBjb2x1bW5zIGtleQogICAgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9ID0gJ0luY2x1ZGVJbnZhbGlkJyAuICctJyAuICRTZWxmLT57QWN0aW9ufTsKCiAgICBteSAlUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRQcmVmZXJlbmNlcygKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgKTsKCiAgICAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA9ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5SW5jbHVkZUludmFsaWR9IH07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0R5bmFtaWNGaWVsZERlbGV0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgcmV0dXJuICRTZWxmLT5fRHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgZWxzaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0lUU01Db25maWdJdGVtVmVyc2lvblVwZGF0ZScgKSB7CgogICAgICAgICMgY2hhbGxlbmdlIHRva2VuIGNoZWNrIGZvciB3cml0ZSBhY3Rpb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkNoYWxsZW5nZVRva2VuQ2hlY2soKTsKCiAgICAgICAgaWYgKCAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25TeW5jKCkgKSB7CiAgICAgICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyktPkVycm9yU2NyZWVuKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CgogICAgcmV0dXJuICRTZWxmLT5fU2hvd092ZXJ2aWV3KAogICAgICAgICVQYXJhbSwKICAgICAgICBBY3Rpb24gPT4gJ092ZXJ2aWV3JywKICAgICk7Cn0KCiMgQUpBWCBzdWItYWN0aW9uCnN1YiBfRHluYW1pY0ZpZWxkRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwogICAgbXkgJExvZ09iamVjdCAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpOwoKICAgIG15ICRDb25maXJtZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlybWVkJyApOwoKICAgIGlmICggISRDb25maXJtZWQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAnUHJpb3JpdHknID0+ICdlcnJvcicsCiAgICAgICAgICAgICdNZXNzYWdlJyAgPT4gIk5lZWQgJ0NvbmZpcm1lZCchIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnSUQnICk7CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgSUQgPT4gJElELAogICAgKTsKCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKSApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgJ01lc3NhZ2UnICA9PiAiQ291bGQgbm90IGZpbmQgRHluYW1pY0ZpZWxkICRJRCEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0ludGVybmFsRmllbGR9ICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgJ1ByaW9yaXR5JyA9PiAnZXJyb3InLAogICAgICAgICAgICAnTWVzc2FnZScgID0+ICJDb3VsZCBub3QgZGVsZXRlIGludGVybmFsIER5bmFtaWNGaWVsZCAkSUQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkVmFsdWVzRGVsZXRlU3VjY2VzcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+QWxsVmFsdWVzRGVsZXRlKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgIG15ICRTdWNjZXNzOwoKICAgIGlmICgkVmFsdWVzRGVsZXRlU3VjY2VzcykgewogICAgICAgICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkRGVsZXRlKAogICAgICAgICAgICBJRCAgICAgPT4gJElELAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyBlbmNvZGluZyBkb2VzIG5vdCBtYXR0ZXIsIGFzICRTdWNjZXNzIGlzIGVpdGhlciB1bmRlZiBvciBhbiBpbnRlZ2VyCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT5BdHRhY2htZW50KAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWwnLAogICAgICAgIENvbnRlbnQgICAgID0+ICRTdWNjZXNzLAogICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICApOwp9CgpzdWIgX1Nob3dPdmVydmlldyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRmllbGRUeXBlQ29uZmlnICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdEeW5hbWljRmllbGRzOjpEcml2ZXInKTsKICAgIG15ICRPYmplY3RUeXBlRmlsdGVyICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyktPkdldFBhcmFtKCBQYXJhbSA9PiAnT2JqZWN0VHlwZUZpbHRlcicgKSB8fCAnJzsKICAgIG15ICROYW1lc3BhY2VGaWx0ZXIgICAgPSAkS2VybmVsOjpPTS0+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+ICREeW5hbWljRmllbGRPYmplY3RTdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgIGlmIChAREZOYW1lc3BhY2VzKSB7CiAgICAgICAgbXkgJU5hbWVzcGFjZVNlbGVjdGlvbiA9ICgKICAgICAgICAgICAgJzxub25lPicgPT4gJzwnIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdub25lJykgLiAnPicsCiAgICAgICAgICAgIG1hcCB7ICRfID0+ICRfIH0gQERGTmFtZXNwYWNlcywKICAgICAgICApOwoKICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZXNwYWNlU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVOYW1lc3BhY2VTZWxlY3Rpb24sCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnRHluYW1pY0ZpZWxkTmFtZXNwYWNlJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgU29ydCAgICAgICAgID0+ICdBbHBoYW51bWVyaWNWYWx1ZScsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRHluYW1pY0ZpZWxkTmFtZXNwYWNlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lc3BhY2VTdHJnID0+ICREeW5hbWljRmllbGROYW1lc3BhY2VTdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnT2JqZWN0VHlwZXMnLAogICAgICAgIFZhbHVlID0+IFxAT2JqZWN0VHlwZXMKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnRHluYW1pY0ZpZWxkcycsCiAgICAgICAgVmFsdWUgPT4gXCVGaWVsZERpYWxvZ3MKICAgICk7CgogICAgIyBjYWxsIGhpbnQgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0hpbnQnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBtZXJnZSBUaWNrZXQgYW5kIEFydGljbGUgaW50byBvbmUgdHlwZQogICAgbXkgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZjsKICAgIGlmICggJE9iamVjdFR5cGVGaWx0ZXIgZXEgJ1RpY2tldCcgKSB7CiAgICAgICAgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiA9IFsgJ1RpY2tldCcsICdBcnRpY2xlJyBdOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiA9ICRPYmplY3RUeXBlRmlsdGVyID8gWyRPYmplY3RUeXBlRmlsdGVyXSA6IHVuZGVmOwogICAgfQoKICAgICMgZ2V0IGNvbXBsZXRlIGR5bmFtaWMgZmllbGRzIGxpc3QKICAgIG15ICREeW5hbWljRmllbGRzTGlzdEFsbCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3QoCiAgICAgICAgVmFsaWQgPT4gMCwKICAgICk7CgogICAgIyBnZXQgZmlsdGVyZWQgZHluYW1pYyBmaWVsZHMgbGlzdAogICAgbXkgJER5bmFtaWNGaWVsZHNMaXN0RmlsdGVyZWQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgIE9iamVjdFR5cGUgPT4gJE9iamVjdFR5cGVGaWx0ZXJBcnJheVJlZiwKICAgICAgICBOYW1lc3BhY2UgID0+ICROYW1lc3BhY2VGaWx0ZXIsCiAgICAgICAgVmFsaWQgICAgICA9PiAkU2VsZi0+e0luY2x1ZGVJbnZhbGlkfSA/IDAgOiAxLAogICAgKTsKCiAgICBteSAkRmlsdGVyU3RyZyA9ICcnOwogICAgaWYgKCBJc1N0cmluZ1dpdGhEYXRhKCRPYmplY3RUeXBlRmlsdGVyKSApIHsKICAgICAgICAkRmlsdGVyU3RyZyAuPSAiO09iamVjdFR5cGVGaWx0ZXI9IiAuICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuRmlsdGVyIHwgdXJpICVdJywKICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgRmlsdGVyID0+ICRPYmplY3RUeXBlRmlsdGVyLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKEBERk5hbWVzcGFjZXMpIHsKICAgICAgICBpZiAoIElzU3RyaW5nV2l0aERhdGEoJE5hbWVzcGFjZUZpbHRlcikgKSB7CiAgICAgICAgICAgICRGaWx0ZXJTdHJnIC49ICI7TmFtZXNwYWNlRmlsdGVyPSIgLiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5GaWx0ZXIgfCB1cmkgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkTmFtZXNwYWNlRmlsdGVyLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBwcmludCB0aGUgbGlzdCBvZiBkeW5hbWljIGZpZWxkcwogICAgJFNlbGYtPl9EeW5hbWljRmllbGRzTGlzdFNob3coCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAkRHluYW1pY0ZpZWxkc0xpc3RGaWx0ZXJlZCwKICAgICAgICBUb3RhbCAgICAgICAgID0+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+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKAogICAgICAgICAgICAgICAgJ0NvdWxkIG5vdCByZXNldCBEeW5hbWljIEZpZWxkIG9yZGVyIHByb3Blcmx5LCBwbGVhc2UgY2hlY2sgdGhlIGVycm9yIGxvZyBmb3IgbW9yZSBkZXRhaWxzLicKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgfQoKICAgICMgcmVkaXJlY3QgdG8gbWFpbiBzY3JlZW4KICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICBPUCA9PiAiQWN0aW9uPUFkbWluRHluYW1pY0ZpZWxkIiwKICAgICk7Cn0KCjE7Cg==</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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgJG9yaWdpbjogb3RvYm8gLSA2ZWZkYzdiZjJhMzMyNTI3N2NkNzlhNjBmMGYyNDA3ZjhhZDU5ZTg3IC0gS2VybmVsL091dHB1dC9IVE1ML1RlbXBsYXRlcy9TdGFuZGFyZC9BZG1pbkR5bmFtaWNGaWVsZC50dAojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJNYWluIikgJV0KPGRpdiBjbGFzcz0iTWFpbkJveCBBUklBUm9sZU1haW4gTGF5b3V0Rml4ZWRTaWRlYmFyIFNpZGViYXJGaXJzdCI+CiAgICA8aDEgY2xhc3M9IkludmlzaWJsZVRleHQiPlslIFRyYW5zbGF0ZSgiRHluYW1pYyBGaWVsZHMgTWFuYWdlbWVudCIpIHwgaHRtbCAlXSAtIFslIFRyYW5zbGF0ZShEYXRhLkFjdGlvbikgfCBodG1sICVdPC9oMT4KCiAgICBbJSBCcmVhZGNydW1iUGF0aCA9IFsKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgTmFtZSA9PiBUcmFuc2xhdGUoJ0R5bmFtaWMgRmllbGRzIE1hbmFnZW1lbnQnKSwKICAgICAgICAgICAgfSwKICAgICAgICBdCiAgICAlXQoKICAgIFslIElOQ0xVREUgIkJyZWFkY3J1bWIudHQiIFBhdGggPSBCcmVhZGNydW1iUGF0aCAlXQoKICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KCiAgICA8ZGl2IGNsYXNzPSJTaWRlYmFyQ29sdW1uIj4KCiAgICAgICAgPGRpdiBjbGFzcz0iV2lkZ2V0U2ltcGxlIj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iSGVhZGVyIj4KICAgICAgICAgICAgICAgIDxoMj5bJSBUcmFuc2xhdGUoIkZpbHRlciBieSB2YWxpZCBzdGF0ZSIpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8ZGl2IGNsYXNzPSJDb250ZW50Ij4KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9IkluY2x1ZGVJbnZhbGlkIiBuYW1lPSJJbmNsdWRlSW52YWxpZCIgdmFsdWU9IjEiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXSIgWyUgRGF0YS5JbmNsdWRlSW52YWxpZENoZWNrZWQgfCBodG1sICVdLz4KICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkluY2x1ZGVJbnZhbGlkIj5bJSBUcmFuc2xhdGUoIkluY2x1ZGUgaW52YWxpZCBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXTwvbGFiZWw+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgIDwvZGl2PgogICAgICAgIDxkaXYgY2xhc3M9IldpZGdldFNpbXBsZSI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkhlYWRlciI+CiAgICAgICAgICAgICAgICA8aDI+PGxhYmVsIGZvcj0iRmlsdGVyRHluYW1pY0ZpZWxkcyI+WyUgVHJhbnNsYXRlKCJGaWx0ZXIgZm9yIER5bmFtaWMgRmllbGRzIikgfCBodG1sICVdPC9sYWJlbD48L2gyPgogICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IkZpbHRlckR5bmFtaWNGaWVsZHMiIGNsYXNzPSJGaWx0ZXJCb3giIHBsYWNlaG9sZGVyPSJbJSBUcmFuc2xhdGUoIkp1c3Qgc3RhcnQgdHlwaW5nIHRvIGZpbHRlci4uLiIpIHwgaHRtbCAlXSIgbmFtZT0iRmlsdGVyRHluYW1pY0ZpZWxkcyIgdmFsdWU9IiIgdGl0bGU9IlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZvciBkeW5hbWljIGZpZWxkcyIpIHwgaHRtbCAlXSI+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJEeW5hbWljRmllbGRPYmplY3RUeXBlIikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ29udGVudCI+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkR5bmFtaWNGaWVsZE9iamVjdFN0cmcgJV0KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkZpZWxkRXhwbGFuYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxwPlslIFRyYW5zbGF0ZSgiRmlsdGVyIGZpZWxkIGJ5IG9iamVjdCB0eXBlIikgfCBodG1sICVdPC9wPgogICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkT2JqZWN0VHlwZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZE5hbWVzcGFjZSIpICVdCiAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNvbnRlbnQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5EeW5hbWljRmllbGROYW1lc3BhY2VTdHJnICVdCiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJGaWVsZEV4cGxhbmF0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIkZpbHRlciBmaWVsZCBieSBuYW1lc3BhY2UiKSB8IGh0bWwgJV08L3A+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojICRvcmlnaW46IG90b2JvIC0gNzI0MjIwOTkzZjYzOGU3YWZmZTkyZWU2YzVjOTIxN2Q0M2U2MDkxMSAtIEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9MZW5zLnBtCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpMZW5zOwoKIyMgbm9maWx0ZXIoVGlkeUFsbDo6UGx1Z2luOjpPVE9CTzo6UGVybDo6UGFyYW1PYmplY3QpCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIG5hbWVzcGFjZTo6YXV0b2NsZWFuOwp1c2UgdXRmODsKCnVzZSBwYXJlbnQgcXcoS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpCYXNlKTsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkVmFsdWUnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50Cik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpMZW5zIC0gZHJpdmVyIGZvciB0aGUgTGVucyBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCkFjY2VzcyB0byBhbiBhdHRyaWJ1dGUgb2YgYSByZWZlcmVuY2VkIG9iamVjdC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgpUaGlzIGR5bmFtaWMgZmllbGQgZHJpdmVyIG1vZHVsZSBpbXBsZW1lbnRzIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG9mIEw8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uClBsZWFzZSBsb29rIHRoZXJlIGZvciBhIGRldGFpbGVkIHJlZmVyZW5jZSBvZiB0aGUgZnVuY3Rpb25zLgoKPWhlYWQyIG5ldygpCgppdCBpcyB1c3VhbGx5IG5vdCBuZWNlc3NhcnkgdG8gZXhwbGljaXRseSBjcmVhdGUgaW5zdGFuY2VzIG9mIGR5bmFtaWMgZmllbGQgZHJpdmVycy4KSW5zdGFuY2VzIG9mIHRoZSBkcml2ZXJzIGFyZSBjcmVhdGVkIGluIHRoZSBjb25zdHJ1Y3RvciBvZiB0aGUKZHluYW1pYyBmaWVsZCBiYWNrZW5kIG9iamVjdCBDPEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQ+LgoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoJFR5cGUpID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IGJsZXNzIHt9LCAkVHlwZTsKCiAgICAjIFVzZWQgZm9yIGRlY2xhcmluZyBDU1MgY2xhc3NlcwogICAgJFNlbGYtPntGaWVsZENTU0NsYXNzfSA9ICdEeW5hbWljRmllbGRMZW5zJzsKCiAgICAjIHNldCBmaWVsZCBiZWhhdmlvcnMKICAgICMgICBOT1RFIGJlaGF2aW9ycyBJc0FDTFJlZHVjaWJsZSwgSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUsIElzUmVmZXJlbmNlRmllbGQgYW5kCiAgICAjICAgSXNTZXRGaWVsZCBnZXQgb3ZlcnJpZGRlbiB3aXRoIHRoZSBhdHRyaWJ1dGUgZmllbGRzIGJlaGF2aW9ycyBpbiBzdWIgSGFzQmVoYXZpb3IKICAgICRTZWxmLT57QmVoYXZpb3JzfSA9IHsKICAgICAgICAnSXNBQ0xSZWR1Y2libGUnICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICAnSXNOb3RpZmljYXRpb25FdmVudENvbmRpdGlvbicgPT4gMSwKICAgICAgICAnSXNTb3J0YWJsZScgICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnSXNGaWx0cmFibGUnICAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICAnSXNTdGF0c0NvbmRpdGlvbicgICAgICAgICAgICAgPT4gMSwKICAgICAgICAnSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUnICAgPT4gMCwKICAgICAgICAnSXNIaWRkZW5JblRpY2tldEluZm9ybWF0aW9uJyAgPT4gMCwKICAgICAgICAnU2V0c0R5bmFtaWNDb250ZW50JyAgICAgICAgICAgPT4gMSwKICAgICAgICAnSXNSZWZlcmVuY2VGaWVsZCcgICAgICAgICAgICAgPT4gMCwKICAgICAgICAnSXNTZXRGaWVsZCcgICAgICAgICAgICAgICAgICAgPT4gMCwKICAgICAgICAnSXNTZXRDYXBhYmxlJyAgICAgICAgICAgICAgICAgPT4gMSwKICAgIH07CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgVmFsdWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgIyBpbiBzZXQgY2FzZSwgYW4gYXJyYXlyZWYgb2Ygb2JqZWN0IGlkcyBpcyByZXR1cm5lZAogICAgbXkgJFJlZmVyZW5jZWRPYmplY3RJRCA9ICRTZWxmLT5fR2V0UmVmZXJlbmNlZE9iamVjdElEKAogICAgICAgIE9iamVjdElEICAgICAgICAgICAgICAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICAgICAgRWRpdEZpZWxkVmFsdWUgICAgICAgICA9PiAkUGFyYW17VXNlUmVmZXJlbmNlRWRpdEZpZWxkfSwKICAgICAgICBTZXQgICAgICAgICAgICAgICAgICAgID0+ICRQYXJhbXtTZXR9LAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRSZWZlcmVuY2VkT2JqZWN0SUQ7CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgICMgR2V0IHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgdGhlIHJlZmVyZW5jZWQgb2JqZWN0CiAgICBteSAkUmVmZXJlbmNlREZDb25maWcgPSAkU2VsZi0+X0dldFJlZmVyZW5jZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJE9iamVjdElET3JOYW1lID0gJFJlZmVyZW5jZURGQ29uZmlnLT57RmllbGRUeXBlfSA9fiAvXkN1c3RvbWVyLyA/ICdPYmplY3ROYW1lJyA6ICdPYmplY3RJRCc7CgogICAgIyBpbiBzZXQgY2FzZSwgdmFsdWVzIG5lZWQgdG8gYmUgY29sbGVjdGVkIG9uZSBieSBvbmUKICAgIGlmICggJFBhcmFte1NldH0gKSB7CiAgICAgICAgbXkgQFZhbHVlczsKICAgICAgICBmb3IgbXkgJFJlZklEICggJFJlZmVyZW5jZWRPYmplY3RJRC0+QCogKSB7CiAgICAgICAgICAgIGlmICggISRSZWZJRCApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFZhbHVlcywgdW5kZWY7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwdXNoIEBWYWx1ZXMsICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICAgICAgICAgICAgICAgICAkT2JqZWN0SURPck5hbWUgICAgPT4gJFJlZklELAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1cm4gXEBWYWx1ZXM7CiAgICB9CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVHZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICAgICAkT2JqZWN0SURPck5hbWUgICAgPT4gJFJlZmVyZW5jZWRPYmplY3RJRCwKICAgICk7Cn0KCnN1YiBWYWx1ZVNldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgaWYgbm90IGV4cGxpY2l0bHkgZGVhY3RpdmF0ZWQgd2UgYXNzdW1lIGJlaW5nIG9uIGFuIGVkaXQgbWFzawogICAgbXkgJEVkaXRGaWVsZFZhbHVlID0gJFBhcmFte0VkaXRGaWVsZFZhbHVlfSAvLyAxOwogICAgbXkgJExlbnNERkNvbmZpZyAgID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKIyAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAojICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiMgICAgKTsKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKCiAgICAjIEdldCB0aGUgZHluYW1pYyBmaWVsZCBjb25maWcgZm9yIHRoZSByZWZlcmVuY2VkIG9iamVjdAogICAgbXkgJFJlZmVyZW5jZURGQ29uZmlnID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIG15ICRPYmplY3RJRE9yTmFtZSA9ICRSZWZlcmVuY2VERkNvbmZpZy0+e0ZpZWxkVHlwZX0gPX4gL15DdXN0b21lci8gPyAnT2JqZWN0TmFtZScgOiAnT2JqZWN0SUQnOwoKICAgICMgaW4gc2V0IGNhc2UsIHdlIGl0ZXJhdGUgb3ZlciB0aGUgdmFsdWVzIGFuZCBzZXQgdGhlbSBvbmUgYnkgb25lCiAgICBpZiAoICRQYXJhbXtTZXR9ICkgewogICAgICAgIElOREVYOgogICAgICAgIGZvciBteSAkU2V0SW5kZXggKCAwIC4uICQjeyAkUGFyYW17VmFsdWV9IH0gKSB7CgogICAgICAgICAgICAkTGVuc0RGQ29uZmlnLT57U2V0SW5kZXh9ID0gJFNldEluZGV4OwoKICAgICAgICAgICAgIyB3aXRoIHBhcmFtIFNldEluZGV4LCBhIHNpbmdsZSBvYmplY3QgaWQgaXMgcmV0dXJuZWQKICAgICAgICAgICAgIyBhcyB3ZSBhcmUgYWxyZWFkeSBzYXZpbmcgd2UgdHJ1c3QsIHRoYXQgdGhlIHJlZmVyZW5jZSBlZGl0IGZpZWxkIGhhcyBiZWVuIHZhbGlkYXRlZAogICAgICAgICAgICBteSAkUmVmZXJlbmNlZE9iamVjdElEID0gJFNlbGYtPl9HZXRSZWZlcmVuY2VkT2JqZWN0SUQoCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICAgICAgICAgICAgICBFZGl0RmllbGRWYWx1ZSAgICAgICAgID0+ICRFZGl0RmllbGRWYWx1ZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2xlYW4gdXAgb2JqZWN0IGlkIGluIGNhc2UgdGhhdCBPYmplY3ROYW1lIGlzIHBhc3NlZCB0byBub3QgY29sbGlkZQogICAgICAgICAgICBpZiAoICRPYmplY3RJRE9yTmFtZSBlcSAnT2JqZWN0TmFtZScgKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJFBhcmFte09iamVjdElEfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBJTkRFWCB1bmxlc3MgJFJlZmVyZW5jZWRPYmplY3RJRDsKCiMgUm90aGVyIE9TUyAvIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgICAgICAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgICAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdElEICAgICA9PiAkUmVmZXJlbmNlZE9iamVjdElELAogICAgICAgICAgICApOwoKIyBFTyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5WYWx1ZVNldCgKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17VmFsdWV9WyRTZXRJbmRleF0sCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSGFuZGxlZCAgPT4gMCwKICAgICAgICAgICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICA9PiAwLAogICAgICAgICAgICAgICAgU2V0ICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgICAgICAgICAgICAgJE9iamVjdElET3JOYW1lICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgICMgYXMgd2UgYXJlIGFscmVhZHkgc2F2aW5nIHdlIHRydXN0LCB0aGF0IHRoZSByZWZlcmVuY2UgZWRpdCBmaWVsZCBoYXMgYmVlbiB2YWxpZGF0ZWQKICAgIG15ICRSZWZlcmVuY2VkT2JqZWN0SUQgPSAkU2VsZi0+X0dldFJlZmVyZW5jZWRPYmplY3RJRCgKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICAgICAgPT4gJEVkaXRGaWVsZFZhbHVlLAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRSZWZlcmVuY2VkT2JqZWN0SUQ7CgogICAgIyBjbGVhbiB1cCBvYmplY3QgaWQgaW4gY2FzZSB0aGF0IE9iamVjdE5hbWUgaXMgcGFzc2VkIHRvIG5vdCBjb2xsaWRlCiAgICBpZiAoICRPYmplY3RJRE9yTmFtZSBlcSAnT2JqZWN0TmFtZScgKSB7CiAgICAgICAgZGVsZXRlICRQYXJhbXtPYmplY3RJRH07CiAgICB9CgojIFJvdGhlciBPU1MgLyBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgICAgIFJlZmVyZW5jZWRPYmplY3RJRCAgICAgPT4gJFJlZmVyZW5jZWRPYmplY3RJRCwKICAgICk7CgojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVTZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbmZpZ0l0ZW1IYW5kbGVkICA9PiAwLAogICAgICAgIEVkaXRGaWVsZFZhbHVlICAgICA9PiAwLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICAgICAgJE9iamVjdElET3JOYW1lICAgID0+ICRSZWZlcmVuY2VkT2JqZWN0SUQsCiAgICApOwp9CgpzdWIgVmFsdWVWYWxpZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVWYWxpZGF0ZSgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hTUUxHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlNlYXJjaFNRTEdldCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBTZWFyY2hTUUxPcmRlckZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBUT0RPCiAgICByZXR1cm4gJyc7Cn0KCnN1YiBFZGl0RmllbGRSZW5kZXIgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRMZW5zREZDb25maWcsCiAgICApOwoKICAgICMgVGhlIGVkaXQgZmllbGQgc2hvdWxkIGJlIHJlbmRlcmVkIGxpa2UgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QsCiAgICAjIEJ1dCBuYW1lIGFuZCBMYWJlbCBzaG91bGQgYmUgdGhhdCBvZiB0aGUgTGVucyBkeW5hbWljIGZpZWxkLgogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TmFtZX0gID0gJExlbnNERkNvbmZpZy0+e05hbWV9OwogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TGFiZWx9ID0gJExlbnNERkNvbmZpZy0+e0xhYmVsfTsKICAgIG15ICRBdHRyaWJ1dGVGaWVsZEhUTUwgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgUHJvY2Vzc1N1ZmZpeCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtQcm9jZXNzU3VmZml4fSwKICAgICAgICB9LAogICAgKTsKCiAgICByZXR1cm4gJEF0dHJpYnV0ZUZpZWxkSFRNTDsKfQoKc3ViIEVkaXRGaWVsZFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICAjIFRoZSBuYW1lIHVzZWQgaW4gdGhlIEdVSSBpcyB0aGUgbmFtZSBvZiB0aGUgTGVucwogICAgJEF0dHJpYnV0ZURGQ29uZmlnLT57TmFtZX0gPSAkTGVuc0RGQ29uZmlnLT57TmFtZX07CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICApOwp9CgpzdWIgRWRpdEZpZWxkVmFsdWVWYWxpZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZmV0Y2ggYXR0cmlidXRlIGRmIGNvbmZpZwogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICAjIGNhbGwgYXR0cmlidXRlIGRmIGNvbmZpZyB2YWxpZGF0aW9uCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5FZGl0RmllbGRWYWx1ZVZhbGlkYXRlKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgIH0sCiAgICApOwp9CgpzdWIgRGlzcGxheVZhbHVlUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICByZXR1cm4gJycgdW5sZXNzICRBdHRyaWJ1dGVERkNvbmZpZzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgJVBhcmFtLCAgICAjIGUuZy4gVmFsdWUgYW5kIEhUTUxPdXRwdXQKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEF0dHJpYnV0ZURGQ29uZmlnLAogICAgKTsKfQoKc3ViIFNlYXJjaEZpZWxkUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFJlbmRlcigKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSAgPT4gJExlbnNERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCA9PiAkTGVuc0RGQ29uZmlnLT57TGFiZWx9LAogICAgICAgIH0KICAgICk7Cn0KCnN1YiBTZWFyY2hGaWVsZFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICBteSAkUmVzdWx0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFZhbHVlR2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lICA9PiAkTGVuc0RGQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIExhYmVsID0+ICRMZW5zREZDb25maWctPntMYWJlbH0sCiAgICAgICAgfQogICAgKTsKICAgIHJldHVybiAkUmVzdWx0Owp9CgpzdWIgU2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRMZW5zREZDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgbXkgJFJlc3VsdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoRmllbGRQYXJhbWV0ZXJCdWlsZCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSAgPT4gJExlbnNERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICBMYWJlbCA9PiAkTGVuc0RGQ29uZmlnLT57TGFiZWx9LAogICAgICAgIH0KICAgICk7CiAgICByZXR1cm4gJFJlc3VsdDsKfQoKc3ViIFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgewoKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExlbnNERkNvbmZpZyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9OwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkTGVuc0RGQ29uZmlnLAogICAgKTsKCiAgICBteSAkUmVzdWx0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lICA9PiAkTGVuc0RGQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIExhYmVsID0+ICRMZW5zREZDb25maWctPntMYWJlbH0sCiAgICAgICAgfQogICAgKTsKICAgIHJldHVybiAkUmVzdWx0Owp9CgpzdWIgU3RhdHNGaWVsZFBhcmFtZXRlckJ1aWxkIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIHsKICAgICAgICBOYW1lICAgID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TGFiZWx9LAogICAgICAgIEVsZW1lbnQgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntOYW1lfSwKICAgIH07Cn0KCnN1YiBTdGF0c1NlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkVmFsdWUgPSAkUGFyYW17VmFsdWV9OwoKICAgICMgc2V0IG9wZXJhdG9yCiAgICBteSAkT3BlcmF0b3IgPSAnRXF1YWxzJzsKCiAgICAjIHNlYXJjaCBmb3IgYSB3aWxkIGNhcmQgaW4gdGhlIHZhbHVlCiAgICBpZiAoICRWYWx1ZSAmJiAkVmFsdWUgPX4gbXtcKn0gKSB7CgogICAgICAgICMgY2hhbmdlIG9wZXJhdG9yCiAgICAgICAgJE9wZXJhdG9yID0gJ0xpa2UnOwogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgJE9wZXJhdG9yID0+ICRWYWx1ZSwKICAgIH07Cn0KCnN1YiBSZWFkYWJsZVZhbHVlUmVuZGVyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJFZhbHVlID0gJyc7CgogICAgIyBjaGVjayB2YWx1ZQogICAgbXkgQFZhbHVlczsKICAgIGlmICggcmVmICRQYXJhbXtWYWx1ZX0gZXEgJ0FSUkFZJyApIHsKICAgICAgICBAVmFsdWVzID0gQHsgJFBhcmFte1ZhbHVlfSB9OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgQFZhbHVlcyA9ICggJFBhcmFte1ZhbHVlfSApOwogICAgfQoKICAgICMgcHJldmVudCBqb2luaW5nIHVuZGVmaW5lZCB2YWx1ZXMKICAgIEBWYWx1ZXMgPSBtYXAgeyAkXyAvLyAnJyB9IEBWYWx1ZXM7CgogICAgIyBzZXQgbmV3IGxpbmUgc2VwYXJhdG9yCiAgICBteSAkSXRlbVNlcGFyYXRvciA9ICcsICc7CgogICAgIyBPdXRwdXQgdHJhbnNmb3JtYXRpb25zCiAgICAkVmFsdWUgPSBqb2luKCAkSXRlbVNlcGFyYXRvciwgQFZhbHVlcyApOwogICAgbXkgJFRpdGxlID0gJFZhbHVlOwoKICAgICMgY3V0IHN0cmluZ3MgaWYgbmVlZGVkCiAgICBpZiAoICRQYXJhbXtWYWx1ZU1heENoYXJzfSAmJiBsZW5ndGgoJFZhbHVlKSA+ICRQYXJhbXtWYWx1ZU1heENoYXJzfSApIHsKICAgICAgICAkVmFsdWUgPSBzdWJzdHIoICRWYWx1ZSwgMCwgJFBhcmFte1ZhbHVlTWF4Q2hhcnN9ICkgLiAnLi4uJzsKICAgIH0KICAgIGlmICggJFBhcmFte1RpdGxlTWF4Q2hhcnN9ICYmIGxlbmd0aCgkVGl0bGUpID4gJFBhcmFte1RpdGxlTWF4Q2hhcnN9ICkgewogICAgICAgICRUaXRsZSA9IHN1YnN0ciggJFRpdGxlLCAwLCAkUGFyYW17VGl0bGVNYXhDaGFyc30gKSAuICcuLi4nOwogICAgfQoKICAgICMgcmV0dXJuIGEgZGF0YSBzdHJ1Y3R1cmUKICAgIHJldHVybiB7CiAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgIH07Cn0KCnN1YiBUZW1wbGF0ZVZhbHVlVHlwZUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRGaWVsZE5hbWUgPSAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfS0+e05hbWV9OwoKICAgICMgc2V0IHRoZSBmaWVsZCB0eXBlcwogICAgbXkgJEVkaXRWYWx1ZVR5cGUgICA9ICdTQ0FMQVInOwogICAgbXkgJFNlYXJjaFZhbHVlVHlwZSA9ICdTQ0FMQVInOwoKICAgICMgcmV0dXJuIHRoZSBjb3JyZWN0IHN0cnVjdHVyZQogICAgaWYgKCAkUGFyYW17RmllbGRUeXBlfSBlcSAnRWRpdCcgKSB7CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgJEZpZWxkTmFtZSA9PiAkRWRpdFZhbHVlVHlwZSwKICAgICAgICB9OwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RmllbGRUeXBlfSBlcSAnU2VhcmNoJyApIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICAnU2VhcmNoXycgLiAkRmllbGROYW1lID0+ICRTZWFyY2hWYWx1ZVR5cGUsCiAgICAgICAgfTsKICAgIH0KICAgIGVsc2UgewogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICRGaWVsZE5hbWUgICAgICAgICAgICAgPT4gJEVkaXRWYWx1ZVR5cGUsCiAgICAgICAgICAgICdTZWFyY2hfJyAuICRGaWVsZE5hbWUgPT4gJFNlYXJjaFZhbHVlVHlwZSwKICAgICAgICB9OwogICAgfQp9CgpzdWIgUmFuZG9tVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGRvIG5vdGhpbmcgYnV0IHJlcG9ydGluZyBzdWNjZXNzCgogICAgcmV0dXJuIHsKICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgVmFsdWUgICA9PiAxLAogICAgfTsKfQoKc3ViIE9iamVjdE1hdGNoIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LT57TmFtZX07CgogICAgIyByZXR1cm4gZmFsc2UgaWYgZmllbGQgaXMgbm90IGRlZmluZWQKICAgIHJldHVybiAwIHVubGVzcyBkZWZpbmVkICRQYXJhbXtPYmplY3RBdHRyaWJ1dGVzfS0+eyRGaWVsZE5hbWV9OwoKICAgICMgcmV0dXJuIGZhbHNlIGlmIG5vdCBtYXRjaAogICAgcmV0dXJuIDEgaWYgJFBhcmFte09iamVjdEF0dHJpYnV0ZXN9LT57JEZpZWxkTmFtZX0gZXEgJFBhcmFte1ZhbHVlfTsKICAgIHJldHVybiAwOwp9CgpzdWIgSGlzdG9yaWNhbFZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcmV0dXJuIHRoZSBoaXN0b3JpY2FsIHZhbHVlcyBmcm9tIGRhdGFiYXNlCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZFZhbHVlJyktPkhpc3RvcmljYWxWYWx1ZUdldCgKICAgICAgICBGaWVsZElEICAgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPntJRH0sCiAgICAgICAgVmFsdWVUeXBlID0+ICdUZXh0JywKICAgICk7Cn0KCnN1YiBWYWx1ZUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVMb29rdXAoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICApOwp9CgpzdWIgVmFsdWVJc0RpZmZlcmVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVJc0RpZmZlcmVudCgKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRBdHRyaWJ1dGVERkNvbmZpZywKICAgICk7Cn0KCnN1YiBIYXNCZWhhdmlvciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgVE9ETzogVGhpbmsgYWJvdXQgYWRkaXRpb25hbCBiZWhhdmlvcnMgd2UgY2FuIGp1c3QgYWRvcHQgZnJvbSB0aGUgYXR0cmlidXRlIGZpZWxkCiAgICAjIGZvciBjZXJ0YWluIGJlaGF2aW9ycyBpbnN0ZWFkIHVzZSB0aGUgYXR0cmlidXRlIGZpZWxkIGJlaGF2aW9ycwogICAgaWYgKCBhbnkgeyAkUGFyYW17QmVoYXZpb3J9IGVxICRfIH0gcXcvSXNBQ0xSZWR1Y2libGUgSXNDdXN0b21lckludGVyZmFjZUNhcGFibGUgSXNTZXRGaWVsZCBJc1JlZmVyZW5jZUZpZWxkLyApIHsKICAgICAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHJldHVybiBzdWNjZXNzIGlmIHRoZSBkeW5hbWljIGZpZWxkIGhhcyB0aGUgZXhwZWN0ZWQgYmVoYXZpb3IKICAgIHJldHVybiAkU2VsZi0+U1VQRVI6Okhhc0JlaGF2aW9yKCBCZWhhdmlvciA9PiAkUGFyYW17QmVoYXZpb3J9ICk7Cn0KCnN1YiBQb3NzaWJsZVZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+UG9zc2libGVWYWx1ZXNHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICApOwp9CgpzdWIgT2JqZWN0RGVzY3JpcHRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQXR0cmlidXRlREZDb25maWcgPSAkU2VsZi0+X0dldEF0dHJpYnV0ZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICApOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPk9iamVjdERlc2NyaXB0aW9uR2V0KAogICAgICAgICVQYXJhbSwKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICBOYW1lID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e05hbWV9LAogICAgICAgIH0sCiAgICApOwp9CgpzdWIgQnVpbGRTZWxlY3Rpb25EYXRhR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9LAogICAgKTsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpLT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgJVBhcmFtLAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkQXR0cmlidXRlREZDb25maWcsCiAgICApOwp9CgpzdWIgU2VhcmNoT2JqZWN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBdHRyaWJ1dGVERkNvbmZpZyA9ICRTZWxmLT5fR2V0QXR0cmlidXRlREZDb25maWcoCiAgICAgICAgTGVuc0R5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICk7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+U2VhcmNoT2JqZWN0cygKICAgICAgICAlUGFyYW0sCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+IHsKICAgICAgICAgICAgJEF0dHJpYnV0ZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSwKICAgICAgICB9LAogICAgKTsKfQoKc3ViIEdldEZpZWxkU3RhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CiAgICBteSAkREZQYXJhbSAgICAgICAgICAgID0gJFBhcmFte0dldFBhcmFtfXtEeW5hbWljRmllbGR9OwogICAgbXkgJE5lZWRzUmVzZXQ7CgogICAgIyByZXNldCBpZiB0aGUgcmVmZXJlbmNlZCBvYmplY3QgY2hhbmdlcwogICAgaWYgKCAkUGFyYW17Q2hhbmdlZEVsZW1lbnRzfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSB9ICkgewogICAgICAgICROZWVkc1Jlc2V0ID0gMTsKICAgIH0KCiAgICAjIG9yIGlmIHdlIGhhdmUgdGhlIGZpZWxkIHJlYXBwZWFyCiAgICBlbHNpZiAoICEkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0gfHwgISRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gKSB7CiAgICAgICAgJE5lZWRzUmVzZXQgPSAxOwogICAgfQoKICAgIG15ICRBdHRyaWJ1dGVGaWVsZFZhbHVlOwogICAgaWYgKCROZWVkc1Jlc2V0KSB7CgogICAgICAgIG15ICRSZWZlcmVuY2VJRCA9ICRERlBhcmFtLT57ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1JlZmVyZW5jZURGTmFtZX0gfSA/ICRERlBhcmFtLT57ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1JlZmVyZW5jZURGTmFtZX0gfVswXSA6IHVuZGVmOwoKICAgICAgICAjIGdldCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgcmVmZXJlbmNlZCBhdHRyaWJ1dGUgZmllbGQgaWYgYW4gb2JqZWN0IGlzIHJlZmVyZW5jZWQKICAgICAgICBpZiAoJFJlZmVyZW5jZUlEKSB7CgogICAgICAgICAgICBteSAkUmVmZXJlbmNlREZOYW1lID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UmVmZXJlbmNlREZOYW1lfSAuICggJER5bmFtaWNGaWVsZENvbmZpZy0+e1Byb2Nlc3NTdWZmaXh9IC8vICcnICk7CgogICAgICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFte1NldEluZGV4fSApIHsKICAgICAgICAgICAgICAgICRSZWZlcmVuY2VERk5hbWUgLj0gIl8kUGFyYW17U2V0SW5kZXh9IjsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntTZXRJbmRleH0gPSAkUGFyYW17U2V0SW5kZXh9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIHRoZSB2YWx1ZSB3b3VsZCBjaGFuZ2UsIHdlIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhlIHVzZXIgaXMgcmVhbGx5IGFsbG93ZWQKICAgICAgICAgICAgIyB0byBhY2Nlc3MgdGhlIHByb3ZpZGVkIHJlZmVyZW5jZWQgb2JqZWN0IHZpYSB0aGlzIGZvcm0KICAgICAgICAgICAgIyB0aGlzIGlzIHRoZSBjYXNlIGlmIGVpdGhlciB0aGUgcmVmZXJlbmNlZCBvYmplY3Qgd2FzIHNob3duIHZpYSBhIHNlYXJjaCAoMSkKICAgICAgICAgICAgIyBvciBpcyBjdXJyZW50bHkgc3RvcmVkIGZvciB0aGUgZWRpdGVkIHRpY2tldC9jaS8uLi4gKDIpCiAgICAgICAgICAgIG15ICRMYXN0U2VhcmNoUmVzdWx0cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OkZvcm1DYWNoZScpLT5HZXRGb3JtRGF0YSgKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICBLZXkgICAgICAgICAgPT4gJ1Bvc3NpYmxlVmFsdWVzXycgLiAkUmVmZXJlbmNlREZOYW1lLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBpbiBzZXQgY2FzZSwgd2UgZmV0Y2ggdGhlIHRlbXBsYXRlIHZhbHVlcyBhbmQgZWl0aGVyIGNvbmNhdCB0aGVtIHRvIHRoZSBzZWFyY2ggcmVzdWx0cwogICAgICAgICAgICAjICAgb3IsIGlmIG5vIHNlYXJjaCByZXN1bHRzIGFyZSBwcmVzZW50LCB1c2UgdGhlIHRlbXBsYXRlIHZhbHVlcyBlbnRpcmVseQogICAgICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFte1NldEluZGV4fSApIHsKICAgICAgICAgICAgICAgIG15ICRUZW1wbGF0ZU5hbWUgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtSZWZlcmVuY2VERk5hbWV9IC4gJ19UZW1wbGF0ZSc7CiAgICAgICAgICAgICAgICBteSAkVGVtcGxhdGVTZWFyY2hSZXN1bHRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6Rm9ybUNhY2hlJyktPkdldEZvcm1EYXRhKAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0JyksCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgICAgID0+ICdQb3NzaWJsZVZhbHVlc18nIC4gJFRlbXBsYXRlTmFtZSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCByZWYgJExhc3RTZWFyY2hSZXN1bHRzICYmIHJlZiAkVGVtcGxhdGVTZWFyY2hSZXN1bHRzICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggJExhc3RTZWFyY2hSZXN1bHRzLT5AKiwgJFRlbXBsYXRlU2VhcmNoUmVzdWx0cy0+QCo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIHJlZiAkVGVtcGxhdGVTZWFyY2hSZXN1bHRzICkgewogICAgICAgICAgICAgICAgICAgICRMYXN0U2VhcmNoUmVzdWx0cyA9ICRUZW1wbGF0ZVNlYXJjaFJlc3VsdHM7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgYSBzZWFyY2ggaGFzIGFscmVhZHkgYmVlbiBwZXJmb3JtZWQgZm9yIHRoaXMgZm9ybSBpZAogICAgICAgICAgICBteSAkQWxsb3dlZCA9ICggZ3JlcCB7ICRfIGVxICRSZWZlcmVuY2VJRCB9ICRMYXN0U2VhcmNoUmVzdWx0cy0+QCogKSA/IDEgOiAwOwoKICAgICAgICAgICAgIyBhYm9ydCBpZiByZXF1ZXN0ZWQgdmFsdWUgaXMgbm90IGFsbG93ZWQKICAgICAgICAgICAgaWYgKCAhJEFsbG93ZWQgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVmFsdWUgJFJlZmVyZW5jZUlEIGZvciBsZW5zIGZpZWxkICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBpcyBub3QgYWxsb3dlZC4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgJEF0dHJpYnV0ZUZpZWxkVmFsdWUgPSAkU2VsZi0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKCiAgICAgICAgICAgICAgICAjIFRPRE86IEluc3RlYWQgd2UgY291bGQganVzdCBzZW5kICRERlBhcmFtLT57ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1JlZmVyZW5jZURGTmFtZX0gfSBhcyBPYmplY3RJRAogICAgICAgICAgICAgICAgIyBidXQgd2Ugd291bGQgbmVlZCB0byBpbnRlcnByZXQgaXQgbGF0ZXIgKGZyb20gQ29uZmlnSXRlbUlEIHRvIExhc3RWZXJzaW9uSUQsIGUuZy4pCiAgICAgICAgICAgICAgICAjIFRPRE86IFZhbGlkYXRlIHRoZSBSZWZlcmVuY2UgT2JqZWN0SUQgaGVyZSwgb3IgZWFybGllciwgdG8gcHJldmVudCBkYXRhIGxlYWtzIQogICAgICAgICAgICAgICAgT2JqZWN0SUQgICAgICAgICAgICAgID0+IDEsICAgICMgd2lsbCBub3QgYmUgdXNlZDsKICAgICAgICAgICAgICAgIFVzZVJlZmVyZW5jZUVkaXRGaWVsZCA9PiAxLAogICAgICAgICAgICApIC8vICcnOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEF0dHJpYnV0ZUZpZWxkVmFsdWUgPSAnJzsKICAgICAgICB9CiAgICB9CgogICAgbXkgJEF0dHJpYnV0ZURGQ29uZmlnID0gJFNlbGYtPl9HZXRBdHRyaWJ1dGVERkNvbmZpZygKICAgICAgICBMZW5zRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICApOwoKICAgIG15ICVGaWVsZFN0YXRlcyA9ICRQYXJhbXtGaWVsZFJlc3RyaWN0aW9uc09iamVjdH0tPkdldEZpZWxkU3RhdGVzKAogICAgICAgICVQYXJhbSwKICAgICAgICBOZWVkc1Jlc2V0ICAgICAgID0+ICROZWVkc1Jlc2V0LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0byBieXBhc3MgY2hlY2tzIGluIHJlZmVyZW5jZSBkcml2ZXIKICAgICAgICBDYWNoZWRWaXNpYmlsaXR5ID0+ICROZWVkc1Jlc2V0ID8gdW5kZWYgOiAkUGFyYW17Q2FjaGVkVmlzaWJpbGl0eX0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyAgICA9PiB7CiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICAgICAgUHJvY2Vzc1N1ZmZpeCA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UHJvY2Vzc1N1ZmZpeH0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIEdldFBhcmFtID0+IHsKICAgICAgICAgICAgJFBhcmFte0dldFBhcmFtfS0+JSosCiAgICAgICAgICAgIER5bmFtaWNGaWVsZCA9PiB7CiAgICAgICAgICAgICAgICAkUGFyYW17R2V0UGFyYW19e0R5bmFtaWNGaWVsZH0tPiUqLAogICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+ICRBdHRyaWJ1dGVGaWVsZFZhbHVlIC8vICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgfSwKICAgICk7CiAgICBpZiAoIGRlZmluZWQgJEZpZWxkU3RhdGVze05ld1ZhbHVlc317ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ICkgewogICAgICAgICRGaWVsZFN0YXRlc3tOZXdWYWx1ZX0gPSAkRmllbGRTdGF0ZXN7TmV3VmFsdWVzfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICB9CiAgICBlbHNpZiAoIGRlZmluZWQgJEF0dHJpYnV0ZUZpZWxkVmFsdWUgKSB7CiAgICAgICAgJEZpZWxkU3RhdGVze05ld1ZhbHVlfSA9ICRBdHRyaWJ1dGVGaWVsZFZhbHVlOwogICAgfQoKICAgICMgcHJldmVudCBhdXRvdml2aWZpY2F0aW9uCiAgICBpZiAoIGV4aXN0cyAkRmllbGRTdGF0ZXN7RmllbGRzfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gJiYgZXhpc3RzICRGaWVsZFN0YXRlc3tGaWVsZHN9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfXtQb3NzaWJsZVZhbHVlc30gKSB7CiAgICAgICAgJEZpZWxkU3RhdGVze1Bvc3NpYmxlVmFsdWVzfS0+JSogPSAkRmllbGRTdGF0ZXN7RmllbGRzfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH17UG9zc2libGVWYWx1ZXN9LT4lKjsKICAgIH0KCiAgICAjIG5lY2Vzc2FyeSBjbGVhbi11cCB0byBhdm9pZCBpbnRlcmZlcmVuY2Ugd2l0aCBHZXRGaWVsZFN0YXRlIG1lY2hhbmlzbSBpbiBGaWVsZFJlc3RyaWN0aW9ucyBtb2R1bGVzCiAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJEZpZWxkU3RhdGVze1NldHN9ICkgKSB7CiAgICAgICAgZGVsZXRlICRGaWVsZFN0YXRlc3tTZXRzfTsKICAgIH0KICAgIGVsc2lmICgkTmVlZHNSZXNldCkgewoKICAgICAgICAjIGZpbGwgdmFsdWVzIHdpdGggZGF0YSB3aXRoIHNldCB2YWx1ZSBkYXRhCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJEF0dHJpYnV0ZUZpZWxkVmFsdWUpICkgewoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgICAgICAjIGdldCBzZXQgaW5uZXIgZHluYW1pYyBmaWVsZHMgZnJvbSBhdHRyaWJ1dGUgZmllbGQKICAgICAgICAgICAgbXkgJElubmVyRHluYW1pY0ZpZWxkcyA9ICRTZWxmLT5fR2V0SW5jbHVkZWREeW5hbWljRmllbGRzKAogICAgICAgICAgICAgICAgSW5wdXRGaWVsZERlZmluaXRpb24gPT4gJEF0dHJpYnV0ZURGQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCAwIC4uICQjeyRBdHRyaWJ1dGVGaWVsZFZhbHVlfSApIHsKCiAgICAgICAgICAgICAgICBteSAkVmFsdWVJdGVtID0gJEF0dHJpYnV0ZUZpZWxkVmFsdWUtPlskSW5kZXhdOwogICAgICAgICAgICAgICAgbXkgQERGTmFtZXMgICA9IGtleXMgJFZhbHVlSXRlbS0+JSo7CgogICAgICAgICAgICAgICAgZm9yIG15ICRERk5hbWUgKEBERk5hbWVzKSB7CgogICAgICAgICAgICAgICAgICAgIG15ICRTdWZmaXhlZERGTmFtZSA9ICRERk5hbWUgLiAoICREeW5hbWljRmllbGRDb25maWctPntQcm9jZXNzU3VmZml4fSB8fCAnJyApIC4gIl8kSW5kZXgiOwoKICAgICAgICAgICAgICAgICAgICAjIGZpbGwgdXAgZHluYW1pYyBmaWVsZCBjb25maWdzIG9mIHNldC1pbm5lciBmaWVsZHMKICAgICAgICAgICAgICAgICAgICBpZiAoICFleGlzdHMgJEZpZWxkU3RhdGVze1NldHN9eyRERk5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRTdGF0ZXN7U2V0c317JERGTmFtZX17RHluYW1pY0ZpZWxkQ29uZmlnfSA9ICRJbm5lckR5bmFtaWNGaWVsZHMtPnskREZOYW1lfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgc2V0IEZpZWxkU3RhdGVzIGhhc2gKICAgICAgICAgICAgICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+SGFzQmVoYXZpb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkSW5uZXJEeW5hbWljRmllbGRzLT57JERGTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNBQ0xSZWR1Y2libGUnLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJElzQUNMUmVkdWNpYmxlICkgewogICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRTdGF0ZXN7U2V0c317JERGTmFtZX17RmllbGRTdGF0ZXN9eyRTdWZmaXhlZERGTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RBQ0xSZWR1Y2libGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgZmlsbCB1cCB2YWx1ZXMgaGFzaAogICAgICAgICAgICAgICAgICAgIGlmICggIWV4aXN0cyAkRmllbGRTdGF0ZXN7U2V0c317JERGTmFtZX17VmFsdWVzfXskU3VmZml4ZWRERk5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkRmllbGRTdGF0ZXN7U2V0c317JERGTmFtZX17VmFsdWVzfXskU3VmZml4ZWRERk5hbWV9ID0gJFZhbHVlSXRlbS0+eyRERk5hbWV9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJFNldFZhbHVlQ291bnQgICAgID0gSXNBcnJheVJlZldpdGhEYXRhKCAkRmllbGRTdGF0ZXN7TmV3VmFsdWV9ICkgPyBzY2FsYXIgJEZpZWxkU3RhdGVze05ld1ZhbHVlfS0+QCogOiAxOwogICAgICAgIG15ICRDb21wbGV0ZUZpZWxkTmFtZSA9ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICggJER5bmFtaWNGaWVsZENvbmZpZy0+e1Byb2Nlc3NTdWZmaXh9IHx8ICcnICk7CgogICAgICAgICMgYWRkIGNvdW50IG9mIFNldCB2YWx1ZXMgZm9yIGFkZGluZyB0aGUgY29ycmVjdCBudW1iZXIgb2YgZmllbGRzIGluIHRoZSBmcm9udGVuZAogICAgICAgICRGaWVsZFN0YXRlc3tTZXRzfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSB7CiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiB7CiAgICAgICAgICAgICAgICAkQXR0cmlidXRlREZDb25maWctPiUqLAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIEZpZWxkU3RhdGVzID0+IHsKICAgICAgICAgICAgICAgICRDb21wbGV0ZUZpZWxkTmFtZSA9PiB7CiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVmFsdWVzID0+IHsKICAgICAgICAgICAgICAgICRDb21wbGV0ZUZpZWxkTmFtZSA9PiAkU2V0VmFsdWVDb3VudCwKICAgICAgICAgICAgfSwKICAgICAgICB9OwogICAgfQoKICAgIHJldHVybiAlRmllbGRTdGF0ZXM7Cn0KCj1oZWFkMSBpbnRlcm5hbCBtZXRob2RzCgpNZXRob2RzIHRoYXQgYXJlIHVzZWQgb25seSBpbnRlcm5hbGx5LgoKPWhlYWQyIF9HZXRSZWZlcmVuY2VERkNvbmZpZygpCgpBIGR5bmFtaWMgZmllbGQgY29uZmlndXJhdGlvbiB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZGVsZWdhdGUuCgo9Y3V0CgojVE9ETzogaW4gQ0kgZGVmaW5pdGlvbnMgc3RvcmUgdGhlIGRlZmluaXRpb24gaWQgb3IgZGYgY29uZmlncyBpbiB0aGUgbGVucyBjb25maWcgYW5kIHVzZSB0aGlzIG9uZSBpbnN0ZWFkIG9mIHRoZSBjdXJyZW50IGRmIGNvbmZpZ3MKc3ViIF9HZXRSZWZlcmVuY2VERkNvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiMgICAgJFNlbGYtPntSZWZlcmVuY2VERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9IC8vPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKIyAgICAgICAgSUQgPT4gJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317UmVmZXJlbmNlREZ9LAojICAgICk7CiAgICAjIGNvbmZpZyBpdGVtcyBhbmQgY2kgdmVyc2lvbnMgc3RvcmUgdGhlaXIgcmVzcGVjdGl2ZSByZWZlcmVuY2UgY29uZmlncyBhcyBwYXJ0IG9mIHRoZSBsZW5zIGNvbmZpZwogICAgIyBlbHNlIHVzZSBzdGFuZGFyZCBkeW5hbWljIGZpZWxkIGdldAogICAgJFNlbGYtPntSZWZlcmVuY2VERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9IC8vPSAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317UmVmZXJlbmNlREZDb25maWd9CiAgICAgICAgLy8gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgIElEID0+ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e1JlZmVyZW5jZURGfSwKICAgICAgICApOwojIEVPIElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudAoKICAgIHJldHVybiAkU2VsZi0+e1JlZmVyZW5jZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH07Cn0KCj1oZWFkMiBfR2V0QXR0cmlidXRlREZDb25maWcoKQoKQSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyYXRpb24gdGhhdCBjYW4gYmUgdXNlZCBhcyBhIGRlbGVnYXRlLgoKPWN1dAoKc3ViIF9HZXRBdHRyaWJ1dGVERkNvbmZpZyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggIWRlZmluZWQgJFNlbGYtPntBdHRyaWJ1dGVERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9ICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgSUQgPT4gJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317QXR0cmlidXRlREZ9LAogICAgICAgICk7CiAgICAgICAgJFNlbGYtPntBdHRyaWJ1dGVERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9ID0gJER5bmFtaWNGaWVsZENvbmZpZyA/IHsgJER5bmFtaWNGaWVsZENvbmZpZy0+JSogfSA6IHt9OwogICAgfQoKIyBSb3RoZXIgT1NTIC8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50CiAgICAjcmV0dXJuICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfTsKICAgIGlmICggJFBhcmFte1JlZmVyZW5jZWRPYmplY3RJRH0gJiYgJFNlbGYtPntSZWZlcmVuY2VERkNhY2hlfXsgJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9e0lEfSB9ICkgewogICAgICAgIG15ICRSZWZlcmVuY2VERkNvbmZpZyA9ICRTZWxmLT57UmVmZXJlbmNlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfTsKCiAgICAgICAgaWYgKCAkUmVmZXJlbmNlREZDb25maWctPntGaWVsZFR5cGV9IGVxICdDb25maWdJdGVtJyApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkUGFyYW17UmVmZXJlbmNlZE9iamVjdElEfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICRTZWxmLT57QXR0cmlidXRlREZDYWNoZX17ICRQYXJhbXtMZW5zRHluYW1pY0ZpZWxkQ29uZmlnfXtJRH0gfS0+JSosCiAgICAgICAgICAgICAgICAgICAgQ0lDbGFzcyA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICdQcmlvcml0eScgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAnTWVzc2FnZScgID0+ICJObyBDb25maWdJdGVtIHdpdGggSUQgJyRQYXJhbXtSZWZlcmVuY2VkT2JqZWN0SUR9Jy4iLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyAkU2VsZi0+e0F0dHJpYnV0ZURGQ2FjaGV9eyAkUGFyYW17TGVuc0R5bmFtaWNGaWVsZENvbmZpZ317SUR9IH0tPiUqIH07CiMgRU8gSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50Cn0KCj1oZWFkMiBfR2V0UmVmZXJlbmNlZE9iamVjdElEKCkKClRoZSBjb25maWcgb2YgdGhlIGxlbnMgY29udGFpbnMgdGhlIElEIG9mIGFub3RoZXIgZHluYW1pYyBmaWVsZC4gVGhhdCBmaWVsZCBpcyBhIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIHRoYXQKcmVmZXJlbmNlcyBhbm90aGVyIG9iamVjdC4gVGhlIElEIG9mIHRoZSByZWZlcmVuY2VkIG9iamVjdCBpcyB0aGUgdmFsdWUgb2YgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkLgoKPWN1dAoKc3ViIF9HZXRSZWZlcmVuY2VkT2JqZWN0SUQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGV4dHJhY3QgcGFyYW1zCiAgICBteSAkTGVuc0RGQ29uZmlnID0gJFBhcmFte0xlbnNEeW5hbWljRmllbGRDb25maWd9OwoKICAgICMgR2V0IHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZyBmb3IgdGhlIHJlZmVyZW5jZWQgb2JqZWN0CiAgICBteSAkUmVmZXJlbmNlREZDb25maWcgPSAkU2VsZi0+X0dldFJlZmVyZW5jZURGQ29uZmlnKAogICAgICAgIExlbnNEeW5hbWljRmllbGRDb25maWcgPT4gJExlbnNERkNvbmZpZywKICAgICk7CgogICAgaWYgKCAkUGFyYW17RWRpdEZpZWxkVmFsdWV9ICkgewoKICAgICAgICAjIHN1ZmZpeCBuYW1lIHdpdGggcHJvY2VzcyBpZCBhbmQgc2V0IGluZGV4LCBpZiBwcmVzZW50CiAgICAgICAgbXkgJFJlZmVyZW5jZURGTmFtZSA9ICRSZWZlcmVuY2VERkNvbmZpZy0+e05hbWV9OwogICAgICAgIGlmICggJExlbnNERkNvbmZpZy0+e1Byb2Nlc3NTdWZmaXh9ICkgewogICAgICAgICAgICAkUmVmZXJlbmNlREZOYW1lIC49ICRMZW5zREZDb25maWctPntQcm9jZXNzU3VmZml4fTsKICAgICAgICB9CgogICAgICAgIGlmICggZGVmaW5lZCAkTGVuc0RGQ29uZmlnLT57U2V0SW5kZXh9ICkgewogICAgICAgICAgICAkUmVmZXJlbmNlREZOYW1lIC49ICJfJExlbnNERkNvbmZpZy0+e1NldEluZGV4fSI7CiAgICAgICAgfQoKICAgICAgICBteSAkT2JqZWN0SUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkVkaXRGaWVsZFZhbHVlR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gewogICAgICAgICAgICAgICAgJFJlZmVyZW5jZURGQ29uZmlnLT4lKiwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFJlZmVyZW5jZURGTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLAogICAgICAgICAgICBUcmFuc2Zvcm1EYXRlcyA9PiAwLAogICAgICAgICAgICBGb3JMZW5zICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiBpZiAhJE9iamVjdElEOwogICAgICAgIHJldHVybiAkT2JqZWN0SUQtPlswXTsKICAgIH0KCiAgICBteSAkT2JqZWN0SUQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPlZhbHVlR2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUmVmZXJlbmNlREZDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRQYXJhbXtPYmplY3RJRH0sCiAgICAgICAgRm9yTGVucyAgICAgICAgICAgID0+IDEsCiAgICAgICAgU2V0ICAgICAgICAgICAgICAgID0+ICRQYXJhbXtTZXR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISRPYmplY3RJRDsKCiAgICAjIGluIHNldCBjYXNlLCB3ZSBuZWVkIHRvIG1hcCB0aGUgcmV0dXJuZWQgYXJyYXkgb2YgYXJyYXlzIGludG8gYW4gYXJyYXkgb2YgZmlyc3QgdmFsdWVzIGFzIG11bHRpdmFsdWUgbGVuc2VzIGFyZSBub3Qgc3VwcG9ydGVkIGF0IHRoZSBtb21lbnQKICAgIGlmICggJFBhcmFte1NldH0gKSB7CiAgICAgICAgbXkgQE9iamVjdElEcyA9IG1hcCB7ICRfLT5bMF0gfSAkT2JqZWN0SUQtPkAqOwogICAgICAgIHJldHVybiBcQE9iamVjdElEczsKICAgIH0KCiAgICByZXR1cm4gJE9iamVjdElELT5bMF07Cn0KCj1oZWFkMiBfR2V0SW5jbHVkZWREeW5hbWljRmllbGRzKCRJbmNsdWRlLCAkRHluYW1pY0ZpZWxkT2JqZWN0KQoKSGVscGVyIEZ1bmN0aW9uIGZvciBnZXR0aW5nIHRoZSBEeW5hbWljIEZpZWxkcyBmcm9tIGFuIEluY2x1ZGUsIGkuZS4KJER5bmFtaWNGaWVsZHMgPSAkR2V0SW5jbHVkZWREeW5hbWljRmllbGRzLT4oJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtJbmNsdWRlfSk7ClRoaXMgc3Vicm91dGluZSB0YWtlcyB0aHJlZSBhcmd1bWVudHM6CiRJbmNsdWRlOiBhIGxpc3Qgb2YgaGFzaCByZWZlcmVuY2VzIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW1zIHRvIGluY2x1ZGUKJER5bmFtaWNGaWVsZE9iamVjdDogYW4gb2JqZWN0IHVzZWQgdG8gcmV0cmlldmUgZHluYW1pYyBmaWVsZCBpbmZvcm1hdGlvbgphbmQgcmV0dXJucyBlaXRoZXIgdGhlIER5bmFtaWNGaWVsZHMgb3IgdW5kZWYgaW4gY2FzZSBvZiBhbiBlcnJvci4KCj1jdXQKCnN1YiBfR2V0SW5jbHVkZWREeW5hbWljRmllbGRzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICVEeW5hbWljRmllbGQ7CgogICAgIyBUaGlzIHN1YnJvdXRpbmUgdGFrZXMgYSBERkVudHJ5IGFuZCB0aGUgRHluYW1pY0ZpZWxkT2JqZWN0IGFzIGFyZ3VtZW50cwogICAgIyBJdCByZXRyaWV2ZXMgdGhlIGR5bmFtaWMgZmllbGQgZGVmaW5pdGlvbiBmb3IgdGhlIGdpdmVuIERGRW50cnkKICAgICMgSWYgdGhlIGRlZmluaXRpb24gaXMgbm90IGF2YWlsYWJsZSwgaXQgcmV0cmlldmVzIGl0IGZyb20gdGhlIER5bmFtaWNGaWVsZE9iamVjdAogICAgIyBSZXR1cm5zIHRoZSBkeW5hbWljIGZpZWxkIGRlZmluaXRpb24KICAgIG15ICRHZXREeW5hbWljRmllbGQgPSBzdWIgewoKICAgICAgICBteSAoJERGRW50cnkpID0gQF87CgogICAgICAgIG15ICREeW5hbWljRmllbGQgPSAkREZFbnRyeS0+e0RlZmluaXRpb259IC8vICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkREZFbnRyeS0+e0RGfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJER5bmFtaWNGaWVsZDsKICAgIH07CgogICAgSVRFTToKICAgIGZvciBteSAkSW5jbHVkZUl0ZW0gKCBAeyAkUGFyYW17SW5wdXRGaWVsZERlZmluaXRpb259IH0gKSB7CgogICAgICAgIGlmICggJEluY2x1ZGVJdGVtLT57R3JpZH0gKSB7CgogICAgICAgICAgICBmb3IgbXkgJFJvdyAoIEB7ICRJbmNsdWRlSXRlbS0+e0dyaWR9e1Jvd3N9IH0gKSB7CgogICAgICAgICAgICAgICAgREZFTlRSWToKICAgICAgICAgICAgICAgIGZvciBteSAkREZFbnRyeSAoICRSb3ctPkAqICkgewoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJEdldER5bmFtaWNGaWVsZC0+KCRERkVudHJ5KTsKICAgICAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGQpICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRERkVudHJ5LT57TGFiZWx9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e0xhYmVsfSA9ICRERkVudHJ5LT57TGFiZWx9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGQtPntNYW5kYXRvcnl9ICAgICAgPSAkREZFbnRyeS0+e01hbmRhdG9yeX07CiAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGQtPntSZWFkb25seX0gICAgICAgPSAkREZFbnRyeS0+e1JlYWRvbmx5fTsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZHsgJERGRW50cnktPntERn0gfSA9ICREeW5hbWljRmllbGQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiRHluYW1pY0ZpZWxkQ29uZmlnIG1pc3NpbmcgZm9yIGZpZWxkOiAkREZFbnRyeS0+e0RGfSwgb3IgaXMgbm90IGEgVGlja2V0IER5bmFtaWMgRmllbGQhIiwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgREZFTlRSWTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkSW5jbHVkZUl0ZW0tPntERn0gKSB7CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJEdldER5bmFtaWNGaWVsZC0+KCRJbmNsdWRlSXRlbSk7CiAgICAgICAgICAgIGlmICgkRHluYW1pY0ZpZWxkKSB7CiAgICAgICAgICAgICAgICBpZiAoICRJbmNsdWRlSXRlbS0+e0xhYmVsfSApIHsKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ID0gJEluY2x1ZGVJdGVtLT57TGFiZWx9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e01hbmRhdG9yeX0gICAgICAgICAgPSAkSW5jbHVkZUl0ZW0tPntNYW5kYXRvcnl9OwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e1JlYWRvbmx5fSAgICAgICAgICAgPSAkSW5jbHVkZUl0ZW0tPntSZWFkb25seX07CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkeyAkSW5jbHVkZUl0ZW0tPntERn0gfSA9ICREeW5hbWljRmllbGQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljRmllbGRDb25maWcgbWlzc2luZyBmb3IgZmllbGQ6ICRJbmNsdWRlSXRlbS0+e0RGfSwgb3IgaXMgbm90IGEgVGlja2V0IER5bmFtaWMgRmllbGQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBuZXh0IElURU07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG5leHQgSVRFTTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIFwlRHluYW1pY0ZpZWxkOwp9CgoxOwo=</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+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWRtaW5JVFNNQ29uZmlnSXRlbSMjI0VkaXRvclJvd3MiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFkbWluOjpWaWV3OjpJVFNNQ29uZmlnSXRlbURlZmluaXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjMwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtRWRpdCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJ3PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0IyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUFkZCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50IC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtUHJpbnQjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50IyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZSMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbURlbGV0ZTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJ3PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtWm9vbSMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJvPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1Blcm1pc3Npb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpQZXJtaXNzaW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cm88L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0V4dGVuZGVkU2VhcmNoQ29uZGl0aW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkFsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomYW1wOyZhbXA7KmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjU2VhcmNoUGFnZVNob3duIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+NDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NvcnRCeTo6RGVmYXVsdCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJBZ2UiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJBZ2UiIFRyYW5zbGF0YWJsZT0iMSI+QWdlPC9JdGVtPgogICAgICAgICAgICAgICAgPCEtLSBUT0RPIHZlcmlmeSBhdHRyaWJ1dGUgbmFtZXMgLS0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ik51bWJlciIgVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRGVwbFN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkRlcGxveW1lbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkluY2lTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5JbmNpZGVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDwhLS0gVE9ETyB0ZXN0IGR5bmFtaWMgZmllbGRzIC0tPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI09yZGVyOjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkRvd24iPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJEb3duIiBUcmFuc2xhdGFibGU9IjEiPkRvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IlVwIiBUcmFuc2xhdGFibGU9IjEiPlVwPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaENTVkRhdGEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGF0YSB1c2VkIHRvIGV4cG9ydCB0aGUgc2VhcmNoIHJlc3VsdCBpbiBDU1YgZm9ybWF0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVHJhbnNsYXRhYmxlPSIxIj5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiPlZlcnNpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBUcmFuc2xhdGFibGU9IjEiPkNyZWF0ZVRpbWU8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaENTVkR5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIEZpZWxkcyB1c2VkIHRvIGV4cG9ydCB0aGUgc2VhcmNoIHJlc3VsdCBpbiBDU1YgZm9ybWF0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOdW1iZXIiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjTmFtZSIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNEZXBsb3ltZW50U3RhdGVJRHMiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0luY2lkZW50U3RhdGVJRHMiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0N1c3RvbWVySUQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjQ3VzdG9tZXJVc2VyTG9naW4iIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTbG90IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSVRTTUNvbmZpZ0l0ZW1DaGFuZ2VUaW1lUG9pbnQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSVRTTUNvbmZpZ0l0ZW1DaGFuZ2VUaW1lU2xvdCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNTZWFyY2hQcmV2aW91c1ZlcnNpb25zIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IjAiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPk5vPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPlllczwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0R5bmFtaWNGaWVsZCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlICdYJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiAnYSB0ZXh0JywgRHJvcGRvd246ICcxJywgRGF0ZS9UaW1lOiAnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTsnIGFuZCBvciAnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9Nyc7LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIC0tPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJvPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZXBsb3ltZW50U3RhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjSW5jaWRlbnRTdGF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRXh0ZW5kZWRTZWFyY2hDb25kaXRpb24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiZhbXA7JmFtcDsqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTZWFyY2hQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj40MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjU29ydEJ5OjpEZWZhdWx0IiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkFnZSI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkFnZSIgVHJhbnNsYXRhYmxlPSIxIj5BZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ik51bWJlciIgVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRGVwbFN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkRlcGxveW1lbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkluY2lTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5JbmNpZGVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNPcmRlcjo6RGVmYXVsdCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRG93biIgVHJhbnNsYXRhYmxlPSIxIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJVcCIgVHJhbnNsYXRhYmxlPSIxIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI051bWJlciIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOYW1lIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0RlcGxveW1lbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjSW5jaWRlbnRTdGF0ZUlEcyIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgJ1gnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6ICdhIHRleHQnLCBEcm9wZG93bjogJzEnLCBEYXRlL1RpbWU6ICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5OycgYW5kIG9yICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03JzsuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ybzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXMjIyNQZXJtaXNzaW9ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpHZW5lcmFsQ2F0YWxvZzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5QZXJtaXNzaW9uIEdyb3VwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+MTA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5QZXJtaXNzaW9uPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyI+SVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPlBlcm1pc3Npb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1hbmRhdG9yeSIgVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6U2VhcmNoIyMjQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU6OlNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJeKD86QWdlbnR8QWRtaW4pSVRTTUNvbmZpZ0l0ZW0iPkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtU2VhcmNoO1N1YmFjdGlvbj1BSkFYPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkZyb250ZW5kOjpTZWFyY2g6OkphdmFTY3JpcHQjIyNDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkphdmFTY3JpcHQgZnVuY3Rpb24gZm9yIHRoZSBzZWFyY2ggZnJvbnRlbmQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU6OlNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJeKD86QWdlbnR8QWRtaW4pSVRTTUNvbmZpZ0l0ZW0iPklUU00uQWdlbnQuQ29uZmlnSXRlbS5TZWFyY2guT3BlblNlYXJjaERpYWxvZygnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcpPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6QWdlbnQ6OkNvbW1vbkpTIyMjMTAwLUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkxpc3Qgb2YgSlMgZmlsZXMgdG8gYWx3YXlzIGJlIGxvYWRlZCBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNLkFnZW50LkNvbmZpZ0l0ZW0uU2VhcmNoLmpzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5VSS5Db25maWdJdGVtQWN0aW9uUm93LmpzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SVRTTS5BZ2VudC5Db25maWdJdGVtLkRhc2hib2FyZC5qczwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHJlZmVyZW5jZXNHcm91cHMjIyNDb25maWdJdGVtT3ZlcnZpZXdTbWFsbFBhZ2VTaG93biIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5QYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OlByZWZlcmVuY2VzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OlByZWZlcmVuY2VzOjpHZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmVmZXJlbmNlR3JvdXAiPk1pc2NlbGxhbmVvdXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxhYmVsIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzYyIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJLZXkiIFRyYW5zbGF0YWJsZT0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEYXRhIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIxMCI+MTA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMTUiPjE1PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjIwIj4yMDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSIyNSI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iMzAiPjMwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IjM1Ij4zNTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRhdGFTZWxlY3RlZCI+MjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlByZWZLZXkiPlVzZXJDb25maWdJdGVtT3ZlcnZpZXdTbWFsbFBhZ2VTaG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpbyI+ODAwMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aXZlIj4wPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlByZWZlcmVuY2VzR3JvdXBzIyMjQ29uZmlnSXRlbU92ZXJ2aWV3RmlsdGVyU2V0dGluZ3MiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgJ0FjdGl2ZScgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlcidzIGJlaGFsZi4gVXNlICdQcmVmZXJlbmNlR3JvdXAnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpQcmVmZXJlbmNlczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpQcmVmZXJlbmNlczo6Q29sdW1uRmlsdGVyczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZmVyZW5jZUdyb3VwIj5NaXNjZWxsYW5lb3VzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMYWJlbCIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkIGZpbHRlcnMuPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjIiBUcmFuc2xhdGFibGU9IjEiPkNvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3LjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iS2V5IiBUcmFuc2xhdGFibGU9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJlZktleSI+VXNlckZpbHRlckNvbHVtbnNFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj44MTAwPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3RpdmUiPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldyMjI1NtYWxsIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6T3ZlcnZpZXdTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWVTaG9ydCI+UzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFnZVNob3duIj4yNTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVyT3ZlcnZpZXcjIyNTbWFsbCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OklUU01Db25maWdJdGVtT3ZlcnZpZXc8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6SVRTTUNvbmZpZ0l0ZW06OkN1c3RvbWVyT3ZlcnZpZXdTbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+U21hbGw8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWVTaG9ydCI+UzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGFnZVNob3duIj4yNTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNEZWZhdWx0Q29sdW1ucyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gQXZhaWxhYmxlPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBieSBkZWZhdWx0PC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VyRGVwbFN0YXRlIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckluY2lTdGF0ZSIgU2VsZWN0ZWRJRD0iMiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsU3RhdGUiIFNlbGVjdGVkSUQ9IjAiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSW5jaVN0YXRlIiBTZWxlY3RlZElEPSIwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhc3RDaGFuZ2VkIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1ckRlcGxTdGF0ZVR5cGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDcmVhdGVkIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06Okhvb2siIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+Q29uZmlnSXRlbSM8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NlYXJjaExpbWl0IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTAwMDA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjEwMDAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNEZWZhdWx0Q2F0ZWdvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0+QWxsPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNDbGFzc0NvbHVtbnNEaXNhYmxlZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNDbGFzc0NvbHVtbnNBdmFpbGFibGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI0NsYXNzQ29sdW1uc0RlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbSMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6Q3VzdG9tZXI6OlZpZXc6OklUU01Db25maWdJdGVtT3ZlcnZpZXc8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPjAgLSBEaXNhYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjEiIFRyYW5zbGF0YWJsZT0iMSI+MSAtIEVuYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIyIiBUcmFuc2xhdGFibGU9IjEiPjIgLSBFbmFibGVkIGFuZCByZXF1aXJlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIyMjRHluYW1pY0ZpZWxkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1PdmVydmlldzwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYW5kIHJlcXVpcmVkPC9JdGVtPgogICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjEwMDAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0jIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iXlxkKyQiPjEwMDAwPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJVbmlxdWVDSU5hbWU6OkVuYWJsZVVuaXF1ZW5lc3NDaGVjayIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSIwIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIwIiBUcmFuc2xhdGFibGU9IjEiPkRpc2FibGVkPC9JdGVtPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlVuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoJ2NsYXNzJykgb3IgZ2xvYmFsbHkgKCdnbG9iYWwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iZ2xvYmFsIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iZ2xvYmFsIiBUcmFuc2xhdGFibGU9IjEiPmdsb2JhbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iY2xhc3MiIFRyYW5zbGF0YWJsZT0iMSI+Y2xhc3M8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZSIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5FbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpCdWxrQWN0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkVuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpCdWxrQWN0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT51c2VyczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPml0c20tY29uZmlnaXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5CdWxrIEFjdGlvbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNNREI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNBZ2VudElUU01Db25maWdJdGVtQnVsayMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TWFpbk1lbnU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZE5hdmlnYXRpb24iPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsjIyNQZXJtaXNzaW9uIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZ2VudDo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyIgVmFsdWVSZWdleD0iIj5ydzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtQnVsayMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpBZ2VudElUU01Db25maWdJdGVtQnVsazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU2VsZWN0Ij4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gRW5hYmxlZDwvSXRlbT4KICAgICAgICAgICAgICAgIDwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FnZW50SVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlRvIGRvd25sb2FkIGF0dGFjaG1lbnRzLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50IyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5SZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtQXR0YWNobWVudDo6UGVybWlzc2lvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSIiPnJvPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lckZyb250ZW5kOjpNb2R1bGUjIyNDdXN0b21lcklUU01Db25maWdJdGVtQXR0YWNobWVudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkZyb250ZW5kUmVnaXN0cmF0aW9uIj4KICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBSbyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5UbyBkb3dubG9hZCBhdHRhY2htZW50cy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlIyMjMTAwLVpvb20iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlUHJlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5ab29tPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5ab29tPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGFyZ2V0Ij48L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQcmVNZW51TW9kdWxlIyMjMjAwLUhpc3RvcnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlUHJlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY3Rpb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUhpc3Rvcnk7Q29uZmlnSXRlbUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCBodG1sICVdPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHJlTWVudU1vZHVsZSMjIzMwMC1EdXBsaWNhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OklUU01Db25maWdJdGVtOjpNZW51TW9kdWxlUHJlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpNZW51R2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5EdXBsaWNhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkR1cGxpY2F0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQWN0aW9uIj5BZ2VudElUU01Db25maWdJdGVtRWRpdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGluayI+QWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0O0R1cGxpY2F0ZUlEPVslIERhdGEuQ29uZmlnSXRlbUlEIHwgaHRtbCAlXTtWZXJzaW9uSUQ9WyUgRGF0YS5WZXJzaW9uSUQgfCBodG1sICVdO1JldHVyblRvTGFzdFNjcmVlbj0xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUYXJnZXQiPlBvcFVwPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsjIyNEZXBsU3RhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OklUU01Db25maWdJdGVtQnVsazwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iQ2hlY2tib3giPjE8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsjIyNJbmNpU3RhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+U2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkFnZW50OjpWaWV3OjpJVFNNQ29uZmlnSXRlbUJ1bGs8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJGcm9udGVuZDo6QWRtaW5Nb2R1bGVHcm91cHMjIyMyMDAtSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgYXZhaWxhYmxlIGdyb3VwcyBmb3IgdGhlIGFkbWluIG92ZXJ2aWV3IHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpOYXZCYXJNb2R1bGU8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ01EQlNldHRpbmdzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5DTURCIFNldHRpbmdzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik9yZGVyIj44MDAwPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIyMjVmVyc2lvbnNFbmFibGVkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkN1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkN1c3RvbWVyOjpWaWV3OjpJVFNNQ29uZmlnSXRlbVpvb208L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1ab29tIyMjVmVyc2lvbnNTZWxlY3RhYmxlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkN1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1ab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpDdXN0b21lcklUU01Db25maWdJdGVtWm9vbSMjI0dlbmVyYWxJbmZvIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPldoaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpDdXN0b21lcjo6Vmlldzo6SVRTTUNvbmZpZ0l0ZW1ab29tPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gSGlkZGVuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMSIgVHJhbnNsYXRhYmxlPSIxIj4xIC0gU2hvd248L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzcyIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkluY2lkZW50U3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3JlYXRlZFRpbWUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2hhbmdlZFRpbWUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iQWdlbnRDdXN0b21lckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lckNvbXBhbnkiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6Ok91dHB1dDo6SFRNTDo6RGFzaGJvYXJkOjpJVFNNQ29uZmlnSXRlbUdlbmVyaWM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIiBUcmFuc2xhdGFibGU9IjEiPkFzc2lnbmVkIENJczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+Q0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF0dHJpYnV0ZXMiPkN1c3RvbWVyQ29tcGFueTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRmlsdGVyIiBUcmFuc2xhdGFibGU9IjEiPkFzc2lnbmVkVG9FbnRpdHk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbWl0Ij4xMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGVybWlzc2lvbiI+cm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db250ZW50TGFyZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhY2hlVFRMTG9jYWwiPjAuNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbUtleSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTaG93bkNsYXNzZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT48L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Q29sdW1ucyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBBdmFpbGFibGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYnkgZGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhc3RDaGFuZ2VkIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8U2V0dGluZyBOYW1lPSJBZ2VudEN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyOjpCYWNrZW5kIyMjMDA2MC1DVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlBhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWdlbnQ6OlZpZXc6OkN1c3RvbWVyVXNlckluZm9ybWF0aW9uQ2VudGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkRhc2hib2FyZDo6SVRTTUNvbmZpZ0l0ZW1HZW5lcmljPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5Bc3NpZ25lZCBDSXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRyaWJ1dGVzIj5DdXN0b21lcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRmlsdGVyIiBUcmFuc2xhdGFibGU9IjEiPkFzc2lnbmVkVG9FbnRpdHk8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxpbWl0Ij4xMDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUGVybWlzc2lvbiI+cm88L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJsb2NrIj5Db250ZW50TGFyZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlZmF1bHQiPjE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNhY2hlVFRMTG9jYWwiPjAuNTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU2hvd25DbGFzc2VzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnSXRlbUtleSI+Q29udGFjdC1Vc2VyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Q29sdW1ucyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjAiIFRyYW5zbGF0YWJsZT0iMSI+MCAtIERpc2FibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBBdmFpbGFibGU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IjIiIFRyYW5zbGF0YWJsZT0iMSI+MiAtIEVuYWJsZWQgYnkgZGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOdW1iZXIiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3MiIFNlbGVjdGVkSUQ9IjIiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGUiIFNlbGVjdGVkSUQ9IjEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXJEZXBsU3RhdGVUeXBlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlIiBTZWxlY3RlZElEPSIxIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VySW5jaVN0YXRlVHlwZSIgU2VsZWN0ZWRJRD0iMSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikxhc3RDaGFuZ2VkIiBTZWxlY3RlZElEPSIyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkVsYXN0aWNzZWFyY2g6OkV4Y2x1ZGVkQ0lDbGFzc2VzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkVsYXN0aWNzZWFyY2g6OlNldHRpbmdzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJFbGFzdGljc2VhcmNoOjpFeGNsdWRlZENJRGVwbG95bWVudFN0YXRlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFbGFzdGljc2VhcmNoOjpTZXR0aW5nczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbVN0b3JlRmllbGRzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiIENvbmZpZ0xldmVsPSIxMDAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFbGFzdGljc2VhcmNoOjpTZXR0aW5nczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJCYXNpYyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db25maWdJdGVtSUQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzSUQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJFbGFzdGljc2VhcmNoOjpDb25maWdJdGVtU2VhcmNoRmllbGRzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkVsYXN0aWNzZWFyY2g6OlNldHRpbmdzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkJhc2ljIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdHRhY2htZW50cyI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJFbGFzdGljc2VhcmNoOjpRdWlja1NlYXJjaFNob3cjIyNDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPk9iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RWxhc3RpY3NlYXJjaDo6U2V0dGluZ3M8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ291bnQiPjU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF0dHJpYnV0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkF0dHJpYnV0ZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTnVtYmVyIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRXZlbnRzIyMjSVRTTUNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGlzdCBvZiBhbGwgUGFja2FnZSBldmVudHMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSBHVUkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW48L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5Db25maWdJdGVtQ3JlYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q29uZmlnSXRlbVVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPlZlcnNpb25DcmVhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5WZXJzaW9uVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbG95bWVudFN0YXRlVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaWRlbnRTdGF0ZVVwZGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNvbmZpZ0l0ZW1EZWxldGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+QXR0YWNobWVudEFkZFBvc3Q8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5BdHRhY2htZW50RGVsZXRlUG9zdDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPlZlcnNpb25EZWxldGU8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KCiAgICA8IS0tIGR5bmFtaWMgZmllbGQgcmVsYXRlZCBzZXR0aW5ncyAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGUjIyNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljRmllbGQgb2JqZWN0IHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkR5bmFtaWNGaWVsZHM6Ok9iamVjdFR5cGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGlzcGxheU5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+SVRTTSBDb25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4xMTU8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkU2NyZWVucyMjI0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5UaGlzIGNvbmZpZ3VyYXRpb24gZGVmaW5lcyBhbGwgcG9zc2libGUgc2NyZWVucyB0byBlbmFibGUgb3IgZGlzYWJsZSBkeW5hbWljIGZpZWxkcy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpEeW5hbWljRmllbGRTY3JlZW5zPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQjIyNEeW5hbWljRmllbGQiPkFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1QcmludCMjI0R5bmFtaWNGaWVsZCI+QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiPkFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVpvb20jIyNEeW5hbWljRmllbGQiPkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEeW5hbWljRmllbGQiPkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2g8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRGVmYXVsdENvbHVtbnNTY3JlZW5zIyMjSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlRoaXMgY29uZmlndXJhdGlvbiBkZWZpbmVzIGFsbCBwb3NzaWJsZSBzY3JlZW5zIHRvIGVuYWJsZSBvciBkaXNhYmxlIGRlZmF1bHQgY29sdW1ucy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpCYXNlOjpEeW5hbWljRmllbGRTY3JlZW5zPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkFnZW50Q3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNVSUMtSVRTTUNvbmZpZ0l0ZW1DdXN0b21lclVzZXIiPkRhc2hib2FyZFdpZGdldCBDVUlDLUlUU01Db25maWdJdGVtQ3VzdG9tZXJVc2VyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBZ2VudEN1c3RvbWVySW5mb3JtYXRpb25DZW50ZXI6OkJhY2tlbmQjIyMwMDYwLUNJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueSI+RGFzaGJvYXJkV2lkZ2V0IENJQy1JVFNNQ29uZmlnSXRlbUN1c3RvbWVyQ29tcGFueTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtIyMjRGVmYXVsdENvbHVtbnMiPkFnZW50SVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJJVFNNQ29uZmlnSXRlbSMjI0RlZmF1bHRDb2x1bW5zIj5DdXN0b21lcklUU01Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZFNjcmVlbnM6Ok9iamVjdFR5cGVzIyMjSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIGxpc3Qgb2YgZHluYW1pYyBmaWVsZCBvYmplY3QgdHlwZXMgd2hpY2ggYXJlIGFsbG93ZWQgdG8gYmUgYXNzaWduZWQgdG8gYWN0aW9ucyBvZiB0aGlzIHBhY2thZ2UgdmlhIHRoZSBkeW5hbWljIGZpZWxkIHNjcmVlbnMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OkJhc2U6OkR5bmFtaWNGaWVsZFNjcmVlbnM8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5JVFNNQ29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDwhLS0gZHluYW1pYyBmaWVsZCBJVFNNQ29uZmlnSXRlbSBSZWZlcmVuY2UgLS0+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGRzOjpEcml2ZXIjIyNDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWNGaWVsZCBiYWNrZW5kIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkR5bmFtaWNGaWVsZHM6OkRyaXZlclJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaXNwbGF5TmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkR5bmFtaWNGaWVsZFJlZmVyZW5jZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8IS0tIEVuZCBkeW5hbWljIGZpZWxkIElUU01Db25maWdJdGVtIFJlZmVyZW5jZSAtLT4KCiAgICA8IS0tIGR5bmFtaWMgZmllbGQgSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uIFJlZmVyZW5jZSAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IkR5bmFtaWNGaWVsZHM6OkRyaXZlciMjI0NvbmZpZ0l0ZW1WZXJzaW9uIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkR5bmFtaWNGaWVsZCBiYWNrZW5kIHJlZ2lzdHJhdGlvbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkR5bmFtaWNGaWVsZHM6OkRyaXZlclJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEaXNwbGF5TmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWdJdGVtIFZlcnNpb248L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtVmVyc2lvbjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkR5bmFtaWNGaWVsZFJlZmVyZW5jZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8IS0tIEVuZCBkeW5hbWljIGZpZWxkIElUU01Db25maWdJdGVtVmVyc2lvbiBSZWZlcmVuY2UgLS0+CgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkOjpFdmVudE1vZHVsZVBvc3QjIyMyMDAtRHluYW1pY0ZpZWxkU3luYyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbURlZmluaXRpb25TeW5jPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+RHluYW1pY0ZpZWxkVXBkYXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEeW5hbWljRmllbGQ6OkV2ZW50TW9kdWxlUG9zdCMjIzI0MDAtUmVidWlsZEFDTFByZXNlbGVjdGlvbkNhY2hlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlJlYnVpbGRzIHRoZSBBQ0wgcHJlc2VsZWN0aW9uIGNhY2hlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6UmVidWlsZEFDTFByZXNlbGVjdGlvbkNhY2hlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+RGVmaW5pdGlvbkNyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cHMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlckR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXBzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lclVzZXJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZCI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjI0RlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJDdXN0b21lcjo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwMyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Db25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkN1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzA1IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPCEtLSBUcmVlVmlldyByZWxhdGVkIHNldHRpbmdzIC0tPgogICAgPFNldHRpbmcgTmFtZT0iQ01EQlRyZWVWaWV3OjpEZWZhdWx0RGVwdGgiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MzwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iQ01EQlRyZWVWaWV3OjpTaG93TGlua0xhYmVscyIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJZZXMiPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJZZXMiIFRyYW5zbGF0YWJsZT0iMSI+WWVzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJObyIgVHJhbnNsYXRhYmxlPSIxIj5ObzwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CgogICAgPFNldHRpbmcgTmFtZT0iRHluYW1pY0ZpZWxkczo6RHluYW1pY0ZpZWxkU2V0OjpJbm5lckZpZWxkc1RpY2tldFRvQ0kiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+QSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RHluYW1pY0ZpZWxkczwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTd2FwcGVkRGlza1NOIj5JVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgoKICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlQ291bnQjIyMwMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFwmbHQ7T1RPQk9fQ09ORklHSVRFTV9YXCZndDsgd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPklUU01MaWNlbnNlLUxpY2Vuc2VDb3VudDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+SVRTTUxpY2Vuc2UtTGljZW5zZXNBdmFpbGFibGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1pbmltdW1MaWNlbnNlcyI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPklUU00tUmVmZXJlbmNlVG9MaWNlbnNlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJWYWxpZERlcGxTdGF0ZXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaWNrZXQiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlF1ZXVlIj5NaXNjPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPlRoZSBsaWNlbnNlICZsdDtPVE9CT19DT05GSUdJVEVNX05BTUUmZ3Q7IGhhcyBsZXNzIHRoYW4gJmx0O09UT0JPX0NPTkZJR0lURU1fTElDRU5TRVNfTUlOJmd0OyBpdGVtcyAoJmx0O09UT0JPX0NPTkZJR0lURU1fTElDRU5TRVNfQVZBSUwmZ3Q7IGxpY2Vuc2VzIGxlZnQpLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPkNNREJMaWNlbnNlTm90aWZpY2F0aW9uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvcml0eSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlN0YXRlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHlwZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlcnZpY2UiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTTEEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDdXN0b21lcklEIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJVc2VyIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iT3duZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj5MaWNlbnNlIFJlcHJvdmlzaW9uaW5nPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlbmRlclR5cGUiPnN5c3RlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkxpY2Vuc2VDb3VudCMjIzAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXCZsdDtPVE9CT19DT05GSUdJVEVNX1hcJmd0OyB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRvdGFsTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdmFpbGFibGVMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1pbmltdW1MaWNlbnNlcyI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZXJ2aWNlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU0xBIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlciI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik93bmVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlbmRlclR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkxpY2Vuc2VDb3VudCMjIzAzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXCZsdDtPVE9CT19DT05GSUdJVEVNX1hcJmd0OyB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRvdGFsTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdmFpbGFibGVMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1pbmltdW1MaWNlbnNlcyI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZXJ2aWNlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU0xBIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlciI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik93bmVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlbmRlclR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkxpY2Vuc2VDb3VudCMjIzA0IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXCZsdDtPVE9CT19DT05GSUdJVEVNX1hcJmd0OyB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRvdGFsTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdmFpbGFibGVMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1pbmltdW1MaWNlbnNlcyI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZXJ2aWNlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU0xBIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlciI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik93bmVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlbmRlclR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkxpY2Vuc2VDb3VudCMjIzA1IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXCZsdDtPVE9CT19DT05GSUdJVEVNX1hcJmd0OyB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRvdGFsTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdmFpbGFibGVMaWNlbnNlc0RGIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1pbmltdW1MaWNlbnNlcyI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGlja2V0Ij4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJRdWV1ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRleHQiIFZhbHVlVHlwZT0iVGV4dGFyZWEiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMb2NrIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iUHJpb3JpdHkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTdGF0ZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJTZXJ2aWNlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iU0xBIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ3VzdG9tZXJJRCI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkN1c3RvbWVyVXNlciI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik93bmVySUQiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNlbmRlclR5cGUiPnN5c3RlbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkV2ZW50TW9kdWxlUG9zdCMjIzIwMC1MaWNlbnNlTGlua0NvdW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkNvdW50TGljZW5zZUxpbmtzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+RGVwbG95bWVudFN0YXRlVXBkYXRlfENvbmZpZ0l0ZW1EeW5hbWljRmllbGRVcGRhdGVffERlbGV0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHJhbnNhY3Rpb24iPjE8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRWxhc3RpY3NlYXJjaFdpZGdldEJhY2tlbmQjIyMwNC1FbGFzdGljc2VhcmNoQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBwYXJhbWV0ZXJzIGZvciB0aGUgZWxhc3RpY3NlYXJjaCB3aWRnZXQgYmFja2VuZC48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkVsYXN0aWNzZWFyY2g6OlNldHRpbmdzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OkVsYXN0aWNzZWFyY2g6OkVsYXN0aWNzZWFyY2hDb25maWdJdGVtR2VuZXJpYzwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSIgVHJhbnNsYXRhYmxlPSIxIj5Db25maWcgSXRlbXM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlBlcm1pc3Npb24iPkFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZWZhdWx0Ij4xPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNJVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiIgVHJhbnNsYXRhYmxlPSIxIj5JVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0lUU01Db25maWdJdGVtWm9vbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZyBpdGVtIHpvb20uPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+Wm9vbTwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhck5hbWUiPkNvbmZpZyBJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpY0Zyb250ZW5kOjpNb2R1bGUjIyNQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cCI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlNlYXJjaCBjb25maWcgaXRlbXMuPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVGl0bGUiIFRyYW5zbGF0YWJsZT0iMSI+U2VhcmNoPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+Q29uZmlnIEl0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok1vZHVsZSMjI1B1YmxpY0lUU01Db25maWdJdGVtQXR0YWNobWVudCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gcm9udGVuZCBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+aXRzbS1jb25maWdpdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPlRvIGRvd25sb2FkIGF0dGFjaG1lbnRzLjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRpdGxlIj48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj5Db25maWcgSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY092ZXJ2aWV3IyMjU21hbGwiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpQdWJsaWNPdmVydmlld1NtYWxsPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj5TbWFsbDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZVNob3J0Ij5TPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYWdlU2hvd24iPjI1PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW0jIyNQYWdlU2hvd24iIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIiBWYWx1ZVJlZ2V4PSJeXGQrJCI+MTA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDwhLS0gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCAtLT4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNDbGFzcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5JbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI05hbWUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjTnVtYmVyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IkNoZWNrYm94Ij4xPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjRGVwbG95bWVudFN0YXRlIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkluY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0luY2lkZW50U3RhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+SW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NvcnRCeTo6RGVmYXVsdCIgVXNlclByZWZlcmVuY2VzR3JvdXA9IkFkdmFuY2VkIiBVc2VyTW9kaWZpY2F0aW9uQWN0aXZlPSIxIiBVc2VyTW9kaWZpY2F0aW9uUG9zc2libGU9IjEiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiIFNlbGVjdGVkSUQ9IkFnZSI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkFnZSIgVHJhbnNsYXRhYmxlPSIxIj5BZ2U8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ik51bWJlciIgVHJhbnNsYXRhYmxlPSIxIj5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9Ik5hbWUiIFRyYW5zbGF0YWJsZT0iMSI+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRGVwbFN0YXRlIiBUcmFuc2xhdGFibGU9IjEiPkRlcGxveW1lbnQgU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkluY2lTdGF0ZSIgVHJhbnNsYXRhYmxlPSIxIj5JbmNpZGVudCBTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjT3JkZXI6OkRlZmF1bHQiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbVNlYXJjaDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iU2VsZWN0IiBTZWxlY3RlZElEPSJEb3duIj4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iRG93biIgVHJhbnNsYXRhYmxlPSIxIj5Eb3duPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSJVcCIgVHJhbnNsYXRhYmxlPSIxIj5VcDwvSXRlbT4KICAgICAgICAgICAgPC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOdW1iZXIiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9JdGVtPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OlB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIyMjRGVmYXVsdHMjIyNOYW1lIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRGVwbG95bWVudFN0YXRlSURzIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PjwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNEZWZhdWx0cyMjI0luY2lkZW50U3RhdGVJRHMiIFVzZXJQcmVmZXJlbmNlc0dyb3VwPSJBZHZhbmNlZCIgVXNlck1vZGlmaWNhdGlvbkFjdGl2ZT0iMSIgVXNlck1vZGlmaWNhdGlvblBvc3NpYmxlPSIxIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpQdWJsaWM6OlZpZXc6OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+PC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0RlZmF1bHRzIyMjRHluYW1pY0ZpZWxkIiBVc2VyUHJlZmVyZW5jZXNHcm91cD0iQWR2YW5jZWQiIFVzZXJNb2RpZmljYXRpb25BY3RpdmU9IjEiIFVzZXJNb2RpZmljYXRpb25Qb3NzaWJsZT0iMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgJ1gnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6ICdhIHRleHQnLCBEcm9wZG93bjogJzEnLCBEYXRlL1RpbWU6ICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5OycgYW5kIG9yICdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03JzsuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI0R5bmFtaWNGaWVsZCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+RnJvbnRlbmQ6OlB1YmxpYzo6Vmlldzo6Q29uZmlnSXRlbU92ZXJ2aWV3PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTZWxlY3QiPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMCIgVHJhbnNsYXRhYmxlPSIxIj4wIC0gRGlzYWJsZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJPcHRpb24iIFZhbHVlPSIxIiBUcmFuc2xhdGFibGU9IjEiPjEgLSBFbmFibGVkPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iMiIgVHJhbnNsYXRhYmxlPSIxIj4yIC0gRW5hYmxlZCBhbmQgcmVxdWlyZWQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2gjIyNTZWFyY2hMaW1pdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9Il5cZCskIj4xMDAwMDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1N1cHByZXNzRnV6enlMb2dpYyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpWaWV3OjpDb25maWdJdGVtU2VhcmNoPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MTwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljRnJvbnRlbmQ6Ok5hdmlnYXRpb24jIyNQdWJsaWNJVFNNQ29uZmlnSXRlbSMjIzAwMy1JVFNNQ29uZmlnSXRlbSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5NYWluIG1lbnUgaXRlbSByZWdpc3RyYXRpb24uPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6UHVibGljOjpNb2R1bGVSZWdpc3RyYXRpb246Ok1haW5NZW51PC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmROYXZpZ2F0aW9uIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlc2NyaXB0aW9uIiBUcmFuc2xhdGFibGU9IjEiPkNvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q01EQjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaW5rIj5BY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGlua09wdGlvbiI+PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hdkJhciI+VGlja2V0PC9JdGVtPgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlR5cGUiPk1lbnU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQmxvY2siPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBY2Nlc3NLZXkiPjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQcmlvIj4zMTA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0ic3ZnSWNvbiI+dmFyL2h0dHBkL2h0ZG9jcy9za2lucy9QdWJsaWMvZGVmYXVsdC9pbWcvZGV2aWNlc19ibGFja18yNGRwLnN2ZzwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucyMjIzAzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkRlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNsYXNzZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVwbG95bWVudFN0YXRlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEeW5hbWljRmllbGRWYWx1ZXMiPgogICAgICAgICAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgICAgICAgICA8RGVmYXVsdEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciPjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbnMjIyMwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5LjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDbGFzc2VzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkRlcGxveW1lbnRTdGF0ZXMiPjxBcnJheT48L0FycmF5PjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRHluYW1pY0ZpZWxkVmFsdWVzIj4KICAgICAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtIFZhbHVlVHlwZT0iU3RyaW5nIj48L0RlZmF1bHRJdGVtPgogICAgICAgICAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zIyMjMDUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ2xhc3NlcyI+PEFycmF5PjwvQXJyYXk+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXBsb3ltZW50U3RhdGVzIj48QXJyYXk+PC9BcnJheT48L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkR5bmFtaWNGaWVsZFZhbHVlcyI+CiAgICAgICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgICAgIDxEZWZhdWx0SXRlbSBWYWx1ZVR5cGU9IlN0cmluZyI+PC9EZWZhdWx0SXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjI0RlZmF1bHQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+PC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwMSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzAyIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICA8SXRlbT5OdW1iZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5OYW1lPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q2xhc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5JbmNpU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5EZXBsU3RhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DcmVhdGVkPC9JdGVtPgogICAgICAgICAgICA8L0FycmF5PgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25Db2x1bW5zIyMjMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+PC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgIDxJdGVtPk51bWJlcjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPk5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbT5DbGFzczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkluY2lTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkRlcGxTdGF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNyZWF0ZWQ8L0l0ZW0+CiAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IlB1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMjIyMwNCIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgPEl0ZW0+TnVtYmVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+TmFtZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtPkNsYXNzPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+SW5jaVN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+RGVwbFN0YXRlPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0+Q3JlYXRlZDwvSXRlbT4KICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucyMjIzA1IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPjwvRGVzY3JpcHRpb24+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+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2gjIyNPcmRlcjo6RGVmYXVsdCIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpPcGVyYXRpb246OkNvbmZpZ0l0ZW1TZWFyY2g8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9IlNlbGVjdCIgU2VsZWN0ZWRJRD0iRG93biI+CiAgICAgICAgICAgICAgICA8SXRlbSBWYWx1ZVR5cGU9Ik9wdGlvbiIgVmFsdWU9IkRvd24iIFRyYW5zbGF0YWJsZT0iMSI+RG93bjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iT3B0aW9uIiBWYWx1ZT0iVXAiIFRyYW5zbGF0YWJsZT0iMSI+VXA8L0l0ZW0+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlIyMjUGVybWlzc2lvbiIgUmVxdWlyZWQ9IjEiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5EZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6T3BlcmF0aW9uOjpDb25maWdJdGVtRGVsZXRlPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJTdHJpbmciIFZhbHVlUmVnZXg9IiI+cnc8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZSMjI0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50IiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkdlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbU1hbmFnZW1lbnQ8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW1NYW5hZ2VtZW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJEZWZhdWx0PC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpFdmVudE1vZHVsZVBvc3QjIyM5NzAwLUdlbmVyaWNJbnRlcmZhY2UiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+UGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6OkV2ZW50OjpIYW5kbGVyPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUcmFuc2FjdGlvbiI+MTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihWZXJzaW9uVXBkYXRlfE5hbWVVcGRhdGV8RGVwbG95bWVudFN0YXRlVXBkYXRlfEluY2lkZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbUNyZWF0ZXxDb25maWdJdGVtVXBkYXRlfFZlcnNpb25DcmVhdGV8Q29uZmlnSXRlbURlbGV0ZXxBdHRhY2htZW50QWRkUG9zdHxBdHRhY2htZW50RGVsZXRlUG9zdCk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6Q29uZmlnSXRlbUZldGNoOjpDbGFzc2VzIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjAiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPjxBcnJheT48L0FycmF5PjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iR2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlIyMjQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUNyZWF0ZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbUNyZWF0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29udHJvbGxlciI+Q29uZmlnSXRlbTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ29uZmlnRGlhbG9nIj5BZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyRGVmYXVsdDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJHZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGUjIyNDb25maWdJdGVtOjpDb25maWdJdGVtRmV0Y2giIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5HZW5lcmljSW50ZXJmYWNlOjpJbnZva2VyOjpNb2R1bGVSZWdpc3RyYXRpb248L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmFtZSI+Q29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb250cm9sbGVyIj5Db25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJDb25maWdEaWFsb2ciPkFkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJDb25maWdJdGVtPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6Ok1vZHVsZSMjI0NvbmZpZ0l0ZW06OkNvbmZpZ0l0ZW1VcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+R2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik5hbWUiPkNvbmZpZ0l0ZW1VcGRhdGU8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbnRyb2xsZXIiPkNvbmZpZ0l0ZW08L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNvbmZpZ0RpYWxvZyI+QWRtaW5HZW5lcmljSW50ZXJmYWNlSW52b2tlckRlZmF1bHQ8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluR2VuZXJpY0ludGVyZmFjZUludm9rZXJDb25maWdJdGVtIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkZyb250ZW5kIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxJdGVtIFZhbHVlVHlwZT0iRnJvbnRlbmRSZWdpc3RyYXRpb24iPgogICAgICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJHcm91cFJvIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwIj4KICAgICAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+YWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRGVzY3JpcHRpb24iIFRyYW5zbGF0YWJsZT0iMSI+VGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgYWRtaW4gYXJlYSBvZiBPVE9CTy48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIEludm9rZXIgR1VJPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTmF2QmFyTmFtZSI+PC9JdGVtPgogICAgICAgICAgICAgICAgPC9IYXNoPgogICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkxvYWRlcjo6TW9kdWxlOjpBZG1pbkdlbmVyaWNJbnRlcmZhY2VJbnZva2VyQ29uZmlnSXRlbSMjIzAwNy1JVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBhZ2VudCBpbnRlcmZhY2UuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Gcm9udGVuZDo6QWRtaW46Ok1vZHVsZVJlZ2lzdHJhdGlvbjo6TG9hZGVyPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkNTUyI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkdlbmVyaWNJbnRlcmZhY2UuY3NzPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IkphdmFTY3JpcHQiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+Q29yZS5BZ2VudC5BZG1pbi5HZW5lcmljSW50ZXJmYWNlSW52b2tlci5qczwvSXRlbT4KICAgICAgICAgICAgICAgICAgICA8L0FycmF5PgogICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjo6Q29uZmlnSXRlbVVwc2VydDo6Q2xhc3NlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Gb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkdlbmVyaWNJbnRlcmZhY2U6Ok9wZXJhdGlvbjwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPERlZmF1bHRJdGVtPjxBcnJheT48L0FycmF5PjwvRGVmYXVsdEl0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iRnJvbnRlbmQ6Ok1vZHVsZSMjI0FkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0iIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RnJvbnRlbmQgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJGcm9udGVuZFJlZ2lzdHJhdGlvbiI+CiAgICAgICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ikdyb3VwUm8iPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvQXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9JdGVtPgogICAgICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iR3JvdXAiPgogICAgICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5hZG1pbjwvSXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgICAgICA8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJEZXNjcmlwdGlvbiI+QWRtaW48L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUaXRsZSIgVHJhbnNsYXRhYmxlPSIxIj5HZW5lcmljSW50ZXJmYWNlIE9wZXJhdGlvbiBHVUk8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJOYXZCYXJOYW1lIj48L0l0ZW0+CiAgICAgICAgICAgICAgICA8L0hhc2g+CiAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iTG9hZGVyOjpNb2R1bGU6OkFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0jIyMwMDItR2VuZXJpY0ludGVyZmFjZSIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIxIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5Mb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIGFnZW50IGludGVyZmFjZS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkZyb250ZW5kOjpBZG1pbjo6TW9kdWxlUmVnaXN0cmF0aW9uOjpMb2FkZXI8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQ1NTIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkNvcmUuQWdlbnQuQWRtaW4uR2VuZXJpY0ludGVyZmFjZS5jc3M8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iSmF2YVNjcmlwdCI+CiAgICAgICAgICAgICAgICAgICAgPEFycmF5PgogICAgICAgICAgICAgICAgICAgICAgICA8SXRlbT5Db3JlLkFnZW50LkFkbWluLkdlbmVyaWNJbnRlcmZhY2VPcGVyYXRpb24uanM8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1RyaWdnZXJDb25maWdJdGVtRmV0Y2gtMDEiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5UcmlnZ2VyQ29uZmlnSXRlbUZldGNoMDE8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpXZWJTZXJ2aWNlOjpUcmlnZ2VyQ29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+V2ViU2VydmljZU5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkludm9rZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1RyaWdnZXJDb25maWdJdGVtRmV0Y2gtMDIiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5UcmlnZ2VyQ29uZmlnSXRlbUZldGNoMDI8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpXZWJTZXJ2aWNlOjpUcmlnZ2VyQ29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+V2ViU2VydmljZU5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkludm9rZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJEYWVtb246OlNjaGVkdWxlckNyb25UYXNrTWFuYWdlcjo6VGFzayMjI1RyaWdnZXJDb25maWdJdGVtRmV0Y2gtMDMiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMCIgQ29uZmlnTGV2ZWw9IjEwMCI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+VHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkRhZW1vbjo6U2NoZWR1bGVyQ3JvblRhc2tNYW5hZ2VyOjpUYXNrPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRhc2tOYW1lIj5UcmlnZ2VyQ29uZmlnSXRlbUZldGNoMDM8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlNjaGVkdWxlIj4qLzIwICogKiAqICo8L0l0ZW0+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9Ik1vZHVsZSI+S2VybmVsOjpTeXN0ZW06OkNvbnNvbGU6OkNvbW1hbmQ6Ok1haW50OjpXZWJTZXJ2aWNlOjpUcmlnZ2VyQ29uZmlnSXRlbUZldGNoPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJGdW5jdGlvbiI+RXhlY3V0ZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTWF4aW11bVBhcmFsbGVsSW5zdGFuY2VzIj4xPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJQYXJhbXMiPgogICAgICAgICAgICAgICAgICAgIDxBcnJheT4KICAgICAgICAgICAgICAgICAgICAgICAgPEl0ZW0+V2ViU2VydmljZU5hbWU8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPkludm9rZXI8L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+Cjwvb3RvYm9fY29uZmlnPgo=</File>
        <File Location="Kernel/Config/Files/XML/ITSMConfigItemTicketLink.xml" Permission="660" Encode="Base64">PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPG90b2JvX2NvbmZpZyB2ZXJzaW9uPSIyLjAiIGluaXQ9IkFwcGxpY2F0aW9uIj4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpTZXRJbmNpZGVudFN0YXRlT25MaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPlNldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpMaW5rU3RhdHVzPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEl0ZW0gVmFsdWVUeXBlPSJDaGVja2JveCI+MDwvSXRlbT4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iSVRTTUNvbmZpZ0l0ZW06OkV2ZW50TW9kdWxlUG9zdCMjIzA0Mi1JVFNNQ29uZmlnSXRlbVRpY2tldFN0YXR1c0xpbmsiIFJlcXVpcmVkPSIxIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+RXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLjwvRGVzY3JpcHRpb24+CiAgICAgICAgPE5hdmlnYXRpb24+Q29yZTo6RXZlbnQ6OlRpY2tldDwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJNb2R1bGUiPktlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkV2ZW50OjpUaWNrZXRTdGF0dXNMaW5rPC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJFdmVudCI+KExpbmtBZGR8TGlua0RlbGV0ZSk8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgogICAgPFNldHRpbmcgTmFtZT0iVGlja2V0OjpFdmVudE1vZHVsZVBvc3QjIyMwNDItSVRTTUNvbmZpZ0l0ZW1UaWNrZXRTdGF0dXNMaW5rIiBSZXF1aXJlZD0iMSIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkV2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OkV2ZW50OjpUaWNrZXQ8L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6VGlja2V0OjpFdmVudDo6VGlja2V0U3RhdHVzTGluazwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihUaWNrZXRTdGF0ZVVwZGF0ZXxUaWNrZXRUeXBlVXBkYXRlKTwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+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+CiAgICAgICAgPC9WYWx1ZT4KICAgIDwvU2V0dGluZz4KICAgIDxTZXR0aW5nIE5hbWU9IklUU01Db25maWdJdGVtOjpMaWNlbnNlTWFuYWdlbWVudCMjIzAxLVN0YW5kYXJkIiBSZXF1aXJlZD0iMCIgVmFsaWQ9IjEiPgogICAgICAgIDxEZXNjcmlwdGlvbiBUcmFuc2xhdGFibGU9IjEiPkF0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy48L0Rlc2NyaXB0aW9uPgogICAgICAgIDxOYXZpZ2F0aW9uPkNvcmU6OklUU01Db25maWdJdGVtPC9OYXZpZ2F0aW9uPgogICAgICAgIDxWYWx1ZT4KICAgICAgICAgICAgPEhhc2g+CiAgICAgICAgICAgICAgICA8SXRlbSBLZXk9IlRvdGFsTGljZW5zZXNERiI+SVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJBdmFpbGFibGVMaWNlbnNlc0RGIj5JVFNNTGljZW5zZS1BdmFpbGFibGVMaWNlbnNlczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTGljZW5zZVJlZmVyZW5jZURGIj5JVFNNLVJlZmVyZW5jZVRvTGljZW5zZTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgICAgIDxJdGVtPlByb2R1Y3Rpb248L0l0ZW0+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZU1hbmFnZW1lbnQjIyMwMi1SdWxlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6TGljZW5zZU1hbmFnZW1lbnQjIyMwMy1SdWxlcyIgUmVxdWlyZWQ9IjAiIFZhbGlkPSIwIj4KICAgICAgICA8RGVzY3JpcHRpb24gVHJhbnNsYXRhYmxlPSIxIj5BdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpJVFNNQ29uZmlnSXRlbTwvTmF2aWdhdGlvbj4KICAgICAgICA8VmFsdWU+CiAgICAgICAgICAgIDxIYXNoPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJUb3RhbExpY2Vuc2VzREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iQXZhaWxhYmxlTGljZW5zZXNERiI+PC9JdGVtPgogICAgICAgICAgICAgICAgPEl0ZW0gS2V5PSJMaWNlbnNlUmVmZXJlbmNlREYiPjwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVmFsaWREZXBsU3RhdGVzIj4KICAgICAgICAgICAgICAgICAgICA8QXJyYXk+CiAgICAgICAgICAgICAgICAgICAgPC9BcnJheT4KICAgICAgICAgICAgICAgIDwvSXRlbT4KICAgICAgICAgICAgPC9IYXNoPgogICAgICAgIDwvVmFsdWU+CiAgICA8L1NldHRpbmc+CiAgICA8U2V0dGluZyBOYW1lPSJJVFNNQ29uZmlnSXRlbTo6RXZlbnRNb2R1bGVQb3N0IyMjMjAwLUxpY2Vuc2VVcGRhdGUiIFJlcXVpcmVkPSIwIiBWYWxpZD0iMSI+CiAgICAgICAgPERlc2NyaXB0aW9uIFRyYW5zbGF0YWJsZT0iMSI+TGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuPC9EZXNjcmlwdGlvbj4KICAgICAgICA8TmF2aWdhdGlvbj5Db3JlOjpFdmVudDo6SVRTTUNvbmZpZ0l0ZW08L05hdmlnYXRpb24+CiAgICAgICAgPFZhbHVlPgogICAgICAgICAgICA8SGFzaD4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iTW9kdWxlIj5LZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkV2ZW50OjpDb3VudExpY2Vuc2VMaW5rczwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iRXZlbnQiPihEZXBsb3ltZW50U3RhdGVVcGRhdGV8Q29uZmlnSXRlbUR5bmFtaWNGaWVsZFVwZGF0ZV98RGVsZXRlKTwvSXRlbT4KICAgICAgICAgICAgICAgIDxJdGVtIEtleT0iVHJhbnNhY3Rpb24iPjA8L0l0ZW0+CiAgICAgICAgICAgIDwvSGFzaD4KICAgICAgICA8L1ZhbHVlPgogICAgPC9TZXR0aW5nPgo8L290b2JvX2NvbmZpZz4K</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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6R2VuZXJpY0ludGVyZmFjZTo6SW52b2tlcjo6RWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbU1hbmFnZW1lbnQ7Cgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBNSU1FOjpCYXNlNjQgcXcoZW5jb2RlX2Jhc2U2NCk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXI6OkVsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1NYW5hZ2VtZW50Cgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgp1c3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OkdlbmVyaWNJbnRlcmZhY2U6Okludm9rZXItPm5ldygpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSBibGVzcyB7fSwgJFR5cGU7CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1zIGFuZCBzdG9yZSB0aGVtIGluICRTZWxmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvRGVidWdnZXJPYmplY3QgV2Vic2VydmljZUlELykgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgICAgICA9PiAwLAogICAgICAgICAgICAgICAgRXJyb3JNZXNzYWdlID0+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+ICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJUNvbnRlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGlmIHRoZSBDSSB3YXMgbW92ZWQgb3V0IG9mIGFuIGV4Y2x1ZGVkIGRlcGxveW1lbnQgc3RhdGUsIGNyZWF0ZSBpdAogICAgICAgICAgICAgICAgIyBpbiB0aGF0IGNhc2Ugb3ZlcnJpZGUgdGhlIHByZXZpb3VzICRBUEkgdmFsdWUgdG8gJ19kb2MnCiAgICAgICAgICAgICAgICBlbHNpZiAoICRQYXJhbXtEYXRhfXtPbGREZXBsU3RhdGV9ICYmICRFeGNsdWRlZERlcGxTdGF0ZXMtPnskT2xkRGVwbFN0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICAkQVBJID0gJ19kb2MnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZWxzZSBpdCB3YXMgYSBub3JtYWwgdHJhbnNpdGlvbiBiZXR3ZWVuIG5vbiBleGNsdWRlZCBzdGF0ZXMsIHNvIG5vdGhpbmcgdG8gZG8gaW4gdGhpcyBzY29wZQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2F0aGVyIGFsbCBmaWVsZHMgd2hpY2ggaGF2ZSB0byBiZSBzdG9yZWQKICAgIG15ICRTdG9yZSAgICAgICAgICAgICAgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0VsYXN0aWNzZWFyY2g6OkNvbmZpZ0l0ZW1TdG9yZUZpZWxkcycpOwogICAgbXkgJFNlYXJjaCAgICAgICAgICAgICA9ICRDb25maWdPYmplY3QtPkdldCgnRWxhc3RpY3NlYXJjaDo6Q29uZmlnSXRlbVNlYXJjaEZpZWxkcycpOwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIG15ICVEYXRhVG9TdG9yZTsKICAgIGZvciBteSAkRmllbGQgKCBAeyAkU3RvcmUtPntCYXNpY30gfSwgQHsgJFNlYXJjaC0+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+W0EtWmEtejAtOS1dKykvICkgewogICAgICAgICAgICAgICAgbXkgJFBsYWluRmllbGROYW1lID0gJCt7UGxhaW5GaWVsZE5hbWV9OwoKICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgZmllbGQgaXMgaW4gY2xhc3MgZGVmaW5pdGlvbgogICAgICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRQbGFpbkZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3JDb2RlICAgID0+ICIkU2VsZi0+e09wZXJhdGlvbk5hbWV9LkludmFsaWRQYXJhbWV0ZXIiLAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IER5bmFtaWNGaWVsZC0+TmFtZSBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBnZXQgZHluYW1pYyBmaWVsZCBjb25maWcKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JFBsYWluRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAjIHZhbGlkYXRlIHZhbHVlCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIyBwb3NzaWJsZSBzdHJ1Y3R1cmVzIGFyZSBzdHJpbmcgYW5kIGFycmF5LCBubyBkYXRhIGluc2lkZSBpcyBuZWVkZWQKICAgICAgICAgICAgICAgICAgICBpZiAoICFJc1N0cmluZygkVmFsdWUpICYmIHJlZiAkVmFsdWUgbmUgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgbXkgJFZhbGlkYXRlVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkZpZWxkVmFsdWVWYWxpZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVmFsdWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICEkVmFsaWRhdGVWYWx1ZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yQ29kZSAgICA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfS5JbnZhbGlkUGFyYW1ldGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogRHluYW1pY0ZpZWxkLT5WYWx1ZSBwYXJhbWV0ZXIgaXMgaW52YWxpZCEiLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJElkZW50aWZpZXIgPSAkT3BlcmF0aW9uQ29uZmlnLT57ICdJZGVudGlmaWVyJyAuICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0gfTsKICAgICAgICBpZiAoICEkSWRlbnRpZmllciApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOb3QgaW1wb3J0aW5nIGl0ZW1zIGluIGNsYXNzICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3N9IC0gc2tpcHBpbmcuIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcHVzaCBAQ0lzSGFuZGxlZCwge307CgogICAgICAgICAgICBuZXh0IENJOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayB3aGV0aGVyIHRoaXMgaXRlbSBleGlzdHMgKHVwZGF0ZSkgb3IgaXMgbmV3IChjcmVhdGUpCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRDsKCiAgICAgICAgIyBwcmVwYXJlIHNlYXJjaAogICAgICAgIG15ICVTZWFyY2hQYXJhbSA9ICgKICAgICAgICAgICAgUmVzdWx0ICAgICAgICAgPT4gJ0FSUkFZJywKICAgICAgICAgICAgUXVlcnlDb25kaXRpb24gPT4gMCwKICAgICAgICApOwogICAgICAgIEFUVFJJQlVURToKICAgICAgICBmb3IgbXkgJEF0dHJpYnV0ZSAoICRJZGVudGlmaWVyLT5AKiApIHsKCiAgICAgICAgICAgICMgaWYgbnVtYmVyIG9yIGNvbmZpZyBpdGVtIGlkIGFyZSBkZWZpbmVkIGFzIGlkZW50aWZpZXJzLCB1c2Ugb25seSB0aGlzCiAgICAgICAgICAgIGlmICggJEF0dHJpYnV0ZSBlcSAnTnVtYmVyJyApIHsKICAgICAgICAgICAgICAgIGlmICggJFJlbW90ZUNJRGF0YS0+e051bWJlcn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtTnVtYmVyID0+ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbGFzdCBBVFRSSUJVVEU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdDb25maWdJdGVtSUQnICkgewogICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFJlbW90ZUNJRGF0YS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJENvbmZpZ0l0ZW0pICkgewogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkUmVtb3RlQ0lEYXRhLT57Q29uZmlnSXRlbUlEfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAnJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBsYXN0IEFUVFJJQlVURTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0NsYXNzZXMnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte0NsYXNzZXN9ID0gWyAkUmVtb3RlQ0lEYXRhLT57Q2xhc3N9IF07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQXR0cmlidXRlIGVxICdOYW1lJyApIHsKICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXtOYW1lfSA9ICRSZW1vdGVDSURhdGEtPntOYW1lfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRBdHRyaWJ1dGUgZXEgJ0RlcGxTdGF0ZXMnICkgewogICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFte0RlcGxTdGF0ZXN9ID0gWyAkUmVtb3RlQ0lEYXRhLT57RGVwbG95bWVudFN0YXRlfSBdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEF0dHJpYnV0ZSA9fiAvXkR5bi8gKSB7CiAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW17JEF0dHJpYnV0ZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRSZW1vdGVDSURhdGEtPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCB1c2UgJEF0dHJpYnV0ZSBhcyBJZGVudGlmaWVyIC0gc2tpcHBpbmcuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBwdXNoIEBDSXNIYW5kbGVkLCB7fTsKCiAgICAgICAgICAgICAgICBuZXh0IENJOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoICFkZWZpbmVkICRDb25maWdJdGVtSUQgKSB7CgogICAgICAgICAgICAjIGF2b2lkIGV4ZWN1dGluZyBhIHNlYXJjaCB3aXRoIGVtcHR5IHNlYXJjaCBwYXJhbXMgKGV4Y2x1ZGluZyAnUmVzdWx0ID0+ICJBUlJBWSInIGZyb20gbWVhbmluZ2Z1bCBwYXJhbXMpCiAgICAgICAgICAgIG15ICRQZXJmb3JtU2VhcmNoID0gMDsKICAgICAgICAgICAgU0VBUkNIUEFSQU1LRVk6CiAgICAgICAgICAgIGZvciBteSAkU2VhcmNoUGFyYW1LZXkgKCBrZXlzICVTZWFyY2hQYXJhbSApIHsKICAgICAgICAgICAgICAgIGlmICggJFNlYXJjaFBhcmFtS2V5IG5lICdSZXN1bHQnICYmICRTZWFyY2hQYXJhbXskU2VhcmNoUGFyYW1LZXl9ICkgewogICAgICAgICAgICAgICAgICAgICRQZXJmb3JtU2VhcmNoID0gMTsKCiAgICAgICAgICAgICAgICAgICAgbGFzdCBTRUFSQ0hQQVJBTUtFWTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCRQZXJmb3JtU2VhcmNoKSB7CgogICAgICAgICAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCglU2VhcmNoUGFyYW0pOwoKICAgICAgICAgICAgICAgIGlmICggc2NhbGFyIEBDb25maWdJdGVtSURzID4gMSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVycyA9IGpvaW4oICc7JywgbWFwIHsiJF8gPT4gJFNlYXJjaFBhcmFteyRffSJ9IGtleXMgJVNlYXJjaFBhcmFtICk7CgogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCB1c2UgYW1iaWd1b3VzIHNlYXJjaCByZXN1bHQgLSBza2lwcGluZy4gUGFyYW1ldGVyczogJFNlYXJjaFBhcmFtZXRlcnM7IiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIHB1c2ggQENJc0hhbmRsZWQsIHt9OwoKICAgICAgICAgICAgICAgICAgICBuZXh0IENJOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbUlEc1swXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBwZXJtaXNzaW9ucwogICAgICAgIG15ICRQZXJtaXNzaW9uOwogICAgICAgIGlmICgkQ29uZmlnSXRlbUlEKSB7CiAgICAgICAgICAgICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBTY29wZSAgPT4gJ0l0ZW0nLAogICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntQZXJtaXNzaW9ufSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQZXJtaXNzaW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgICAgICBDbGFzc0lEID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJFBlcm1pc3Npb24gKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoCiAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uQWNjZXNzRGVuaWVkIiwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiJFNlbGYtPntPcGVyYXRpb25OYW1lfTogQ2FuIG5vdCB3cml0ZSBjb25maWd1cmF0aW9uIGl0ZW0hIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggISRDb25maWdJdGVtSUQgJiYgISRSZW1vdGVDSURhdGEtPntOYW1lfSApIHsKICAgICAgICAgICAgbXkgJE5vdGljZUluZm8gPSAkUmVtb3RlQ0lEYXRhLT57TnVtYmVyfSA/ICJOdW1iZXI6ICRSZW1vdGVDSURhdGEtPntOdW1iZXJ9OyIgOiAnJzsKCiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ25vdGljZScsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTWlzc2luZyAnTmFtZScgcGFyYW1ldGVyIGZvciBjcmVhdGluZyBhIENJLiBTa2lwcGluZyBpdGVtLiAkTm90aWNlSW5mbyIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENJc0hhbmRsZWQsIHt9OwoKICAgICAgICAgICAgbmV4dCBDSTsKICAgICAgICB9CgogICAgICAgIG15IEBBdHRhY2htZW50TGlzdDsKICAgICAgICBpZiAoIGRlZmluZWQgJFJlbW90ZUNJRGF0YS0+e0F0dGFjaG1lbnR9ICkgewoKICAgICAgICAgICAgIyBpc29sYXRlIEF0dGFjaG1lbnQgcGFyYW1ldGVyCiAgICAgICAgICAgIG15ICRBdHRhY2htZW50ID0gJFJlbW90ZUNJRGF0YS0+e0F0dGFjaG1lbnR9OwoKICAgICAgICAgICAgIyBob21vZ2VuYXRlIGlucHV0IHRvIGFycmF5CiAgICAgICAgICAgIGlmICggcmVmICRBdHRhY2htZW50IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQEF0dGFjaG1lbnRMaXN0LCAkQXR0YWNobWVudDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBBdHRhY2htZW50TGlzdCA9IEB7JEF0dGFjaG1lbnR9OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIEF0dGFjaG1lbnQgaW50ZXJuYWwgc3RydWN0dXJlCiAgICAgICAgICAgIGZvciBteSAkQXR0YWNobWVudEl0ZW0gKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJEF0dGFjaG1lbnRJdGVtKSApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgICAgICBFcnJvckNvZGUgICAgPT4gIiRTZWxmLT57T3BlcmF0aW9uTmFtZX0uSW52YWxpZFBhcmFtZXRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIiRTZWxmLT57T3BlcmF0aW9uTmFtZX06IENvbmZpZ0l0ZW0tPkF0dGFjaG1lbnQgcGFyYW1ldGVyIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcmVtb3ZlIGxlYWRpbmcgYW5kIHRyYWlsaW5nIHNwYWNlcwogICAgICAgICAgICAgICAgZm9yIG15ICRBdHRyaWJ1dGUgKCBzb3J0IGtleXMgJEF0dGFjaG1lbnRJdGVtLT4lKiApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICFyZWZ0eXBlICRBdHRhY2htZW50SXRlbS0+eyRBdHRyaWJ1dGV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSBsZWFkaW5nIHNwYWNlcwogICAgICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudEl0ZW0tPnskQXR0cmlidXRlfSA9fiBze1xBXHMrfXt9OwoKICAgICAgICAgICAgICAgICAgICAgICAgI3JlbW92ZSB0cmFpbGluZyBzcGFjZXMKICAgICAgICAgICAgICAgICAgICAgICAgJEF0dGFjaG1lbnRJdGVtLT57JEF0dHJpYnV0ZX0gPX4gc3tccytcen17fTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBjaGVjayBBdHRhY2htZW50IGF0dHJpYnV0ZSB2YWx1ZXMKICAgICAgICAgICAgICAgIG15ICRBdHRhY2htZW50Q2hlY2sgPSAkU2VsZi0+X0NoZWNrQXR0YWNobWVudCgKICAgICAgICAgICAgICAgICAgICBBdHRhY2htZW50ID0+ICRBdHRhY2htZW50SXRlbSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAhJEF0dGFjaG1lbnRDaGVjay0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+UmV0dXJuRXJyb3IoICV7JEF0dGFjaG1lbnRDaGVja30gKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBzaGlmdCBkeW5hbWljIGZpZWxkIHJlZmVyZW5jZSBhbmQgbGVucyB2YWx1ZXMgZnJvbSBjb25maWdpdGVtIGRhdGEgdG8gc2V0IHRoZW0gYWZ0ZXJ3YXJkcwogICAgICAgIG15ICVERlNoaWZ0ZWRWYWx1ZXM7CiAgICAgICAgREZOQU1FOgogICAgICAgIGZvciBteSAkREZOYW1lICgga2V5cyAlREZSZWZMb29rdXAsIGtleXMgJURGTGVuc0xvb2t1cCApIHsKCiAgICAgICAgICAgIG5leHQgREZOQU1FIHVubGVzcyBkZWZpbmVkICRSZW1vdGVDSURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKCiAgICAgICAgICAgICRERlNoaWZ0ZWRWYWx1ZXN7JERGTmFtZX0gPSBkZWxldGUgJFJlbW90ZUNJRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCRDb25maWdJdGVtSUQpIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVVwZGF0ZSgKICAgICAgICAgICAgICAgICRSZW1vdGVDSURhdGEtPiUqLAogICAgICAgICAgICAgICAgJVJlcXVpcmVkQXR0cmlidXRlcywKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRCAgICA9PiAkUmVxdWlyZWRBdHRyaWJ1dGVze0RlcGxveW1lbnRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7SW5jaWRlbnRTdGF0ZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICBFeHRlcm5hbFNvdXJjZSA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAiRXJyb3Igd2hpbGUgdXBkYXRpbmcgQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSUQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFkZCgKICAgICAgICAgICAgICAgICRSZW1vdGVDSURhdGEtPiUqLAogICAgICAgICAgICAgICAgJVJlcXVpcmVkQXR0cmlidXRlcywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEICAgID0+ICRSZXF1aXJlZEF0dHJpYnV0ZXN7RGVwbG95bWVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gJFJlcXVpcmVkQXR0cmlidXRlc3tJbmNpZGVudFN0YXRlSUR9LAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlID0+IDEsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICEkQ29uZmlnSXRlbUlEICkgewogICAgICAgICAgICAgICAgcmV0dXJuICRTZWxmLT5FcnJvcigKICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGNyZWF0aW5nIENJIHdpdGggTmFtZSAnJFJlcXVpcmVkQXR0cmlidXRlc3tOYW1lfScsIENsYXNzICckUmVxdWlyZWRBdHRyaWJ1dGVze0NsYXNzfScgKENsYXNzSUQ6ICckUmVxdWlyZWRBdHRyaWJ1dGVze0NsYXNzSUR9JykuIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICRBbGxERlNoaWZ0ZWRWYWx1ZXN7JENvbmZpZ0l0ZW1JRH0gPSBcJURGU2hpZnRlZFZhbHVlczsKCiAgICAgICAgIyBoYW5kbGUgY29uZmlnIGl0ZW0gYXR0YWNobWVudHMKICAgICAgICBpZiAoQEF0dGFjaG1lbnRMaXN0KSB7CgogICAgICAgICAgICBteSBARXhpc3RpbmdBdHRhY2htZW50cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CiAgICAgICAgICAgICAgICBteSAkRGVsZXRlU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICEkRGVsZXRlU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gJFNlbGYtPkVycm9yKAogICAgICAgICAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciB3aGlsZSBkZWxldGluZyBleGlzdGluZyBhdHRhY2htZW50IHdpdGggTmFtZSAnJEZpbGVuYW1lJyBmb3IgQ29uZmlnSXRlbSBJRCAkQ29uZmlnSXRlbUlELiIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudExpc3QpIHsKCiAgICAgICAgICAgICAgICAjIGRlbGV0ZSBhbGwgY29uZmlnIGl0ZW0gYXR0YWNobWVudHMKCiAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICAkQXR0YWNobWVudC0+JSosCiAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRVc2VySUQsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiAkU2VsZi0+RXJyb3IoCiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIHdoaWxlIGFkZGluZyBhdHRhY2htZW50IHdpdGggTmFtZSAnJEF0dGFjaG1lbnQtPntGaWxlbmFtZX0nIGZvciBDb25maWdJdGVtIElEICRDb25maWdJdGVtSUQuIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBwdXNoIEBDSXNIYW5kbGVkLCB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJFJlbW90ZUNJRGF0YS0+e05hbWV9LAogICAgICAgIH07CiAgICB9CgogICAgIyBzZXQgZHluYW1pYyBmaWVsZCByZWZlcmVuY2UgYW5kIGxlbnMgdmFsdWVzIGFmdGVyIGFkZGluZyAvIHVwZGF0aW5nIGFsbCBjb25maWcgaXRlbXMKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ0lERlBhaXIgKCBwYWlycyAlQWxsREZTaGlmdGVkVmFsdWVzICkgewoKICAgICAgICBteSAoICRDb25maWdJdGVtSUQsICRERlZhbHVlcyApID0gJENJREZQYWlyLT5AKjsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRERlZhbHVlcyk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtIGRhdGEgZm9yIHZlcnNpb24gaWQKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGZpcnN0LCBzZXQgZHluYW1pYyBmaWVsZCByZWZlcmVuY2UgdmFsdWVzCiAgICAgICAgREZSRUY6CiAgICAgICAgZm9yIG15ICRERlJlZk5hbWUgKCBrZXlzICVERlJlZkxvb2t1cCApIHsKCiAgICAgICAgICAgIG5leHQgREZSRUYgdW5sZXNzIGV4aXN0cyAkREZWYWx1ZXMtPnskREZSZWZOYW1lfTsKCiAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlU2V0KAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRERlJlZkxvb2t1cHskREZSZWZOYW1lfSwKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJERGVmFsdWVzLT57JERGUmVmTmFtZX0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFVzZXJJRCwKICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzZWNvbmQsIHNldCBkeW5hbWljIGZpZWxkIGxlbnMgdmFsdWVzCiAgICAgICAgREZMRU5TOgogICAgICAgIGZvciBteSAkREZMZW5zTmFtZSAoIGtleXMgJURGTGVuc0xvb2t1cCApIHsKCiAgICAgICAgICAgIG5leHQgREZMRU5TIHVubGVzcyBleGlzdHMgJERGVmFsdWVzLT57JERGTGVuc05hbWV9OwoKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJERGTGVuc0xvb2t1cHskREZMZW5zTmFtZX0sCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRERlZhbHVlcy0+eyRERkxlbnNOYW1lfSwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAkVXNlcklELAogICAgICAgICAgICAgICAgRXh0ZXJuYWxTb3VyY2UgICAgID0+IDEsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgIERhdGEgICAgPT4geyBDb25maWdJdGVtID0+IFxAQ0lzSGFuZGxlZCB9LAogICAgfTsKfQoKMTsK</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+eydSdW4gU2VhcmNoJ30gPSAn2KjYr9ihINin2YTYqNit2KsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn2KfZhNio2K3YqyDYo9mK2LbYp9mLINmB2Yog2KfZhNil2LXYr9in2LHYp9iqINin2YTYs9in2KjZgtip2J8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfYt9ix2YrZgtipINi52LHYtiDYp9mE2LTYrNix2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+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+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn2K3Yr9irINiu2LfYoyDZgdmKINmF2LLYp9mF2YbYqSDYp9mE2KrYudix2YrZgdin2KouINmK2LHYrNmJINin2YTYqtit2YLZgiDZhdmGINin2YTYs9is2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn2YTYr9mK2YMg2KrYudix2YrZgdin2KogSVRTTUNvbmZpZ0l0ZW0g2LrZitixINmF2KrYstin2YXZhtipLiDZitix2KzZiSDZhti02LEg2KrYutmK2YrYsdin2Kog2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZiiDZhNmAIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn2YXZhtiq2YfZitipINin2YTYtdmE2KfYrdmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfYp9mE2LXZitin2YbYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9i32YrZkdin2LEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9mF2K7Yt9i3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ9in2YTYpdi12YTYp9itJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfZhdiq2YLYp9i52K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn2KfZhNmF2LHYp9is2LnYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn2KfZhNin2K7Yqtio2KfYsS/YttmF2KfZhiDYp9mE2KzZiNiv2KknOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ9mG2LjYsdipINi52KfZhdipINmI2KrYo9mD2YrYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICfYp9iz2KrZitix2KfYryDYp9mE2YHYptin2Kov2KfZhNij2K/ZiNin2LEg2YjYp9mE2K3ZgtmI2YQg2KfZhNmF2LHYqtio2LfYqSDYqNmH2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfYrdiv2Ksg2K7Yt9ijINij2KvZhtin2KEg2KfYs9iq2YrYsdin2K8g2KfZhNmB2KbYqS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtINmF2K7ZgdmKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSDZhdi52LHZiNi2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfZitiz2YXYrSDYqNi02LHZiNi3INio2K3YqyDZhdmI2LPYudipINmB2Yog2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuINio2KfYs9iq2K7Yr9in2YUg2YfYsNmHINin2YTZhdmK2LLYqSDZitmF2YPZhtmDINin2YTYqNit2Ksg2YXYq9mE2KfZiyDYudmGINin2LPZhSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhdi5INmH2LDYpyDYp9mE2YbZiNi5INmF2YYg2KfZhNi02LHZiNi3INmF2KvZhCAiKCrZhdmB2KrYp9itIDEqJirZhdmB2KrYp9itIDIqKSIg2KPZiCAiKCrZhdmB2KrYp9itIDEqfHzZhdmB2KrYp9itIDIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9mK2LPZhditINio2LTYsdmI2Lcg2KjYrdirINmF2YjYs9i52Kkg2YHZiiDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4g2KjYp9iz2KrYrtiv2KfZhSDZh9iw2Ycg2KfZhNmF2YrYstipINmK2YXZg9mG2YMg2KfZhNio2K3YqyDYudmE2Ykg2LPYqNmK2YQg2KfZhNmF2KvYp9mEINi52YYg2KfYs9mFINi52YbYtdixINin2YTYqtmD2YjZitmGINmF2Lkg2YfYsNinINin2YTZhtmI2Lkg2YXZhiDYp9mE2LTYsdmI2Lcg2YXYq9mEICIoKtmF2YHYqtin2K0gMSomKtmF2YHYqtin2K0gMiopIiDYo9mIICIoKtmF2YHYqtin2K0gMSp8fNmF2YHYqtin2K0gMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn2KfZhNmF2K7YqNix2YrZhiDYp9mE2LPYsdmK2YrZhiDYp9mE2YXYudmK2YbZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfYp9mE2YXYrtio2LHZitmGINin2YTYs9ix2YrZitmGINin2YTZhdi52YrZhtmK2YYg2YTYtNix2YPYqSDYp9mE2LnZhdmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfYp9mE2YXYrtio2LHZiNmGINin2YTYs9ix2YrZiNmGINin2YTZhdiu2LXYtdmI2YYg2YTZhNmF2LPYqtiu2K/ZhSDYp9mE2LnZhdmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ9il2LnYr9in2K/Yp9iqIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9iq2K3ZgtmCINmF2YYg2YjYrNmI2K8g2KfYs9mFINmB2LHZitivINmB2YLYtyDYr9in2K7ZhCDZhtmB2LMg2YHYptipIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykg2KPZiCDYudin2YTZhdmK2YvYpyAoXCfYudin2YVcJynYjCDZhdmF2Kcg2YrYudmG2Yog2KPZhiDZg9mEINi52YbYtdixINiq2YPZiNmK2YYg2YXZiNis2YjYryDZitik2K7YsCDZgdmKINin2YTYp9i52KrYqNin2LEg2LnZhtivINin2YTYqNit2Ksg2LnZhiDYp9mE2KrZg9ix2KfYsdin2KouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfYp9iu2KrYsSDZiNit2K/YqSDZhtmF2LfZitipINmE2YHYsdi2INmG2LjYp9mFINin2YTYqtiz2YXZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn2KfYrtiq2LEg2YjYrdiv2Kkg2YbZhdi32YrYqSDZhNmB2LHYtiDZhdiu2LfYtyDYo9ix2YLYp9mFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfYp9iu2KrYsSDZiNit2K/YqSDZhtmF2LfZitipINmE2YHYsdi2INmF2K7Yt9i3INiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAn2KfYrtiq2LEg2KfZhNiz2YXYp9iqINmE2KrYtNi62YrZhCDYpdmG2LTYp9ihINil2LXYr9in2LEg2KzYr9mK2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ9in2K7YqtixINin2YTZgdim2KfYqiDYp9mE2YXYsdin2K8g2KrYudmK2YrZhtmH2Kcg2YTZgdim2Kkg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YfYsNmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ9mF2LHYtNit2KfYqiDYudmG2LXYsSDYqtmD2YjZitmGINin2YTYudmF2YjYryDZhNmAINmG2LjYsdipINi52KfZhdipINi52YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2LnZhdmI2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfYp9mE2KPYudmF2K/YqSDYp9mE2KrZiiDZitmF2YPZhiDYqti12YHZitiq2YfYpyDZgdmKINin2YTZhti42LHYqSDYp9mE2LnYp9mF2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELiDZhdmE2KfYrdi42Kk6INmK2Y/Ys9mF2K0g2YHZgti3INio2LPZhdin2Kog2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YjYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn2KXYttin2YHYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfYqti52K/ZitmEINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mI2K3Yr9ipINit2K/YqyDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2YbZhdi32YrYqSDYp9mE2KrZiiDYqtiq2YrYrSDYp9mE2KrYs9is2YrZhCDZgdmKINin2YTYs9is2YQg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn2YjYrdiv2Kkg2K3Yr9irINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTZhtmF2LfZitipINin2YTYqtmKINiq2YLZiNmFINio2KrYrdiv2YrYqyDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINil2YTZiSDYqti52LHZitmB2YfYpyDYp9mE2K3Yp9mE2YouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn2KrYp9ix2YrYriDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn2LfYqNin2LnYqSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfYqtmD2KjZitixINi52YbYtdixINin2YTYqtmD2YjZitmGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ9i52LHYtiDYtNis2LHYqSDYudmG2KfYtdixINin2YTYqtmD2YjZitmGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ9il2LXYr9in2LEg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn2YTZhiDZitiq2YUg2KrYrtiy2YrZhiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmF2YYg2KfZhNmB2KbYp9iqINin2YTYqtin2YTZitipINi52YTZiSDYrtin2K/ZhSBFbGFzdGljc2VhcmNoLiDZhNiq2LfYqNmK2YIg2LDZhNmDINi52YTZiSBDSXMg2KfZhNit2KfZhNmK2KnYjCDZitis2Kgg2KrYtNi62YrZhCDYqtix2K3ZitmEIENJINi52KjYsSDZiNit2K/YqSDYp9mE2KrYrdmD2YXYjCDYqNi52K8g2KrYutmK2YrYsSDZh9iw2Kcg2KfZhNiu2YrYp9ixLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfZhNmGINmK2KrZhSDYqtiu2LLZitmGINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2LDYp9iqINit2KfZhNin2Kog2KfZhNmG2LTYsSDYp9mE2KrYp9mE2YrYqSDYudmE2Ykg2K7Yp9iv2YUgRWxhc3RpY3NlYXJjaC4g2YTYqti32KjZitmCINiw2YTZgyDYudmE2YkgQ0lzINin2YTYrdin2YTZitip2Iwg2YrYrNioINiq2LTYutmK2YQg2KrYsdit2YrZhCBDSSDYudio2LEg2YjYrdiv2Kkg2KfZhNiq2K3Zg9mF2Iwg2KjYudivINiq2LrZitmK2LEg2YfYsNinINin2YTYrtmK2KfYsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn2K3YryDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn2K3YryDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmD2YQg2LXZgdit2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfZgtin2LnYr9ipINio2YrYp9mG2KfYqiDYpdiv2KfYsdipINin2YTYqtmH2YrYptipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn2YjYrdiv2Kkg2KrZh9mK2KbYqSDYp9mE2LnZhti12LEg2KfZhNmF2KzZhdmR2Lkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTZhdmI2KzZhyDYp9mE2K7ZhNmB2Yog2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn2KXZhti02KfYoSDYqti52LHZitmB2KfYqiDZhNi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YjYpdiv2KfYsdiq2YfYpy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICfYpdmG2LTYp9ihINiq2LDYp9mD2LEg2YTYudmG2KfYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YbZgtin2Lcg2LLZhdmG2YrYqSDZhdit2K/Yr9ipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfZitmF2YPZhiDZhNmE2LnZhdmE2KfYoSDYp9mE2KfYt9mE2KfYuSDYudmE2Ykg2KXYtdiv2KfYsdin2KogQ0kg2KfZhNiq2KfYsdmK2K7ZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfZitmF2YPZhiDZhNmE2LnZhdmE2KfYoSDYp9mE2KrYqNiv2YrZhCDZitiv2YjZitin2Ysg2KjZitmGINil2LXYr9in2LHYp9iqIENJINin2YTYqtin2LHZitiu2YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfYp9mE2KjZitin2YbYp9iqINin2YTYp9mB2KrYsdin2LbZitipINmE2KfYs9iq2K7Yr9in2YXZh9inINmB2Yog2KfZhNiz2YXYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4g2YXYq9in2YQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD3Ys9mG2KnYmyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0Pdii2K7YsdibIElUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTLYmyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfYp9mE2KjZitin2YbYp9iqINin2YTYp9mB2KrYsdin2LbZitipINmE2KfYs9iq2K7Yr9in2YXZh9inINmB2Yog2KfZhNiz2YXYqSDZhNi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9iq2LnYsdmK2YEg2KfZhNi52YXZhNmK2KfYqiDYp9mE2KrZiiDZitis2Kgg2KPZhiDZitiq2YjZgdixINio2YfYpyDYstixINin2YTYpdi52K/Yp9iv2KfYqiDZgdmKINmI2K/YrNipINmD2KfYptmGINin2YTYsdin2KjYtyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDYp9mE2LHYrNin2KEg2YXZhNin2K3YuNipINij2YbZhyDZitis2Kgg2KrYs9is2YrZhCDZhdmE2YHYp9iqIEpTINmIIENTUyDYp9mE2KrYp9mE2YrYqSDZhNmH2LDZhyDYp9mE2KXYrNix2KfYodin2Ko6IENvcmUuQ3VzdG9tTGlzdC5jc3PYjCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0Lmpz2IwgQ29yZS5VSS5UYWJsZS5Tb3J0Lmpz2IwgQ29yZS5BZ2VudC5UYWJsZUZpbHRlci5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ9iq2LnYsdmK2YEg2YXYrti32Lcg2YLYp9mE2Kg6OjrZhdis2YXZiNi52Kkg2KPYr9mI2KfYqiDZhNiz2YTYp9iz2YQg2KfZhNil2LXYr9in2LEuINmK2Y/Ys9iq2K7Yr9mFINmB2YLYtyDYpdiw2Kcg2KrZhSDYqti52YrZitmGINmI2K3Yr9ipINiz2YTYs9mE2Kkg2KfZhNil2LXYr9in2LEg2KXZhNmJIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfZitit2K/YryDYqtix2KrZitioINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYp9mB2KrYsdin2LbZiiDZgdmKINmG2KrZitis2Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YfYsNmHINin2YTYudmF2YTZitipLiDZhNij2LnZhNmJOiDYp9mE2KPZgtiv2YUg2YHZiiDYp9mE2KPYudmE2YkuINmE2KPYs9mB2YQ6INin2YTYo9it2K/YqyDZgdmKINin2YTYo9i52YTZiS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9i52YXYr9ipINin2YTYp9mB2KrYsdin2LbZitipINin2YTZhdi52LHZiNi22Kkg2YXZhiBDSXMg2YHZiiDYp9mE2YbYuNix2Kkg2KfZhNi52KfZhdipINmE2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2KfYudiq2YXYp9iv2YvYpyDYudmE2Ykg2YHYptipIENJLiDZitis2Kgg2KPZhiDZitiq2YPZiNmGINmD2YQg2KXYr9iu2KfZhCDZhdmGINin2LPZhSDYp9mE2YHYptipINmI2YXYtdmB2YjZgdipINmF2YYg2KfZhNit2YLZiNmEINin2YTZhdiq2KfYrdipINmE2YTZgdim2Kkg2KfZhNmF2YLYp9io2YTYqS4g2YrYrNioINij2YYg2KrYrdiq2LHZhSDYpdiv2K7Yp9mE2KfYqiDYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSDYp9mE2YXYrti32LcgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn2YrYrdiv2K8g2LnZhdmCINin2YTYudmE2KfZgtin2Kog2KfZhNin2YHYqtix2KfYttmKINin2YTYsNmKINiz2YrYqtmFINi52LHYttmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfZitit2K/YryDYs9mF2Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTZhdi52LHZiNi22Kkg2KfZhNin2YHYqtix2KfYttmK2Kkg2YTYtNin2LTYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICfZitit2K/YryDYs9mF2Kkg2KjYrdirINi52YbYtdixINin2YTYqtmD2YjZitmGINin2YTYp9mB2KrYsdin2LbZitipINin2YTZhdi52LHZiNi22Kkg2YTYtNin2LTYqSDYqNit2Ksg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYuINmF2KvYp9mEOiAi2KfZhNmF2YHYqtin2K0iINmK2KzYqCDYo9mGINmK2K3YqtmI2Yog2LnZhNmJINin2LPZhSDYp9mE2K3ZgtmEINin2YTYr9mK2YbYp9mF2YrZg9mKINmB2Yog2YfYsNmHINin2YTYrdin2YTYqSBcJ1hcJ9iMICLYp9mE2YXYrdiq2YjZiSIg2YrYrNioINij2YYg2YrYrdiq2YjZiiDYudmE2Ykg2YLZitmF2Kkg2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZiiDYrdiz2Kgg2YbZiNi5INin2YTYrdmC2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYjCDYp9mE2YbYtTogXCfZhti1XCfYjCDYp9mE2YLYp9im2YXYqSDYp9mE2YXZhtiz2K/ZhNipOiBcJzFcJ9iMINin2YTYqtin2LHZitiuL9in2YTZiNmC2Ko6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YRHluYW1pY0ZpZWxkX1hUIFRpbWVTbG90U3Rsb3RTdGFydE1pbnV0ZT0wMNibIFNlYXJjaF9EeW5hbWljRmllbGRfWCBUaW1lU2xvdFN0YXJ0U2Vjb25kPTAw2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YIFRpbWVTbG90U3RvcFllYXI9MjAxM9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWCBUaW1lU2xvdFN0b3BNb250aD0wMSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hEeW5hbWljRmllbGRfWFQgVGltZVNsb3RTdG9wRGF5PTI22JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yM9ibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OdibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTsiINmIIFwn2KPZiCBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRfVGltZVBvaW50Rm9ybWF0PXdlZWvYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUX1RpbWVQb2ludFN0YXJ0PdmC2KjZhNibIFNlYXJjaF9EeW5hbWljRmllbGRfWFQgVGltZVBvaW50VmFsdWU9N1wn2JsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTZg9in2KbZhiDYp9mE2YHYsdi52Yog2KfZhNin2YHYqtix2KfYttmKINmE2YTZgdim2KkgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LnZhdiv2Kkg2KfZhNmF2KrYp9it2Kkg2YXZhiBDSSDZgdmKINin2YTZhti42LHYqSDYp9mE2LnYp9mF2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9i52KrZhdin2K/Zi9inINi52YTZiSDZgdim2KkgQ0kuINmK2KzYqCDYo9mGINmK2KrZg9mI2YYg2YPZhCDYpdiv2K7Yp9mEINmF2YYg2KfYs9mFINin2YTZgdim2Kkg2YjZhdi12YHZiNmB2Kkg2YXZhiDYp9mE2K3ZgtmI2YQg2KfZhNmF2KrYp9it2Kkg2YTZhNmB2KbYqSDYp9mE2YXZgtin2KjZhNipLiDZitis2Kgg2KPZhiDYqtit2KrYsdmFINil2K/Yrtin2YTYp9iqINin2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTZhdiu2LfYtyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfZitit2K/YryDYp9ix2KrZgdin2Lkg2YXZg9mI2YYg2YXYrdix2LEg2KfZhNmG2LUg2KfZhNmF2YbYs9mCLiDYrdiv2K8g2YLZitmF2Kkg2LHZgtmF2YrYqSAo2KjZg9iz2YQpINij2Ygg2YbYs9io2Kkg2YXYptmI2YrYqSAo2YbYs9io2YrYqSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINi52K/YryDYp9mE2LXZgdmI2YEg2YTZhdit2LHYsSDYqti52LHZitmBIENJINmB2Yog2YjYp9is2YfYqSDYp9mE2YXYs9ik2YjZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn2YrZj9it2K/YryDYqtix2KrZitioINin2YTYrdin2YTYp9iqINin2YTYudin2LHYttipINmF2YYg2KfZhNij2LnZhNmJICjZhdir2YQg2KfZhNit2YTZgtmK2KkpINil2YTZiSDYp9mE2KPYr9mG2YkgKNmF2KvZhCDYp9mE2YjYuNmK2YHZitipKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfZitit2K/YryDYrdin2YTYp9iqINin2YTZhti02LEg2LDYp9iqINin2YTYtdmE2Kkg2KfZhNiq2Yog2YrZhdmD2YYg2KPZhiDYqtik2KvYsSDZgdmK2YfYpyDYp9mE2KrYsNin2YPYsSDYp9mE2YXYsdiq2KjYt9ipINi52YTZiSDYrdin2YTYqSDYp9mE2YXYrtio2LEg2KfZhNiz2LHZii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfZitit2K/YryDYrdivINin2YTYqNit2Ksg2YTYtNin2LTYqSBBZ2VudElUU01Db25maWdpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn2YrYrdiv2K8g2K3YryDYp9mE2KjYrdirINmE2LTYp9i02KkgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfZitit2K/YryDYrdivINin2YTYqNit2Ksg2YTYtNin2LTYqSBDdXN0b21lcklUU01Db25maWdpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn2YrYrdiv2K8g2K3YryDYp9mE2KjYrdirINmE2LTYp9i02KkgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNij2LnZhdiv2Kkg2KfZhNi42KfZh9ix2Kkg2YXZhiBDSXMg2YHZiiDYt9ix2YrZgtipINin2YTYudix2LYg2KfZhNmF2LnZgtiv2Kkg2YTYrNiv2YjZhCDYp9mE2KfYsdiq2KjYp9i3INmE2KzZhdmK2Lkg2YHYptin2KogQ0kuINil2LDYpyDZhNmFINmK2YPZhiDZh9mG2KfZgyDYpdiv2K7Yp9mE2Iwg2YrYqtmFINi52LHYtiDYp9mE2KPYudmF2K/YqSDYp9mE2KfZgdiq2LHYp9i22YrYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYo9i52YXYr9ipINin2YTZhdi52LHZiNi22Kkg2YXZhiBDSSDZgdmKINi32LHZitmC2Kkg2KfZhNi52LHYtiDYp9mE2YXYudmC2K/YqSDZhNis2K/ZiNmEINin2YTYp9ix2KrYqNin2LfYjCDYp9i52KrZhdin2K/Yp9mLINi52YTZiSDZgdim2KkgQ0kuINmK2KzYqCDYo9mGINmK2YPZiNmGINmD2YQg2KXYr9iu2KfZhCDZhdiz2KjZiNmC2YvYpyDYqNin2LPZhSDYp9mE2YHYptipINmI2YbZgti32KrZitmGICjYo9mKINin2YTZg9mF2KjZitmI2KrYsTo6Ojo6KS4g2YfZhtin2YMg2LnYr9ivINmC2YTZitmEINmF2YYg2LPZhdin2KogQ0ktQXR0cmlidXRlcyDYp9mE2YXYtNiq2LHZg9ipINio2YrZhiDYrNmF2YrYuSBDSSAo2YXYq9in2YQg2YTZgdim2Kkg2KfZhNmD2YXYqNmK2YjYqtixOiDYp9mE2K3Yp9iz2YjYqDo62KfZhNin2LPZhdiMINin2YTYrdin2LPZiNioOjpDdXJEZXBsU3RhdGXYjCDYp9mE2K3Yp9iz2YjYqDo6Q3JlYXRlVGltZSkuINmE2KXYuNmH2KfYsSDYs9mF2KfYqiBDSS1BdHRyaWJ1dGVzINin2YTZgdix2K/ZitipINmD2YXYpyDZh9mKINmF2LnYsdmB2Kkg2YHZiiDYqti52LHZitmBIENJLURlZmluaXRpb27YjCDZitis2Kgg2KfYs9iq2K7Yr9in2YUg2KfZhNmF2K7Yt9i3INin2YTYqtin2YTZiiAo2YXYq9in2YQg2YTZgdim2Kkg2KfZhNmD2YXYqNmK2YjYqtixKTog2KfZhNmD2YXYqNmK2YjYqtixOjrYp9mE2YLYsdi1INin2YTYtdmE2Kg6OjHYjCDYp9mE2YPZhdio2YrZiNiq2LE6Otin2YTZgtix2LUg2KfZhNi12YTYqDo6MTo62KfZhNiz2LnYqTo6MdiMINin2YTZg9mF2KjZitmI2KrYsTog2KfZhNmC2LHYtSDYp9mE2LXZhNioOjoy2Iwg2KfZhNmD2YXYqNmK2YjYqtixOiDYp9mE2YLYsdi1INin2YTYtdmE2Kg6OjI6INin2YTYs9i52Kk6OjEuINmB2Yog2K3Yp9mE2Kkg2LnYr9mFINmI2KzZiNivINil2K/Yrtin2YQg2YTZgdim2KkgQ0nYjCDZitiq2YUg2LnYsdi2INin2YTYo9i52YXYr9ipINin2YTYp9mB2KrYsdin2LbZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYudmG2KfYtdixINin2YTZhdiq2KfYrdipICLZhNmE2KXYrNix2KfYoSIg2YHZiiDYp9mE2YXYs9iq2YjZiSDYp9mE2KvYp9mE2Ksg2YXZhiDYqNmG2YrYqSBBQ0wg2YTYudmG2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2YrYrdiv2K8g2KfZhNi52YbYp9i12LEg2KfZhNmF2KrZiNmB2LHYqSDZgdmKINin2YTZhdiz2KrZiNmJINin2YTYo9mI2YQg2YXZhiDYqNmG2YrYqSBBQ0wg2YTYudmG2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINin2YTYudmG2KfYtdixINin2YTZhdiq2YjZgdix2Kkg2YHZiiDYp9mE2YXYs9iq2YjZiSDYp9mE2KvYp9mG2Yog2YXZhiDYqNmG2YrYqSBBQ0wg2YTYudmG2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ9mK2K3Yr9ivINmG2YjYuSDYp9mE2KfYsdiq2KjYp9i3ICjYp9mE2YXYs9mF2Ykg2YXZhiDZhdmG2LjZiNixINin2YTYqtiw2YPYsdipKSDYp9mE2LDZiiDZitmF2YPZhiDYo9mGINmK2KTYq9ixINi52YTZiSDYrdin2YTYqSBDSSDYp9mE2YXYsdiq2KjYty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfZitit2K/YryDZhtmI2Lkg2KfZhNiq2LDZg9ix2Kkg2KfZhNiq2Yog2YrZhdmD2YYg2KPZhiDYqtik2KvYsSDYudmE2Ykg2K3Yp9mE2Kkg2KfZhNmF2K7YqNixINin2YTZhdiz2KrZgtmEINin2YTZhdix2KrYqNi3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ9iq2K3Yr9mK2Ksg2KfZhNiq2LnYsdmK2YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9it2LDZgSDYudmG2LXYsSDYp9mE2KrZh9mK2KbYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICfYr9mK2KjZhNiz2KrZitiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfZhNmI2YYg2K3Yp9mE2Kkg2KfZhNmG2LTYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2YbYtNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9mF2YPYsdix2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2Kkg2YTYrdiv2Ksg2KfZhNit2YLZhCDYp9mE2K/ZitmG2KfZhdmK2YPZiiDYp9mE2KrZiiDYqtit2K/YryDYqti52LHZitmB2KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGINi52YTZiSDYo9mG2YfYpyDYutmK2LEg2YXYqtiy2KfZhdmG2KnYjCDYpdiw2Kcg2YPYp9mG2Kog2KrYrdiq2YjZiiDYudmE2Ykg2K3ZgtmI2YQg2K/ZitmG2KfZhdmK2YPZitipINmF2KrYutmK2LHYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYrdmC2YjZhCDYp9mE2K/ZitmG2KfZhdmK2YPZitipINin2YTZhdi52LHZiNi22Kkg2YHZiiDYtNin2LTYqSDYrdmC2YQg2KXYr9in2LHYqSDYrtiv2YXYp9iqINiq2YPZhtmI2YTZiNis2YrYpyDYp9mE2YXYudmE2YjZhdin2Kog2YjYp9mE2KfYqti12KfZhNin2Kog2KfZhNil2LbYp9mB2Yog2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KrYuNmH2LEg2KfZhNit2YLZiNmEINin2YTYr9mK2YbYp9mF2YrZg9mK2Kkg2YHZiiDYtNin2LTYqSDYp9mE2YbYuNix2Kkg2KfZhNi52KfZhdipINi52YTZiSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2K3ZgtmI2YQg2KfZhNiv2YrZhtin2YXZitmD2YrYqSDYp9mE2KrZiiDYqti42YfYsSDZgdmKINi02KfYtNipINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfYqtmF2YPZitmGINmF2YrYstipINin2YTYpdis2LHYp9ih2KfYqiDYp9mE2YXYrNmF2LnYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmE2YTZiNin2KzZh9ipINin2YTYo9mF2KfZhdmK2Kkg2YTZhNmI2YPZitmEINmE2YTYudmF2YQg2LnZhNmJINij2YPYq9ixINmF2YYg2LnZhti12LEg2KrZg9mI2YrZhiDZiNin2K3YryDZgdmKINmD2YQg2YXYsdipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn2KrZhdmD2YrZhiDZhdmK2LLYqSDYp9mE2KXYrNix2KfYoSDYp9mE2YXYrNmF2Lkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmC2Lcg2YTZhNmF2KzZhdmI2LnYp9iqINin2YTZhdiv2LHYrNipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICfYqtmF2YPZitmGL9iq2LnYt9mK2YQg2YjYuNmK2YHYqSDYp9mE2KrYrdmC2YIg2YXZhiDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTSDYqNit2KvYp9mLINi52YYg2KPYs9mF2KfYoSDZgdix2YrYr9ipLiDZgtio2YQg2KrZhdmD2YrZhiDZh9iw2Kcg2KfZhNiu2YrYp9ix2Iwg2YrYrNioINi52YTZitmDINin2YTYqtit2YLZgiDZhdmGINin2YTZhti42KfZhSDYp9mE2K7Yp9i1INio2YMg2KjYrdir2YvYpyDYudmGINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNmF2YjYrNmI2K/YqSDYqNin2YTZgdi52YQg2LDYp9iqINin2YTYo9iz2YXYp9ihINin2YTZhdmD2LHYsdipLiDZitmF2YPZhtmDINin2YTZgtmK2KfZhSDYqNiw2YTZgyDYqNin2LPYqtiu2K/Yp9mFINij2YXYsSDZiNit2K/YqSDYp9mE2KrYrdmD2YUgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfZiNit2K/YqSDYp9mE2K3Yr9irINin2YTZhtmF2LfZitipINmE2KrYudmK2YrZhiDYrdin2YTYqSDYp9mE2LnZhti12LEg2KfZhNiq2YPZiNmK2YbZiiDYudmE2Ykg2LHYp9io2Lcg2KrYsNmD2LHYqS3YqtmD2YjZitmGLdi52YbYtdixLdiq2YPZiNmK2YYt2LHYp9io2LcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ9it2YLZiNmEINmB2YfYsdizINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YbYjCDYp9mE2YXYs9iq2K7Yr9mF2Kkg2YTZhNio2K3YqyDYudmGINin2YTZhti1INin2YTZg9in2YXZhC4g2YrYqtmFINiq2K7YstmK2YYg2KfZhNit2YLZiNmEINij2YrYttmL2KfYjCDZiNmE2YPZhtmH2Kcg2YTZitiz2Kog2KXZhNiy2KfZhdmK2Kkg2YTZhNmI2LjZitmB2Kkg2KfZhNi52KfZhdipLiDZitmF2YPZhiDYqti52LfZitmEINil2K/Ysdin2Kwg2KfZhNmF2LHZgdmC2KfYqiDYudmGINi32LHZitmCINiq2LnZitmK2YYg2KfZhNil2K/Yrtin2YQg2KXZhNmJIDAg2KPZiCDYrdiw2YHZhy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ9in2YTYrdmC2YjZhCDYp9mE2YXYrtiy2YbYqSDZgdmKINmB2YfYsdizINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNiq2Yog2KrZj9iz2KrYrtiv2YUg2YTYo9i02YrYp9ihINij2K7YsdmJINil2YTZiSDYrNin2YbYqCDYudmF2YTZitin2Kog2KfZhNio2K3YqyDYudmGINin2YTZhti1INin2YTZg9in2YXZhC4g2YTZhNmI2LjYp9im2YEg2KfZhNmD2KfZhdmE2Kkg2KzZhdmK2Lkg2KfZhNit2YLZiNmEINil2YTYstin2YXZitipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ9mE2YPZhCDYrtiv2YXYqSDZiNmK2KggKNmF2YHYqtin2K0pINmK2YXZg9mGINiq2K3Yr9mK2K8g2YXYtdmB2YjZgdipINmF2YYg2KfZhNmB2KbYp9iqICjYp9mE2YLZitmF2KkpINin2YTYqtmKINmK2KrZhSDYqtmC2YrZitivINin2YTYp9iz2KrZitix2KfYryDYudmE2YrZh9inLiDYqNin2YTZhtiz2KjYqSDZhNis2YXZiti5INin2YTZgdim2KfYqiDYp9mE2YXYrtiq2KfYsdip2Iwg2KPZiCDYrNmF2YrYuSDYp9mE2YHYptin2Kog2KfZhNmF2YjYrNmI2K/YqSDZitis2Kgg2KfYrtiq2YrYp9ixINiz2YXYp9iqINin2YTYqti52LHZitmBINmB2Yog2KrZg9mI2YrZhiDYp9mE2YXYs9iq2K/YudmKLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfYqtiz2KzZitmEINin2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSBHZW5lcmljSW50ZXJmYWNlINmE2LfYqNmC2Kkg2YXYs9iq2K/YudmKIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfYqtiz2KzZitmEINin2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSBHZW5lcmljSW50ZXJmYWNlINmE2LfYqNmC2Kkg2YXYs9iq2K/YudmKIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn2KrYs9is2YrZhCDYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2KkgR2VuZXJpY0ludGVyZmFjZSDZhNi32KjZgtipINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ9i52YbYtdixINin2YTYqtmD2YjZitmGIElUU01JdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAn2YbYuNix2Kkg2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINiq2YPZiNmK2YYgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfYrdin2YTYqSDYp9mE2K3Yp9iv2KsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2KrYttmF2YYg2K3Yp9mE2KfYqiDYp9mE2YbYtNixINmB2Yog2KfZhNio2K3YqyDYudmGINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2LnZhdmK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2KrYttmF2YYg2K3Yp9mE2KfYqiDYp9mE2K3ZiNin2K/YqyDZgdmKINin2YTYqNit2Ksg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfYp9mE2K3YryDYp9mE2KPZgti12Ykg2YTYudiv2K8g2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2KrZiiDYs9mK2KrZhSDYudix2LbZh9inINmB2Yog2YbYqtmK2KzYqSDZh9iw2Ycg2KfZhNi52YXZhNmK2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn2KfZhNmI2K3Yr9ipINin2YTZhtmF2LfZitipINmE2YTYqtit2YLZgiDZhdmGINin2YTZhdis2YXZiNi52Kkg2KfZhNmF2LPYpNmI2YTYqSDYudmGINmB2KbYqSDZhdinLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ9in2YTZiNit2K/YqSDYp9mE2YbZhdi32YrYqSDZhNmE2KrYrdmC2YIg2YXZhiDYp9mE2YXYrNmF2YjYudipINin2YTZhdiz2KTZiNmE2Kkg2LnZhiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2Kkg2YTYpdmG2LTYp9ihINil2K3Ytdin2KbZitin2Kog2LnZhtin2LXYsSDYqtmD2YjZitmGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAn2YjYrdiv2Kkg2KfZhNin2LPZhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn2YjYrdiv2Kkg2KfZhNij2LHZgtin2YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2LnYr9ivINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNiq2Yog2LPZitiq2YUg2LnYsdi22YfYpyDZgdmKINmD2YQg2LXZgdit2Kkg2YXZhiDZhtiq2KfYptisINin2YTYqNit2Ksg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2LnYr9ivINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2KfZhNiq2Yog2LPZitiq2YUg2LnYsdi22YfYpyDZgdmKINmD2YQg2LXZgdit2Kkg2YXZhiDZhtiq2KfYptisINin2YTYqNit2Ksg2YHZiiDZiNin2KzZh9ipINin2YTYudmF2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn2KfZhNmD2KfYptmG2KfYqiDYp9mE2KrZiiDZitis2Kgg2KfZhNio2K3YqyDYudmG2YfYp9iMINmI2LnYr9ivINin2YTYpdiv2K7Yp9mE2KfYqiDZiNin2YTYs9mF2KfYqiDYp9mE2KrZiiDZitis2Kgg2KXYuNmH2KfYsdmH2KcuINmK2KzYqCDYqtiu2LLZitmGINiz2YXYp9iqIENvbmZpZ0l0ZW0g2KjYtNmD2YQg2LXYsdmK2K0g2LnYqNixIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ9mG2LjYsdipINi52KfZhdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2YXYudmE2YXYp9iqINin2YTYrtin2LXYqSDYqNmB2KbYp9iqINmB2KbYp9iqINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmF2LHYtNit2KfYqiDYp9mE2KPYudmF2K/YqSDZgdmKINin2YTZhti42LHYqSDYp9mE2LnYp9mF2Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2LXYutmK2LEuINmK2LHYrNmJINmF2YTYp9it2LjYqTog2KrYudmK2YrZhiBcJ9mG2LTYt1wnINil2YTZiSAwINiz2YrZhdmG2Lkg2KfZhNmI2YPZhNin2KEg2YHZgti3INmF2YYg2KrYrdix2YrYsSDYpdi52K/Yp9iv2KfYqiDZh9iw2Ycg2KfZhNmF2KzZhdmI2LnYqSDZgdmKINiq2YHYttmK2YTYp9iq2YfZhSDYp9mE2LTYrti12YrYqdiMINmI2YTZg9mG2Ycg2LPZitiz2YXYrSDZhNmE2YXYs9ik2YjZhNmK2YYg2KjYqtit2LHZitixINil2LnYr9in2K/Yp9iqINmF2LPYqtiu2K/ZhSDYotiu2LEg2YbZitin2KjYqdmLINi52YYg2YXYs9iq2K7Yr9mFINii2K7YsS4g2KfYs9iq2K7Yr9mFIFwnUHJlZmVyZW5jZUdyb3VwXCcg2YTZhNiq2K3Zg9mFINmB2Yog2KfZhNmF2YbYt9mC2Kkg2KfZhNiq2Yog2YrYrNioINij2YYg2KrYuNmH2LEg2YHZitmH2Kcg2YfYsNmHINin2YTYpdi52K/Yp9iv2KfYqiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmF2LPYqtiu2K/ZhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDZhNmI2YYg2K3Yp9mE2KfYqiDYp9mE2YbYtNixINmB2Yog2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDZhNit2KfZhNin2Kog2KfZhNmG2LTYsSDZgdmKINi52LHYtiDYp9mE2KrZgdi22YrZhNin2Kog2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn2KfZhNmF2LnZhNmF2KfYqiDYp9mE2K7Yp9i12Kkg2KjYo9mF2KvZhNipINmF2KzZhdmI2LnYp9iqINin2YTYo9iw2YjZhtin2Kog2KfZhNiu2KfYtdipINio2LPZhdin2Kog2KfZhNmD2KrYp9mE2YjYrCDYp9mE2LnYp9mFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDZiNit2K/YqSDYp9mE2KfYs9mFINin2YTZhtmF2LfZitipINmE2YHYptin2Kog2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZgdi22YrZhNin2Kog2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2Kkg2YTZhNix2YLZhSDZhNmB2KbYp9iqINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YHYttmK2YTYp9iqINmE2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDYp9mE2LXZgdit2KfYqiAo2KfZhNiq2Yog2KrYuNmH2LEg2YHZitmH2Kcg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDYp9mE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2Kkg2YTYs9mE2LPZhNipINin2YTYpdi12K/Yp9ixINmE2YHYptin2Kog2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINi32LHZitmC2Kkg2LnYsdi2INin2YTYqtmB2LbZitmE2KfYqiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2LnZhNmF2KfYqiDZhNmE2YjYrdiv2Kkg2KfZhNmG2YXYt9mK2Kkg2YTZhdis2YXZiNi52Kkg2KPYr9mI2KfYqiDZgtin2YTYqCDYs9mE2LPZhNipINin2YTYpdi12K/Yp9ixINmE2YHYptin2Kog2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZgdi22YrZhNin2Kog2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YXYudmE2YXYp9iqINmF2LTYutmEINin2YTYpdi12K/Yp9ixINmE2YHYptin2Kog2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZgdi22YrZhNin2Kog2YTZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICfZitmC2YjZhSDYqNiq2YbZgdmK2LAg2KfZhNil2KzYsdin2KEg2KfZhNmF2YPZiNmR2YYg2YTZg9mEINit2K/YqyAo2YPZhdiz2KrYr9i52YopINmE2YPZhCDYrtiv2YXYqSDZiNmK2Kgg2YXZg9mI2ZHZhtipLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn2YXYrNmF2YjYudipINin2YTYpdiw2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYpdis2LHYp9ihINil2LHZgdin2YIg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYudmG2LXYsSDYqtmD2YjZitmGIElUU00g2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYp9mE2KjYrdirINi52YYg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2KfZhNio2K3YqyDYudmGINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNi52YXZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINi52LHYtiDYtNis2LHYqSDYudmG2KfYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYp9mE2KPYsNmI2YbYp9iqINin2YTZhdi32YTZiNio2Kkg2YTYp9iz2KrYrtiv2KfZhSDYtNin2LTYqSDYqtmD2KjZitixINi52YbYtdixINiq2YPZiNmK2YYgSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINil2LbYp9mB2Kkg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINi52YbYp9i12LEg2KrZg9mI2YrZhiBJVFNNINin2YTZhdis2YXYudipINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINiq2K3YsdmK2LEg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9in2YTYo9iw2YjZhtin2Kog2KfZhNmF2LfZhNmI2KjYqSDZhNin2LPYqtiu2K/Yp9mFINi02KfYtNipINi52YbYtdixINiq2YPZiNmK2YYg2YXYrdmB2YjYuNin2KogSVRTTSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KfZhNij2LDZiNmG2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2KfYs9iq2K7Yr9in2YUg2LTYp9i02Kkg2LnZhti12LEg2KrZg9mI2YrZhiBJVFNNINmE2YTYt9io2KfYudipINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfYp9mE2KfZhdiq2YrYp9iy2KfYqiDYp9mE2YXYt9mE2YjYqNipINmE2K3YsNmBINi52YbYp9i12LEg2KfZhNiq2YPZiNmK2YYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn2LnZhtin2LXYsSDYqtmD2YjZitmGINin2YTYqNit2KsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfZgtmFINio2KrYudmK2YrZhiDYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2YTZhdiu2KjYsSDYrNmG2KfYptmKINiq2YTZgtin2KbZitin2Ysg2LnZhtivINix2KjYtyDYqtiw2YPYsdipINio2YXYrtio2LEg2KzZhtin2KbZii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZitmC2YjZhSDYqNiq2LnZitmK2YYg2K3Yp9mE2Kkg2KfZhNmG2LTYsSDZgdmKINin2YTYtNin2LTYqSDYp9mE2YXYrNmF2LnYqSDZhNi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2YLZiNmFINio2KrYudmK2YrZhiDYrdin2YTYqSDYp9mE2K3Yp9iv2Ksg2YHZiiDYp9mE2LTYp9i02Kkg2KfZhNmF2KzZhdi52Kkg2YTYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDYp9mE2K7Yp9i1INio2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2LfZi9inINmB2Yog2KfZhNmC2KfYptmF2Kkg2YrYs9mF2K0g2KjYsdio2Lcg2LnZhti12LEg2KrZg9mI2YrZhiDZhdi5INmD2KfYptmGINii2K7YsSDZgdmKINi52LHYtiDYqtmD2KjZitixINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KXYuNmH2KfYsSDYsdin2KjYtyDZgdmKINin2YTZgtin2KbZhdipINmE2YTZiNi12YjZhCDYpdmE2Ykg2YXYrdmB2YjYuNin2Kog2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZhti42LHYqSDYudin2YXYqSDYudmE2Ykg2LnZhti12LEg2KfZhNiq2YPZiNmK2YYg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YrYudix2LYg2LHYp9io2LfZi9inINmB2Yog2KfZhNmC2KfYptmF2Kkg2YTZhNmI2LXZiNmEINil2YTZiSDZhdit2YHZiNi42KfYqiDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZg9io2YrYsSDYp9mE2K7Yp9i1INio2Ycg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYt9in2Ysg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNit2LDZgSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmD2KjZitixL9in2YTYqti12LrZitixINin2YTYrtin2LUg2KjZhyDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn2KXYuNmH2KfYsSDYsdin2KjYtyDZgdmKINin2YTZgtin2KbZhdipINmE2LnYsdi2INix2YjYp9io2Lcg2LnZhtin2LXYsSDYp9mE2KrZg9mI2YrZhiDZg9i32LHZitmC2Kkg2LnYsdi2INin2YTYtNis2LHYqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYpdi42YfYp9ixINin2LHYqtio2KfYtyDZgdmKINin2YTZgtin2KbZhdipINmE2KrZg9ix2KfYsSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2YbYuNix2Kkg2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi3INmB2Yog2KfZhNmC2KfYptmF2Kkg2YTYqtmD2LHYp9ixINi52YbYtdixINiq2YPZiNmK2YYg2YHZiiDYudix2LYg2KfZhNiq2YPYqNmK2LEg2KfZhNiu2KfYtSDYqNmHINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDYsdin2KjYt9in2Ysg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNiq2K3YsdmK2LEg2LnZhti12LEg2KrZg9mI2YrZhiDZgdmKINi52LHYtiDYp9mE2KrZg9io2YrYsS/Yp9mE2KrYtdi62YrYsSDYp9mE2K7Yp9i1INio2Ycg2YHZiiDZiNin2KzZh9ipINin2YTZiNmD2YrZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9il2LjZh9in2LEg2LHYp9io2Lcg2YHZiiDYp9mE2YLYp9im2YXYqSDZhNmE2LHYrNmI2Lkg2YHZiiDYudix2LYg2KrZg9io2YrYsSDYudmG2LXYsSDYp9mE2KrZg9mI2YrZhiDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi32YvYpyDZgdmKINin2YTZgtin2KbZhdipINmE2LfYqNin2LnYqSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2LnYsdi2INin2YTYqtmD2KjZitixL9in2YTYqti12LrZitixINin2YTYrtin2LUg2KjZhyDZhNmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mK2LnYsdi2INix2KfYqNi32KfZiyDZgdmKINin2YTZgtin2KbZhdipINmE2KrZg9io2YrYsSDYudmG2LXYsSDYqtmD2YjZitmGINmB2Yog2YbYuNix2Kkg2LnYp9mF2Kkg2LnZhNmJINi52YbYtdixINin2YTYqtmD2YjZitmGINmB2Yog2YjYp9is2YfYqSDYp9mE2YjZg9mK2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfZiti52LHYtiDZhdit2YHZiNi42KfYqiDYudmG2KfYtdixINin2YTYqtmD2YjZitmGICjYqtix2KrZitioINi52YPYs9mKKSDZgdmKINmI2KfYrNmH2Kkg2KfZhNmI2YPZitmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfYp9mE2YHYptipINin2YTYp9mB2KrYsdin2LbZitipINin2YTYqtmKINiq2LjZh9ix2Iwg2KXYsNinINmE2YUg2YrYqtmFINiq2K3Yr9mK2K8g2KPZiiDZgdim2KkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfZhdi52LHZkdmBINi52YbYtdixINin2YTYqtmD2YjZitmG2Iwg2LnZhNmJINiz2KjZitmEINin2YTZhdir2KfZhCBDb25maWdJdGVtI9iMIE15Q29uZmlnSXRlbSMuINin2YTYp9mB2KrYsdin2LbZiiDZh9mIIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn2YrZgtmI2YUg2KjYqti02LrZitmEINmF2LPYqtiv2LnZiiBDb25maWdJdGVtRmV0Y2gg2KrZhNmC2KfYptmK2YvYpy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9iq2LnYqNmK2LEg2LPZhNiz2YTYqSDYp9mE2KXYtdiv2KfYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfZiNit2K/YqSDYs9mE2LPZhNipINin2YTYpdi12K/Yp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ9mF2LTYutmEINin2YTYpdi12K/Yp9ixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfZhdinINil2LDYpyDZg9in2YYg2YrZhdmD2YYg2KrYrNmG2Kgg2KrZhtmB2YrYsCBDb25maWdJdGVtQUNMINi52YYg2LfYsdmK2YIg2KfZhNiq2K3ZgtmCINmF2YYg2KrYqNi52YrYp9iqINin2YTYrdmC2YjZhCDYp9mE2YXYrtiy2YbYqSDZhdik2YLYqtmL2KcuINmK2YXZg9mGINij2YYg2YrYpNiv2Yog2LDZhNmDINil2YTZiSDYqtit2LPZitmGINij2YjZgtin2Kog2KrYrdmF2YrZhCDYp9mE2YbZhdin2LDYrNiMINmI2YTZg9mGINmK2KzYqCDYqti52LfZitmE2YfYjCDYpdiw2Kcg2YPYp9mGINiz2YrYqtmFINin2LPYqtiu2K/Yp9mFINmI2K3Yr9in2KogQUNMTW9kdWxlcyDZhNmAIElUU01Db25maWdvbmZpZ0l0ZW0tINmIIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfZhdinINmH2Yog2KfZhNmF2LnZhNmI2YXYp9iqINin2YTYudin2YXYqSDYp9mE2KrZiiDYqti42YfYsSDZgdmKINin2YTYudmG2YjYp9mGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9in2YTZgdim2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn2LnYp9mE2YXZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ9mF2Kcg2KjYudivINin2YTYpdmG2KrYp9is2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn2YXYpyDZgtio2YQg2KfZhNil2YbYrNin2KgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ9mF2YbYqtis2KknOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LjUg2KjZiNi12KkgKDQ0LjQ1INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxINio2YjYtdipICg1My4zNCDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNi4yNSDYqNmI2LXYqSAoNjYuNjgg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMS41INio2YjYtdipICg4MC4wMSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICfYrdin2YXZhCAxOSDYqNmI2LXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEuNzUg2KjZiNi12KkgKDQuNDUg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSDYqNmI2LXYqSAoODguOSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICfYsdmBIDIxINio2YjYtdipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzguNSDYqNmI2LXYqSAoOTcuNzkg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAn2LHZgSAyMyDYqNmI2LXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjYg2KjZiNi12KkgKDYwMCDZhdmFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIg2KjZiNi12KkgKDEwNi42OCDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcuMjUg2KjZiNi12KkgKDEyMC4wMiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMy41INio2YjYtdipICg4Ljg5INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLjUg2KjZiNi12KkgKDEzMy4zNSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjUg2KjZiNi12KkgKDgwMCDZhdmFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcuNzUg2KjZiNi12KkgKDE0Ni42OCDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LjQg2KjZiNi12KkgKDkwMCDZhdmFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMg2KjZiNi12KkgKDE2MC4wMiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS40INio2YjYtdipICgxMDAwINmF2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OC4yNSDYqNmI2LXYqSAoMTczLjM1INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUuMjUg2KjZiNi12KkgKDEzLjM0INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLjUg2KjZiNi12KkgKDE4Ni42OSDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuMyDYqNmI2LXYqSAoMTEwMCDZhdmFKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4Ljc1INio2YjYtdipICgyMDAuMDIg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMiDYqNmI2LXYqSAoMTIwMCDZhdmFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQg2KjZiNi12KkgKDIxMy4zNiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3INio2YjYtdin2KogKDE3Ljc4INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDguNzUg2KjZiNi12KkgKDIyLjIzINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLjUg2KjZiNi12KkgKDI2LjY3INiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMi4yNSDYqNmI2LXYqSAoMzEuMTIg2LPZhSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0INio2YjYtdipICgzNS41NiDYs9mFKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUuNzUg2KjZiNi12KkgKDQwLjAxINiz2YUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn2KfZhNmF2K3Yp9iz2KjYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ9iq2K7YtdmK2LUg2KfZhNi52YbZiNin2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ9in2YTZhdiv2YrYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfZh9in2KrZgSDYqtmG2KfYuNix2YonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfZhtmI2Lkg2KfZhNis2YfYp9iyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn2LPYudipINin2YTYqNi32KfYsdmK2KkgKNii2YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ9mG2YjYuSDYp9mE2KjYt9in2LHZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn2KfZhNio2YbYp9ihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfZiNin2KzZh9ipINin2YTYrdin2YHZhNipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfZiNit2K/YqSDYp9mE2YXYudin2YTYrNipINin2YTZhdix2YPYstmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAn2YHYptipINmI2K3Yr9ipINin2YTZhdi52KfZhNis2Kkg2KfZhNmF2LHZg9iy2YrYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAn2KfZhNiz2LnYqSAo2LrZiti62KfYqNin2YrYqiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfYp9mE2LPYudipINmE2YPZhCDYqNi32KfZgtipINix2LPZiNmF2KfYqic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ9ix2YLZhSDYp9mE2KjYt9in2YLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ9mC2KfYsdimINin2YTYqNi32KfZgtin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAn2YbZiNi5INin2YTYqNi32KfZgtipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfYtNmH2KfYr9in2Kog2KfZhNi52YXZitmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ9io2LHZhtin2YXYrCDYp9mE2LnZhdmK2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn2YHYptipINin2YTYudmF2YrZhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfYudmC2KfYsdioINin2YTYs9in2LnYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn2LPYsdi52Kkg2KfZhNiz2KfYudipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfYtNmH2KfYr9in2Kog2KrZiNmC2YrYuSDYp9mE2LHZhdmI2LIg2KfZhNmF2LTZgdix2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ9mH2KfYqtmBINin2YTZhdik2KrZhdixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn2KfZhNin2KrZgdin2YLZitipINin2YTYp9iz2KrYtNin2LHZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICfYp9iq2LXZhCDYqNmG2KcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ9in2KrYtdmEINio2KfZhNmF2YjYsti5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn2KXYr9in2LHYqSDYp9mE2K3Yp9mI2YrYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAn2KfZhNi52YLYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn2YbZiNi5INin2YTYudmC2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICfZgdiq2LHYqSDYp9mE2LnZgtivINmF2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn2YHYqtix2Kkg2KfZhNi52YLYryDYrdiq2YknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn2YfYp9iq2YEg2YTYp9iz2YTZg9mKICjZh9in2KrZgSBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfZiNit2K/YqSDYp9mE2KrZg9mE2YHYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ9i52K/YryDYp9mE2KrYsdin2K7Ziti1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfYqtin2LHZitiuINin2YTYpdmG2LTYp9ihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICfYsdmBINmF2K7Ytdi1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQINmF2K3YrNmI2LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ9iu2KfYr9mFINiu2YjYp9iv2YUgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICfYqtin2LHZitiuINin2YTZgdin2KrZiNix2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ9iq2KfYsdmK2K4g2KfZhNi32YTYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAn2KrYp9ix2YrYriDYp9mE2LbZhdin2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn2KrYp9ix2YrYriDYp9mE2KXYtdiv2KfYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn2LPYt9itINin2YTZhdmD2KrYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ9mF2YbZgdiwINin2YTYudix2LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfYtNmH2KfYr9in2Kog2KrZiNmC2YrYuSDYp9mE2YXYs9iq2YbYr9in2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICfYsdmBIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ9i02YfYp9iv2KfYqiDYp9mE2KjYsdmK2K8g2KfZhNil2YTZg9iq2LHZiNmG2YogKNi02YfYp9iv2KfYqiBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ9i52YLYryDYp9mE2LnZhdmEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn2LnZhtmI2KfZhiBJUCDYp9mE2YbZh9in2KbZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ9mG2YfYp9mK2Kkg2KfZhNiv2LnZhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ9iq2KfYsdmK2K4g2KfZhtiq2YfYp9ihINin2YTYtdmE2KfYrdmK2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ9mF2K3YsdmDINij2YLYsdin2LUg2LXZhNio2Kkg2K7Yp9ix2KzZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ9is2K/Yp9ixINin2YTYrdmF2KfZitipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn2KfZhNio2LHYp9mF2Kwg2KfZhNir2KfYqNiq2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICfYqtiu2LLZitmGINin2YTYt9in2YLYqSDZgdmKINiv2YjZhNin2Kgg2KfZhNmF2YjYp9iy2YbYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ9i52KfZhdmEINin2YTYtNmD2YQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ9in2KrZgdin2YLZitipINin2YTYp9mF2KrZitin2LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfYqNix2YbYp9mF2Kwg2YXYrNin2YbZiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfZhdi52YTZiNmF2KfYqiDYudin2YXYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ9io2LfYp9mC2KfYqiDYp9mE2LHYs9mI2YXYp9iqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICfYqNi32KfZgtipINin2YTYsdiz2YjZhdin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfYp9mE2KPYrNmH2LLYqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ9mG2YXZiNiw2Kwg2KfZhNij2KzZh9iy2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAn2YjYstmGINin2YTYo9is2YfYstipJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfYs9mF2KfYudipINin2YTYsdij2LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICfYqNix2YjYqtmI2YPZiNmEIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ9il2K/Yp9ix2Kkg2KfZhNmH2YjZitipINmI2KfZhNmI2LXZiNmEIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICfYsdmC2YUg2KfZhNmF2K7YstmI2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfYqtmD2KfZhNmK2YEg2KfZhNi52KfZg9izJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn2LHZgtmFINin2YTZgdin2KrZiNix2KknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfZhNmI2K3YqSDYp9mE2YXZgdin2KrZititJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ9i02KfYtNipIExDRCAo2LTYp9i02Kkg2KfZhNi52LHYtiDYp9mE2KjZhNmI2LHZitipINin2YTYs9in2KbZhNipKSc7CiAgICAkU2VsZi0+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+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydSdW4gU2VhcmNoJ30gPSAn0KHRgtCw0YDRgtC40YDQsNC50YLQtSDQotGK0YDRgdC10L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfQlNCwINGC0YrRgNGB0Lgg0Lgg0LIg0L/RgNC10LTQuNGI0L3QuNGC0LUg0LLQtdGA0YHQuNC4Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+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+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+INC90LAg0LrQu9Cw0YHQsCDQtSDQstGK0LfQvdC40LrQvdCw0LvQsCDQs9GA0LXRiNC60LAuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDQodC60YDQuNGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtINC/0L7QutCw0LfQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9Cf0L7Qt9Cy0L7Qu9GP0LLQsCDRgNCw0LfRiNC40YDQtdC90Lgg0YPRgdC70L7QstC40Y8g0LfQsCDRgtGK0YDRgdC10L3QtSDQv9GA0Lgg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4g0KEg0YLQsNC30Lgg0YTRg9C90LrRhtC40Y8g0LzQvtC20LXRgtC1INC00LAg0YLRitGA0YHQuNGC0LUg0L3QsNC/0YDQuNC80LXRgCDQuNC80LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQsCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0YEg0YLQsNC60LjQstCwINGD0YHQu9C+0LLQuNGPINC60LDRgtC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQn9C+0LfQstC+0LvRj9Cy0LAg0YDQsNC30YjQuNGA0LXQvdC4INGD0YHQu9C+0LLQuNGPINC30LAg0YLRitGA0YHQtdC90LUg0LIg0YLRitGA0YHQtdC90LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQuCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQutC70LjQtdC90YLQsC4g0KEg0YLQsNC30Lgg0YTRg9C90LrRhtC40Y8g0LzQvtC20LXRgtC1INC00LAg0YLRitGA0YHQuNGC0LUg0L3QsNC/0YDQuNC80LXRgCDQuNC80LXRgtC+INC90LAg0LXQu9C10LzQtdC90YLQsCDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0YEg0YLQsNC60LjQstCwINGD0YHQu9C+0LLQuNGPINC60LDRgtC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfQl9Cw0YfQuNGB0LvQtdC90LggS0UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0tFINC30LDRh9C40YHQu9C10L3QuCDQvdCwINC60L7QvNC/0LDQvdC40Y/RgtCwINC60LvQuNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ9Ca0JUsINC30LDRh9C40YHQu9C10L3QuCDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICfQndCw0YHRgtGA0L7QudC60LAg0L3QsCBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQn9GA0L7QstC10YDRj9Cy0LDQudGC0LUg0LfQsCDRg9C90LjQutCw0LvQvdC+INC40LzQtSDRgdCw0LzQviDQsiDRgNCw0LzQutC40YLQtSDQvdCwINC10LTQuNC9INC4INGB0YrRiSDQutC70LDRgSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiAo4oCe0LrQu9Cw0YHigJwpINC40LvQuCDQs9C70L7QsdCw0LvQvdC+ICjigJ7Qs9C70L7QsdCw0LvQtdC94oCcKSwg0LrQvtC10YLQviDQvtC30L3QsNGH0LDQstCwLCDRh9C1INCy0YHQtdC60Lgg0YHRitGJ0LXRgdGC0LLRg9Cy0LDRiSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0YHQtSDQstC30LXQvNCwINC/0YDQtdC00LLQuNC0LCDQutC+0LPQsNGC0L4g0YHQtSDRgtGK0YDRgdGP0YIg0LTRg9Cx0LvQuNC60LDRgtC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAn0JjQt9Cx0LXRgNC10YLQtSDQvNC+0LTRg9C7INC30LAg0L3QsNC70LDQs9Cw0L3QtSDQvdCwINGB0YXQtdC80LAg0LfQsCDQuNC80LXQvdGD0LLQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfQmNC30LHQtdGA0LXRgtC1INC80L7QtNGD0Lsg0LfQsCDQvdCw0LvQsNCz0LDQvdC1INC90LAg0YHRhdC10LzQsCDQvdCwINC90L7QvNC10YDQsNGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ9CY0LfQsdC10YDQtdGC0LUg0LzQvtC00YPQuywg0LrQvtC50YLQviDQtNCwINC90LDQu9Cw0LPQsCDRgdGF0LXQvNCwINGBINC90LjQtyDQvtGCINCy0LXRgNGB0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfQmNC30LHQtdGA0LXRgtC1INCw0YLRgNC40LHRg9GC0LgsINC60L7QuNGC0L4g0LTQsCDQt9Cw0LTQtdC50YHRgtCy0LDRgiDRgdGK0LfQtNCw0LLQsNC90LXRgtC+INC90LAg0L3QvtCy0LAg0LLQtdGA0YHQuNGPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfQmNC30LHQtdGA0LXRgtC1INC60LDRgtC10LPQvtGA0LjQuCwg0LrQvtC40YLQviDQtNCwINC/0YDQuNGB0LLQvtC40YLQtSDQvdCwINGC0L7Qt9C4INC60LvQsNGBINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ9Ck0LjQu9GC0YDQuCDQt9CwINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0LvQvtC90LDRgtCwINC30LAgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C+0L3QuCwg0LrQvtC40YLQviDQvNC+0LPQsNGCINC00LAg0YHQtSDRhNC40LvRgtGA0LjRgNCw0YIg0LIg0L/RgNC10LPQu9C10LTQsCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4g0JfQsNCx0LXQu9C10LbQutCwOiDQoNCw0LfRgNC10YjQtdC90Lgg0YHQsCDRgdCw0LzQviDQsNGC0YDQuNCx0YPRgtC4INC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0Lgg0LTQuNC90LDQvNC40YfQvdC4INC/0L7Qu9C10YLQsCAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ9CU0L7QsdCw0LLRj9C90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn0KDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC30LAg0YHRitCx0LjRgtC40LUg0LfQsCDQutC+0L3RhNC40LPRg9GA0LjRgNCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGCLCDQutC+0LnRgtC+INC/0L7Qt9Cy0L7Qu9GP0LLQsCDQt9Cw0L/QuNGB0LLQsNC90LUg0LIg0YXRgNC+0L3QvtC70L7Qs9C40Y8g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDRgdGK0LHQuNGC0LjRjyDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCwg0LrQvtC50YLQviDQsNC60YLRg9Cw0LvQuNC30LjRgNCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQtNC+INGC0LXQutGD0YnQsNGC0LAg0LjQvCDQtNC10YTQuNC90LjRhtC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn0JrQvtC90YTQuNCz0YPRgNC40YDQsNC50YLQtSDRhdGA0L7QvdC+0LvQvtCz0LjRj9GC0LAg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn0J/QtdGH0LDRgiDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LjRgNCw0L3QtSDQvdCwINC80LDRidCw0LHQsCDQvdCwINC10LvQtdC80LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAn0JjQt9Cz0LvQtdC0INC90LAg0LTRitGA0LLQvtGC0L4g0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAn0JLQtdGA0YHQuNGPINC90LAg0LXQu9C10LzQtdC90YLQsCBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zINC+0YIg0YHQu9C10LTQvdC40YLQtSDQutC70LDRgdC+0LLQtSDQvdGP0LzQsCDQtNCwINGB0LUg0YHRitGF0YDQsNC90Y/QstCw0YIg0L3QsCDRgdGK0YDQstGK0YDQsCBFbGFzdGljc2VhcmNoLiDQl9CwINC00LAg0L/RgNC40LvQvtC20LjRgtC1INGC0L7QstCwINC60YrQvCDRgdGK0YnQtdGB0YLQstGD0LLQsNGJ0LggQ0ksINC80LjQs9GA0LDRhtC40Y/RgtCwINC90LAgQ0kg0YLRgNGP0LHQstCwINC00LAg0YHQtSDRgdGC0LDRgNGC0LjRgNCwINGH0YDQtdC3INC60L7QvdC30L7Qu9Cw0YLQsCwg0YHQu9C10LQg0LrQsNGC0L4g0L/RgNC+0LzQtdC90LjRgtC1INGC0LDQt9C4INC+0L/RhtC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zINGB0YrRgSDRgdC70LXQtNC90LjRgtC1INGB0YrRgdGC0L7Rj9C90LjRjyDQvdCwINCy0L3QtdC00YDRj9Cy0LDQvdC1INC90Y/QvNCwINC00LAg0YHQtSDRgdGK0YXRgNCw0L3Rj9Cy0LDRgiDQvdCwINGB0YrRgNCy0YrRgNCwIEVsYXN0aWNzZWFyY2guINCX0LAg0LTQsCDQv9GA0LjQu9C+0LbQuNGC0LUg0YLQvtCy0LAg0LrRitC8INGB0YrRidC10YHRgtCy0YPQstCw0YnQuCBDSSwg0LzQuNCz0YDQsNGG0LjRj9GC0LAg0L3QsCBDSSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INGB0YLQsNGA0YLQuNGA0LAg0YfRgNC10Lcg0LrQvtC90LfQvtC70LDRgtCwLCDRgdC70LXQtCDQutCw0YLQviDQv9GA0L7QvNC10L3QuNGC0LUg0YLQsNC30Lgg0L7Qv9GG0LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn0JvQuNC80LjRgiDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn0JvQuNC80LjRgiDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQvdCwINGB0YLRgNCw0L3QuNGG0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfQkdCw0LfQsCDQtNCw0L3QvdC4INC30LAg0YPQv9GA0LDQstC70LXQvdC40LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn0JPRgNGD0L/QvtCyINC80L7QtNGD0Lsg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQodGK0LfQtNCw0LLQsNC50YLQtSDQuCDRg9C/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+0LTRg9C70YrRgiBWZXJzaW9uIFN0cmluZyBNb2R1bGUg0LUg0LfQsNC00LDQtNC10L0g0L3QsCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCw0LnRgtC1INC90LDQsdC+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+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINGA0LXQtNCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINGA0LXQt9GD0LvRgtCw0YLQsCDQvtGCINGC0YrRgNGB0LXQvdC10YLQviDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwINGC0LDQt9C4INC+0L/QtdGA0LDRhtC40Y8uINCd0LDQs9C+0YDQtTog0L3QsNC5LdGB0YLQsNGA0LjRj9GCINC+0YLQs9C+0YDQtS4g0J3QsNC00L7Qu9GDOiDQvdCw0Lkt0L3QvtCy0LjRgtC1INC+0YLQs9C+0YDQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LrQvtC70L7QvdC40YLQtSDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSwg0LrQvtC40YLQviDRgdC1INC/0L7QutCw0LfQstCw0YIg0L3QsCBDSSDQsiDQv9GA0LXQs9C70LXQtNCwINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLCDQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgiDQvtGCINC60LvQsNGB0LAg0L3QsCBDSS4g0JLRgdC10LrQuCDQt9Cw0L/QuNGBINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0YHRitGB0YLQvtC4INC+0YIg0LjQvNC1INC90LAg0LrQu9Cw0YEg0Lgg0LzQsNGB0LjQsiDQvtGCINC90LDQu9C40YfQvdC40YLQtSDQv9C+0LvQtdGC0LAg0LfQsCDRgdGK0L7RgtCy0LXRgtC90LjRjyDQutC70LDRgS4g0JfQsNC/0LjRgdC40YLQtSDQt9CwINC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAg0YLRgNGP0LHQstCwINC00LAg0L7RgtCz0L7QstCw0YDRj9GCINC90LAg0YHRhdC10LzQsNGC0LAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn0J7Qv9GA0LXQtNC10LvRjyDQtNGK0LvQsdC+0YfQuNC90LDRgtCwINC90LAg0L7RgtC90L7RiNC10L3QuNGP0YLQsCDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSwg0LrQvtC40YLQviDRidC1INGB0LUg0L/QvtC60LDQt9Cy0LDRgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQv9C+0LrQsNC30LDQvdC40Y8g0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUg0LDRgtGA0LjQsdGD0YIg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC30LAg0LXQutGA0LDQvdCwINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/QvtC60LDQt9Cw0L3QuNGPINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INCw0YLRgNC40LHRg9GCINC30LAg0YLRitGA0YHQtdC90LUg0L3QsCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQt9CwINC10LrRgNCw0L3QsCDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAuINCf0YDQuNC80LXRgDogIktleSIgKNCa0LvRjtGHKSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdGK0LTRitGA0LbQsCDQuNC80LXRgtC+INC90LAg0LTQuNC90LDQvNC40YfQvdC+0YLQviDQv9C+0LvQtSDQsiDRgtC+0LfQuCDRgdC70YPRh9Cw0LkgIlgiLCAiQ29udGVudCIgKNCh0YrQtNGK0YDQttCw0L3QuNC1KSDRgtGA0Y/QsdCy0LAg0LTQsCDRgdGK0LTRitGA0LbQsCDRgdGC0L7QudC90L7RgdGC0YLQsCDQvdCwINC00LjQvdCw0LzQuNGH0L3QvtGC0L4g0L/QvtC70LUg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YIg0L7RgiDRgtC40L/QsCDQvdCwINC00LjQvdCw0LzQuNGH0L3QvtGC0L4g0L/QvtC70LUsIFRleHQgKNCi0LXQutGB0YIpOiAiYSB0ZXh0IiAo0YLQtdC60YHRgiksIERyb3Bkb3duICjQv9Cw0LTQsNGJ0L4pOiAiMSIgKDEpLCBEYXRlL1RpbWUgKNCU0LDRgtCwL9GH0LDRgSk6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnINC4INC40LvQuCBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD3RgdC10LTQvNC40YbQsDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ90J/RgNC10LTQuDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/QvtC00L7QsdC10LrRgtCwINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1INC90LAg0LrQu9Cw0YHQsCDigJ5JVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RguKAnC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0L3QsNC70LjRh9C90LjRgtC1INC60L7Qu9C+0L3QuCDQvdCwIENJINCyINC/0YDQtdCz0LvQtdC00LAg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YIg0L7RgiDQutC70LDRgdCwIENJLiDQktGB0LXQutC4INC30LDQv9C40YEg0YLRgNGP0LHQstCwINC00LAg0YHQtSDRgdGK0YHRgtC+0Lgg0L7RgiDQuNC80LUg0L3QsCDQutC70LDRgSDQuCDQvNCw0YHQuNCyINC+0YIg0L3QsNC70LjRh9C90Lgg0L/QvtC70LXRgtCwINC30LAg0YHRitC+0YLQstC10YLQvdC40Y8g0LrQu9Cw0YEuINCX0LDQv9C40YHQuNGC0LUg0LfQsCDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwINGC0YDRj9Cx0LLQsCDQtNCwINC+0YLQs9C+0LLQsNGA0Y/RgiDQvdCwINGB0YXQtdC80LDRgtCwIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LLQuNGB0L7Rh9C40L3QsNGC0LAg0L3QsCDQutC+0LzQv9C+0L3QtdC90YLQsCDQvdCwINGA0LXQtNCw0LrRgtC+0YDQsCDQt9CwINCx0L7Qs9Cw0YIg0YLQtdC60YHRgiDQt9CwINGC0L7Qt9C4INC10LrRgNCw0L0uINCS0YrQstC10LTQtdGC0LUg0YfQuNGB0LvQviAo0L/QuNC60YHQtdC70LgpINC40LvQuCDQv9GA0L7RhtC10L3RgtC90LAg0YHRgtC+0LnQvdC+0YHRgiAo0L7RgtC90L7RgdC40YLQtdC70L3QsCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LHRgNC+0Y8g0L3QsCDRgNC10LTQvtCy0LXRgtC1INC30LAg0YDQtdC00LDQutGC0L7RgNCwINC90LAg0JrQlSDQtNC10YTQuNC90LjRhtC40Lgg0LIg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0YDQtdC00LAg0L3QsCDQuNC90YbQuNC00LXQvdGC0L3QuNGC0LUg0YHRitGB0YLQvtGP0L3QuNGPINC+0YIg0LLQuNGB0L7QutC+ICjQvdCw0L/RgC4g0LrRgNC40YLQuNGH0L3Qvikg0LTQviDQvdC40YHQutC+ICjQvdCw0L/RgC4g0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINGB0YrQvtGC0LLQtdGC0L3QuNGC0LUg0YHRitGB0YLQvtGP0L3QuNGPINC90LAg0LLQvdC10LTRgNGP0LLQsNC90LUsINC/0YDQuCDQutC+0LjRgtC+INGB0LLRitGA0LfQsNC90LjRgtC1INCx0LjQu9C10YLQuCDQvNC+0LPQsNGCINC00LAg0L/QvtCy0LvQuNGP0Y/RgiDQvdCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0L7Qs9GA0LDQvdC40YfQtdC90LjQtdGC0L4g0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0L7Qs9GA0LDQvdC40YfQtdC90LjQtdGC0L4g0LfQsCDRgtGK0YDRgdC10L3QtSDQsiDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGCINC30LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGPINC90LAg0LDQs9C10L3RgtCwIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNC10YLQviDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQutGA0LDQvdCwIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQvtCz0YDQsNC90LjRh9C10L3QuNC10YLQviDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQutGA0LDQvdCwIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/QvtC60LDQt9Cw0L3QuNGC0LUg0LrQvtC70L7QvdC4INC+0YIg0JrQlSDQsiDQutC+0LzQv9C70LXQutGB0L3QuNGPINC40LfQs9C70LXQtCDQvdCwINGC0LDQsdC70LjRhtCw0YLQsCDQt9CwINCy0YDRitC30LrQuCDQt9CwINCy0YHQuNGH0LrQuCDQutC70LDRgdC+0LLQtSDQmtCVLiDQkNC60L4g0L3Rj9C80LAg0LfQsNC/0LjRgSwg0YHQtSDQv9C+0LrQsNC30LLQsNGCINC60L7Qu9C+0L3QuNGC0LUg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC/0L7QutCw0LfQsNC90LjRgtC1INC60L7Qu9C+0L3QuCDQvtGCINCa0JUg0LIg0YHQu9C+0LbQvdC40Y8g0LjQt9Cz0LvQtdC0INC90LAg0YLQsNCx0LvQuNGG0LDRgtCwINGBINCy0YDRitC30LrQuCwg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YIg0L7RgiDQutC70LDRgdCwINC90LAg0JrQlS4g0JLRgdC10LrQuCDQt9Cw0L/QuNGBINGC0YDRj9Cx0LLQsCDQtNCwINC40LzQsCDQv9GA0LXRhNC40LrRgSDRgSDQuNC80LXRgtC+INC90LAg0LrQu9Cw0YHQsCDQuCDQtNCy0L7QudC90L4g0LTQstC+0LXRgtC+0YfQuNC1ICjRgi7QtS4g0LrQvtC80L/RjtGC0YrRgCA6OikuINCY0LzQsCDQvdGP0LrQvtC70LrQviDQmtCVLdCw0YLRgNC40LHRg9GC0LAsINC60L7QuNGC0L4g0YHQsCDQvtCx0YnQuCDQt9CwINCy0YHQuNGH0LrQuCDQmtCVICjQv9GA0LjQvNC10YAg0LfQsCDQutC70LDRgdCwIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDQl9CwINC00LAg0YHQtSDQv9C+0LrQsNC20LDRgiDQvtGC0LTQtdC70L3QuCDQmtCVLdCw0YLRgNC40LHRg9GC0LgsINC60LDQutGC0L4g0YHQsCDQtNC10YTQuNC90LjRgNCw0L3QuCDQsiDQmtCVLdC00LXRhNC40L3QuNGG0LjRj9GC0LAsINGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0LjQt9C/0L7Qu9C30LLQsCDRgdC70LXQtNC90LDRgtCwINGB0YXQtdC80LAgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0LAgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4g0JDQutC+INC90Y/QvNCwINC30LDQv9C40YEg0LfQsCDQmtCVINC60LvQsNGBLCDRgtC+0LPQsNCy0LAg0YHQtSDQv9C+0LrQsNC30LLQsNGCINC60L7Qu9C+0L3QuNGC0LUg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQutC+0Lgg0LXQu9C10LzQtdC90YLQuCDRgdCwINC00L7RgdGC0YrQv9C90Lgg0LfQsCAi0JTQtdC50YHRgtCy0LjQtSIg0LIg0YLRgNC10YLQvtGC0L4g0L3QuNCy0L4g0L3QsCDRgdGC0YDRg9C60YLRg9GA0LDRgtCwIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LrQvtC4INC10LvQtdC80LXQvdGC0Lgg0YHQsCDQvdCw0LvQuNGH0L3QuCDQsiDQv9GK0YDQstC+0YLQviDQvdC40LLQviDQvdCwINGB0YLRgNGD0LrRgtGD0YDQsNGC0LAgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y8g0LrQvtC4INC10LvQtdC80LXQvdGC0Lgg0YHQsCDQvdCw0LvQuNGH0L3QuCDQstGK0LIg0LLRgtC+0YDQvtGC0L4g0L3QuNCy0L4g0L3QsCDRgdGC0YDRg9C60YLRg9GA0LDRgtCwIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GPINC60L7QuSDRgtC40L8g0LLRgNGK0LfQutCwICjQvdCw0LfQvtCy0LDQvSDQvtGCINCz0LvQtdC00L3QsCDRgtC+0YfQutCwINC90LAg0LHQuNC70LXRgtCwKSDQvNC+0LbQtSDQtNCwINC/0L7QstC70LjRj9C1INC90LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINGB0LLRitGA0LfQsNC9INCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRjyDQutC+0Lkg0YLQuNC/INCx0LjQu9C10YIg0LzQvtC20LUg0LTQsCDQv9C+0LLQu9C40Y/QtSDQvdCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDRgdCy0YrRgNC30LDQvSDQmtCVLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ9CQ0LrRgtGD0LDQu9C40LfQsNGG0LjRjyDQvdCwINC+0L/RgNC10LTQtdC70LXQvdC40LXRgtC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmNC30YLRgNC40LLQsNC90LUg0L3QsCDQtdC70LXQvNC10L3RgiDQvtGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfQptCy0Y/RgiDQt9CwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfQodGK0YHRgtC+0Y/QvdC40LUg0L3QsCDQstC90LXQtNGA0Y/QstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfQndCw0L/RgNCw0LLQuCDQutC+0L/QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQt9CwINGB0YrQsdC40YLQuNGPINGBINC00LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAsINC60L7QudGC0L4g0LzQsNGA0LrQuNGA0LAg0LTQtdGE0LjQvdC40YbQuNC40YLQtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQutCw0YLQviDQvdC10YHQuNC90YXRgNC+0L3QuNC30LjRgNCw0L3QuCwg0LDQutC+INGB0YrQtNGK0YDQttCw0YnQuNGC0LUg0LPQuCDQtNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwINGB0LUg0L/RgNC+0LzQtdC90Y/Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAsINC/0L7QutCw0LfQsNC90Lgg0LIg0LXQutGA0LDQvdCwINC30LAg0LTQvtC/0YrQu9C90LjRgtC10LvQvdC4INC/0L7Qu9C10YLQsCDQvdCwIElUU00g0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0L3QuCDQv9C+0LvQtdGC0LAsINC/0L7QutCw0LfQsNC90Lgg0LIg0LXQutGA0LDQvdCwINC30LAg0L/RgNC10LPQu9C10LQg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LrQu9C40LXQvdGC0YHQutC40Y8g0LjQvdGC0LXRgNGE0LXQudGBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80LjRh9C90Lgg0L/QvtC70LXRgtCwLCDQv9C+0LrQsNC30LDQvdC4INCyINC10LrRgNCw0L3QsCDQt9CwINGC0YrRgNGB0LXQvdC1INC90LAg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9Cg0LDQt9GA0LXRiNCw0LLQsCDRhNGD0L3QutGG0LjRj9GC0LAg0LfQsCDQs9GA0YPQv9C+0LLQviDQtNC10LnRgdGC0LLQuNC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC30LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAg0LTQsCDRgNCw0LHQvtGC0Lgg0LLRitGA0YXRgyDQv9C+0LLQtdGH0LUg0L7RgiDQtdC00LjQvSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L3QsNCy0LXQtNC90YrQti4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LAg0YTRg9C90LrRhtC40Y/RgtCwINC30LAg0LPRgNGD0L/QvtCy0L4g0LTQtdC50YHRgtCy0LjQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDRgdCw0LzQviDQt9CwINC40LfQsdGA0L7QtdC90LjRgtC1INCz0YDRg9C/0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9CQ0LrRgtC40LLQuNGA0LAv0LTQtdCw0LrRgtC40LLQuNGA0LAg0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+0YHRgtGC0LAg0LfQsCDQv9GA0L7QstC10YDQutCwINC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC90LAgSVRTTSDQt9CwINGD0L3QuNC60LDQu9C90Lgg0LjQvNC10L3QsC4g0J/RgNC10LTQuCDQtNCwINCw0LrRgtC40LLQuNGA0LDRgtC1INGC0LDQt9C4INC+0L/RhtC40Y8sINGC0YDRj9Cx0LLQsCDQtNCwINC/0YDQvtCy0LXRgNC40YLQtSDRgdC40YHRgtC10LzQsNGC0LAg0YHQuCDQt9CwINCy0LXRh9C1INGB0YrRidC10YHRgtCy0YPQstCw0YnQuCDQtdC70LXQvNC10L3RgtC4INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDRgSDQtNGD0LHQu9C40YDQsNGJ0Lgg0YHQtSDQuNC80LXQvdCwLiDQnNC+0LbQtdGC0LUg0LTQsCDQvdCw0L/RgNCw0LLQuNGC0LUg0YLQvtCy0LAg0YEg0LrQvtC90LfQvtC70L3QsNGC0LAg0LrQvtC80LDQvdC00LAgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfQnNC+0LTRg9C7INC90LAg0YHRitCx0LjRgtC40LUg0LfQsCDQt9Cw0LTQsNCy0LDQvdC1INC30LAg0YHRitGB0YLQvtGP0L3QuNC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINC30LAg0LLRgNGK0LfQutCwINC30LAg0LHQuNC70LXRgi3QutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ9Cf0L7Qu9C10YLQsCDQvtGCINC40L3QtNC10LrRgdCwINC90LAg0LXQu9C10LzQtdC90YLQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAsINC40LfQv9C+0LvQt9Cy0LDQvdC4INC30LAg0L/RitC70L3QvtGC0LXQutGB0YLQvtCy0L4g0YLRitGA0YHQtdC90LUuINCf0L7Qu9C10YLQsNGC0LAg0YHRitGJ0L4g0YHQtSDRgdGK0YXRgNCw0L3Rj9Cy0LDRgiwg0L3QviDQvdC1INGB0LAg0LfQsNC00YrQu9C20LjRgtC10LvQvdC4INC30LAg0YbRj9C70L7RgdGC0L3QsNGC0LAg0YTRg9C90LrRhtC40L7QvdCw0LvQvdC+0YHRgi4g0JLQutC70Y7Rh9Cy0LDQvdC10YLQviDQvdCwINC/0YDQuNC60LDRh9C10L3QuCDRhNCw0LnQu9C+0LLQtSDQvNC+0LbQtSDQtNCwINCx0YrQtNC1INC30LDQsdGA0LDQvdC10L3QviDRh9GA0LXQtyDQt9Cw0LTQsNCy0LDQvdC1INC90LAg0YHRgtC+0LnQvdC+0YHRgiAwINC40LvQuCDQuNC30YLRgNC40LLQsNC90LUg0L3QsCDQt9Cw0L/QuNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICfQn9C+0LvQtdGC0LAsINGB0YrRhdGA0LDQvdGP0LLQsNC90Lgg0LIg0LjQvdC00LXQutGB0LAg0L3QsCDQtdC70LXQvNC10L3RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCwg0LrQvtC40YLQviDRgdC1INC40LfQv9C+0LvQt9Cy0LDRgiDQt9CwINC00YDRg9Cz0Lgg0YbQtdC70LgsINC+0YHQstC10L0g0LfQsCDQv9GK0LvQvdC+0YLQtdC60YHRgtC+0LLQviDRgtGK0YDRgdC10L3QtS4g0JfQsCDQv9GK0LvQvdCw0YLQsCDRhNGD0L3QutGG0LjQvtC90LDQu9C90L7RgdGCINCy0YHQuNGH0LrQuCDQv9C+0LvQtdGC0LAg0YHQsCDQt9Cw0LTRitC70LbQuNGC0LXQu9C90LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAn0JfQsCDQstGB0Y/QutCwINGD0LXQsSDRg9GB0LvRg9Cz0LAgKNC60LvRjtGHKSDQvNC+0LbQtSDQtNCwINGB0LUg0LTQtdGE0LjQvdC40YDQsCDQvNCw0YHQuNCyINC+0YIg0LrQu9Cw0YHQvtCy0LUgKNGB0YLQvtC50L3QvtGB0YIpLCDQt9CwINC60L7QuNGC0L4g0LLQvdC+0YHRitGCINC1INC+0LPRgNCw0L3QuNGH0LXQvS4g0JfQsCDQstGB0LjRh9C60Lgg0LjQt9Cx0YDQsNC90Lgg0LrQu9Cw0YHQvtCy0LUg0LjQu9C4INC30LAg0LLRgdC40YfQutC4INGB0YrRidC10YHRgtCy0YPQstCw0YnQuCDQutC70LDRgdC+0LLQtSDQuNC00LXQvdGC0LjRhNC40YbQuNGA0LDRidC40YLQtSDQsNGC0YDQuNCx0YPRgtC4INGJ0LUg0YLRgNGP0LHQstCwINC00LAg0LHRitC00LDRgiDQuNC30LHRgNCw0L3QuCDQsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC90LAg0LjQt9Cy0LjQutCy0LDRidC40Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXQs9C40YHRgtGA0LjRgNCw0L3QtSDQvdCwINC80L7QtNGD0LsgR2VuZXJpY0ludGVyZmFjZSDQt9CwINGB0LvQvtGPINC30LAg0LjQt9Cy0LjQutCy0LDQvdC1INC90LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+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+0LrQsNC30LLQsNGCINGC0LXQt9C4INC90LDRgdGC0YDQvtC50LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuNGC0LUg0LfQsCDRgdGK0YHRgtC+0Y/QvdC40LXRgtC+INC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0YHQtSDQvtGG0LLQtdGC0Y/QstCw0YIg0LIg0LjQt9Cz0LvQtdC00LAg0YEg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGK0YHRgtC+0Y/QvdC40Y/RgtCwINC90LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0LIg0LjQt9Cz0LvQtdC00LAg0YEg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0L/RgNC40LzQtdGA0L3QuNGC0LUg0YDQsNC30YDQtdGI0LjRgtC10LvQvdC4INCz0YDRg9C/0Lgg0L7RgiDQsNGC0YDQuNCx0YPRgtC40YLQtSDQvdCwINC+0LHRidC40Y8g0LrQsNGC0LDQu9C+0LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LzQvtC00YPQu9CwINC90LAg0LjQvNC10L3QsNGC0LAg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINC80L7QtNGD0LvQsCDQt9CwINC90L7QvNC10YDQsCDQvdCwINC60LvQsNGB0L7QstC10YLQtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQsiDQuNC30LPQu9C10LTQsCDQvdCwINC/0YDQtdC00L/QvtGH0LjRgtCw0L3QuNGP0YLQsCDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0YDQsNC90LjRhtC40YLQtSAo0LIg0LrQvtC40YLQviDRgdC1INC/0L7QutCw0LfQstCw0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC40YLQtSDQtdC70LXQvNC10L3RgtC4KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LzQvtC00YPQu9CwINC30LAg0L3QuNC3INC+0YIg0LLQtdGA0YHQuNC4INC30LAg0LrQu9Cw0YHQvtCy0LXRgtC1INC90LAg0LXQu9C10LzQtdC90YLQuNGC0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINCyINC40LfQs9C70LXQtNCwINC30LAg0L/RgNC10LTQv9C+0YfQuNGC0LDQvdC40Y8g0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQvNC+0LTRg9C70LAg0L3QsCDQvdCw0LHQvtGA0LAg0L7RgiDQuNC90YHRgtGA0YPQvNC10L3RgtC4INC30LAg0YjQsNCx0LvQvtC90Lgg0LfQsCDQvdC40Lcg0L7RgiDQstC10YDRgdC40Lgg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0L3QsCDQtdC70LXQvNC10L3RgtC40YLQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0L3QsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRj9GC0LAg0L3QsCDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LfQsNC00LXQudGB0YLQstCw0L3QtSDQvdCwINCy0LXRgNGB0LjRj9GC0LAg0LfQsCDQutC70LDRgdC+0LLQtdGC0LUg0LXQu9C10LzQtdC90YLQuCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRj9GC0LAg0LIg0LjQt9Cz0LvQtdC00LAg0LfQsCDQv9GA0LXQtNC/0L7Rh9C40YLQsNC90LjRjyDQvdCwINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ9CY0LfQstGK0YDRiNCy0LAg0LrQvtC90YTQuNCz0YPRgNC40YDQsNC90L7RgtC+INC00LXQudGB0YLQstC40LUg0LfQsCDQstGB0Y/QutC+INGB0YrQsdC40YLQuNC1ICjQutCw0YLQviBJbnZva2VyKSDQt9CwINCy0YHRj9C60LAg0LrQvtC90YTQuNCz0YPRgNC40YDQsNC90LAg0YPQtdCxINGD0YHQu9GD0LPQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ9CT0YDRg9C/0LAg0YDQsNC30YDQtdGI0LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LTQtdC50YHRgtCy0LjQtdGC0L4g0LfQsCDQv9GA0LjQutCw0YfQstCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGCINC+0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwIElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDQv9GA0LDQstCwINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0LfQsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDQv9GA0LDQstCwINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INGA0LDQt9GA0LXRiNC10L3QuNGPINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0LfQsCDRgtGK0YDRgdC10L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwINC90LAgSVRTTSDQsiDQutC70LjQtdC90YLRgdC60LjRjyDQuNC90YLQtdGA0YTQtdC50YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDRgSDQtNGK0YDQstC+0LLQuNC00L3QuNGPINC40LfQs9C70LXQtCDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQvdCwIElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNC4INC/0YDQsNCy0LAg0LfQsCDQuNC30L/QvtC70LfQstCw0L3QtSDQvdCwINC10LrRgNCw0L3QsCDQt9CwINC80LDRidCw0LHQuNGA0LDQvdC1INC90LAgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0LTQvtCx0LDQstGP0L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDRgNCw0LfRgNC10YjQtdC90LjRjyDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINGBINC10LvQtdC80LXQvdGC0LjRgtC1INC30LAg0LPRgNGD0L/QvtCy0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGPINC90LAgSVRTTSDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0YDQtdC00LDQutGC0LjRgNCw0L3QtSDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzQuCDQv9GA0LDQstCwINC30LAg0LjQt9C/0L7Qu9C30LLQsNC90LUg0L3QsCDQtdC60YDQsNC90LAg0LfQsCDRhdGA0L7QvdC+0LvQvtCz0LjRj9GC0LAg0L3QsCBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuNGPINC10LvQtdC80LXQvdGCINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfQv9C+0LvQt9Cy0LDQvdC1INC90LAg0LXQutGA0LDQvdCwINC30LAg0L/QtdGH0LDRgiDQvdCwIElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC80Lgg0L/RgNCw0LLQsCDQt9CwINC40LfRgtGA0LjQstCw0L3QtSDQvdCwINC10LvQtdC80LXQvdGC0Lgg0L7RgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y/RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ9Ci0YrRgNGB0LXQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC4INC10LvQtdC80LXQvdGC0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICfQl9Cw0LTQsNC50YLQtSDQsNCy0YLQvtC80LDRgtC40YfQvdC+INGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC90YbQuNC00LXQvdGCINC90LAg0JrQlSwg0LrQvtCz0LDRgtC+INCx0LjQu9C10YLRitGCINC1INGB0LLRitGA0LfQsNC9INGBINCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQstCwINGB0YrRgdGC0L7Rj9C90LjQtdGC0L4g0L3QsCDQuNC30L/QvtC70LfQstCw0L3QtSDQsiDQs9GA0YPQv9C+0LLQuNGPINC10LrRgNCw0L0g0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQt9CwINC40L3RgtC10YDRhNC10LnRgdCwINC30LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNCy0LAg0YHRitGB0YLQvtGP0L3QuNC10YLQviDQvdCwINC40L3RhtC40LTQtdC90YLQsCDQsiDQs9GA0YPQv9C+0LLQuNGPINC10LrRgNCw0L0g0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4sINC60L7QtdGC0L4g0L/QvtC30LLQvtC70Y/QstCwINGB0LLRitGA0LfQstCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDRgSDQtNGA0YPQsyDQvtCx0LXQutGCINCyINC40LfQs9C70LXQtNCwINC30LAg0LzQsNGJ0LDQsdC40YDQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0LTQvtGB0YLRitC/INC00L4g0YXRgNC+0L3QvtC70L7Qs9C40Y/RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC+0LHRidC40Y8g0L/RgNC10LPQu9C10LQg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0LTQvtGB0YLRitC/INC00L4g0YXRgNC+0L3QvtC70L7Qs9C40Y/RgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQuNGA0LDQvSDQuNC30LPQu9C10LQg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0LjQt9GC0YDQuNCy0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINGD0LLQtdC70LjRh9C10L0g0LjQt9Cz0LvQtdC0INC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0L/QvtC60LDQt9Cy0LDQvdC1INC90LAg0LLRgNGK0LfQutC40YLQtSDQvdCwINC10LvQtdC80LXQvdGC0LjRgtC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGP0YLQsCDQutCw0YLQviDQtNGK0YDQstC+0LLQuNC00LXQvSDQuNC30LPQu9C10LQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINC00YPQsdC70LjRgNCw0L3QtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3RgiDQv9GA0Lgg0L/RgNC10LPQu9C10LTQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuNGPINC10LvQtdC80LXQvdGCINC90LAg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDQtNGD0LHQu9C40YDQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LIg0L3QtdCz0L7QstC40Y8g0LzQsNGJ0LDQsdC40YDQsNC9INC40LfQs9C70LXQtCDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINGA0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LIg0L3QtdCz0L7QstC40Y8g0LzQsNGJ0LDQsdC40YDQsNC9INC40LfQs9C70LXQtCDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9Cy0LAg0LLRgNGK0LfQutCwINCyINC80LXQvdGO0YLQviDQt9CwINCy0YDRitGJ0LDQvdC1INCyINC40LfQs9C70LXQtNCwINC30LAg0LzQsNGJ0LDQsdC40YDQsNC90LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiDQvtGCINC40L3RgtC10YDRhNC10LnRgdCwINC90LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfQstCwINCy0YDRitC30LrQsCDQsiDQvNC10L3RjtGC0L4g0LfQsCDQvtGC0L/QtdGH0LDRgtCy0LDQvdC1INC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtdC9INC10LvQtdC80LXQvdGCINCyINC90LXQs9C+0LLQuNGPINC80LDRidCw0LHQuNGA0LDQvSDQuNC30LPQu9C10LQg0L7RgiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDQstGA0YrQt9C60LAg0LIg0LzQtdC90Y7RgtC+INC30LAg0YPQstC10LvQuNGH0LDQstCw0L3QtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC10L0g0LXQu9C10LzQtdC90YIg0LIg0L/RgNC10LPQu9C10LTQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QuNGPINC10LvQtdC80LXQvdGCINC+0YIg0LjQvdGC0LXRgNGE0LXQudGB0LAg0L3QsCDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30LLQsCDRhdGA0L7QvdC+0LvQvtCz0LjRj9GC0LAg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LjRjyDQtdC70LXQvNC10L3RgiAo0LIg0L7QsdGA0LDRgtC10L0g0YDQtdC0KSDQsiDQuNC90YLQtdGA0YTQtdC50YHQsCDQvdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn0JrQsNGC0LXQs9C+0YDQuNGPINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LCDQutC+0Y/RgtC+INGB0LUg0L/QvtC60LDQt9Cy0LAsINCw0LrQviDQvdC1INC1INC40LfQsdGA0LDQvdCwINGC0LDQutCw0LLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ9CY0LTQtdC90YLQuNGE0LjQutCw0YLQvtGA0YrRgiDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LXQvSDQtdC70LXQvNC10L3Rgiwg0L3QsNC/0YAuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiDQn9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQtSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ9CX0LDQtNC10LnRgdGC0LLQsCDQsNCy0YLQvtC80LDRgtC40YfQvdC+INC40LfQstC40LrQstCw0L3QtdGC0L4g0L3QsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfQktC10YDRgdC40Y8g0KHRgtGA0LjQvdCzINC40LfRgNCw0LfRj9Cy0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ9CS0LXRgNGB0LjRjyDQodGC0YDRg9C90LXQvSDQvNC+0LTRg9C7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ9CS0LXRgNGB0LjRjyBUcmlnZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfQlNCw0LvQuCDQuNC30L/RitC70L3QtdC90LjQtdGC0L4g0L3QsCBDb25maWdJdGVtQUNMINC80L7QttC1INC00LAg0LHRitC00LUg0LjQt9Cx0LXQs9C90LDRgtC+INGH0YDQtdC3INC/0YDQvtCy0LXRgNC60LAg0L3QsCDQutC10YjQuNGA0LDQvdC40YLQtSDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC90LAg0L/QvtC70LXRgtCw0YLQsC4g0KLQvtCy0LAg0LzQvtC20LUg0LTQsCDQv9C+0LTQvtCx0YDQuCDQstGA0LXQvNC10YLQviDQt9CwINC30LDRgNC10LbQtNCw0L3QtSDQvdCwINGE0L7RgNC80YPQu9GP0YDQuNGC0LUsINC90L4g0YLRgNGP0LHQstCwINC00LAg0LHRitC00LUg0LTQtdCw0LrRgtC40LLQuNGA0LDQvdC+LCDQsNC60L4gQUNMTW9kdWxlcyDRgtGA0Y/QsdCy0LAg0LTQsCDRgdC1INC40LfQv9C+0LvQt9Cy0LDRgiDQt9CwIElUU01Db25maWdJdGVtLSDQuCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn0JrQvtGPINC+0LHRidCwINC40L3RhNC+0YDQvNCw0YbQuNGPINC1INC/0L7QutCw0LfQsNC90LAg0LIg0LfQsNCz0LvQsNCy0LjQtdGC0L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn0LrQu9Cw0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn0LPQu9C+0LHQsNC70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ9C/0L7RgdGC0L/RgNC+0LTRg9C60YLQuNCy0LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn0L/RgNC10L/RgNC+0LTRg9C60YLQuNCy0LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn0L/RgNC+0LTRg9C60YLQuNCy0LXQvSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSDQuNC90YfQsCAoNDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEg0LjQvdGH0LAgKDUzLDM0INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1INC40L3Rh9CwICg2Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUg0LjQvdGH0LAgKDgwLDAxINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LdC40L3Rh9C+0LIg0YHRgtC10LvQsNC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSDQuNC90YfQsCAoNCw0NSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1INC40L3Rh9CwICg4OCw5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLdC40L3Rh9C+0LIg0LHQsNCz0LDQttC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUg0LjQvdGH0LAgKDk3LDc5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLdC40L3Rh9C+0LLQsCDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2INC40L3Rh9CwICg2MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyINC40L3Rh9CwICgxMDYsNjgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1INC40L3Rh9CwICgxMjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSDQuNC90YfQsCAoOCw4OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1INC40L3Rh9CwICgxMzMsMzUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1INC40L3Rh9CwICg4MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1INC40L3Rh9CwICgxNDYsNjgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0INC40L3Rh9CwICg5MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzINC40L3Rh9CwICgxNjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCDQuNC90YfQsCAoMTAwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUg0LjQvdGH0LAgKDE3MywzNSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1INC40L3Rh9CwICgxMywzNCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1INC40L3Rh9CwICgxODYsNjkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMg0LjQvdGH0LAgKDExMDAg0LzQvCk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSDQuNC90YfQsCAoMjAwLDAyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIg0LjQvdGH0LAgKDEyMDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0INC40L3Rh9CwICgyMTMsMzYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyDQuNC90YfQsCAoMTcsNzgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSDQuNC90YfQsCAoMjIsMjMg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSDQuNC90YfQsCAoMjYsNjcg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1INC40L3Rh9CwICgzMSwxMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQg0LjQvdGH0LAgKDM1LDU2INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSDQuNC90YfQsCAoNDAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfQodGH0LXRgtC+0LLQvtC00YHRgtCy0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICfQoNCw0LfQv9GA0LXQtNC10LvQtdC90LjQtSDQvdCwINCw0LTRgNC10YHQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn0JDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn0JDQvdCw0LvQvtCz0L7QsiDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ9Ci0LjQvyDQvdCwINGD0YDQtdC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfQmtCw0L/QsNGG0LjRgtC10YIg0L3QsCDQsdCw0YLQtdGA0LjRj9GC0LAgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICfQotC40L8g0LHQsNGC0LXRgNC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfQodCz0YDQsNC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9CY0L3RgtC10YDRhNC10LnRgSDQvdCwINGI0LjQvdCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn0J/RgNC+0YbQtdGB0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICfQmtC70LDRgSDQvdCwINC/0YDQvtGG0LXRgdC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAn0JrQsNC/0LDRhtC40YLQtdGCIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICfQmtCw0L/QsNGG0LjRgtC10YIg0L3QsCDQs9GA0LDRhNC40YfQvdCwINC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC90LAg0LrQsNGA0YLQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfQp9C10YLQtdGGINC90LAg0LrQsNGA0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfQotC40L8g0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAn0JrQu9C40LXQvdGC0YHQutC4INGB0LXRgNGC0LjRhNC40LrQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn0JrQu9C40LXQvdGC0YHQutC4INGB0L7RhNGC0YPQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyDQvdCwINC60LvQuNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ9Cn0LDRgdC+0LLQvdC40LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ9Ch0LrQvtGA0L7RgdGCINC90LAg0YfQsNGB0L7QstC90LjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtC4INC30LAg0L/QvtC00L/QuNGB0LLQsNC90LUg0L3QsCDQutC+0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ9Ca0L7QvdGE0LXRgNC10L3RgtC10L0g0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDQutC+0L3RgdGD0LvRgtC40YDQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ9Ch0LLRitGA0LbQtdGC0LUg0YHQtSDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn0KHQstGK0YDQttC10YLQtSDRgdC1INGBINC00LjRgdGC0YDQuNCx0YPRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC90LAg0LrQvtC90YLQtdC50L3QtdGA0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICfQlNC+0LPQvtCy0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAn0JLQuNC0INC90LAg0LTQvtCz0L7QstC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ9Ch0YDQvtC6INC90LAg0LTQvtCz0L7QstC+0YDQsCDQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ9Ch0YDQvtC6INC90LAg0LTQvtCz0L7QstC+0YDQsCDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ9CR0LXQt9C20LjRh9C10L0g0YLQtdC70LXRhNC+0L0gKERFQ1Qg0YLQtdC70LXRhNC+0L0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ9Cg0LDQt9GF0L7QtNC90LAg0LXQtNC40L3QuNGG0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICfQkdGA0L7QuSDQvdCwINC70LjRhtC10L3Qt9C40YLQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAn0JTQsNGC0LAg0L3QsCDRgdGK0LfQtNCw0LLQsNC90LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ9Cf0L7RgtGA0LXQsdC40YLQtdC70YHQutC4INGB0YLQtdC70LDQtic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDQl9Cw0L/QsNC30LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMt0YHRitGA0LLRitGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICfQlNCw0YLQsCDQvdCwINGE0LDQutGC0YPRgNCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn0JTQsNGC0LAg0L3QsCDQv9C+0YDRitGH0LrQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ9CU0LDRgtCwINC90LAg0LjQt9C00LDQstCw0L3QtSDQvdCwINCz0LDRgNCw0L3RhtC40Y/RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ9CU0LDRgtCwINC90LAg0LjQt9C00LDQstCw0L3QtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAn0J3QsNGB0YLQvtC70LXQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0LjQutCw0YLQuCDQt9CwINC/0L7QtNC/0LjRgdCy0LDQvdC1INC90LAg0LTQvtC60YPQvNC10L3RgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtC4INC30LAg0LXQu9C10LrRgtGA0L7QvdC90LAg0L/QvtGJ0LAgKFMvTUlNRSDRgdC10YDRgtC40YTQuNC60LDRgtC4KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfQotGA0YPQtNC+0LIg0LTQvtCz0L7QstC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfQmtGA0LDQtdC9IElQINCw0LTRgNC10YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfQmtGA0LDQuSDQvdCwINC/0L7QtNC60YDQtdC/0LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn0JTQsNGC0LAg0L3QsCDQuNC30YLQuNGH0LDQvdC1INC90LAg0LLQsNC70LjQtNC90L7RgdGC0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAn0JLRitC90YjQtdC9INGC0LLRitGA0LQg0LTQuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfQl9Cw0YnQuNGC0L3QsCDRgdGC0LXQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn0KTRitGA0LzRg9C10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICfQodGK0YXRgNCw0L3QtdC90LjQtSDQvdCwINC10L3QtdGA0LPQuNGPINGH0YDQtdC3INC80LDRhdC+0LLQuNC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn0KTQsNC60YLQvtGAINC90LAg0YTQvtGA0LzQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINGE0YDQsNC90YfQsNC50LcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfQkdC10LfQv9C70LDRgtC90L4g0YDQsNC30L/RgNC+0YHRgtGA0LDQvdGP0LLQsNC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ9Ce0LHRidCwINC40L3RhNC+0YDQvNCw0YbQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAn0JPRgNCw0YTQuNGH0L3QuCDQutCw0YDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICfQk9GA0LDRhNC40YfQvdCwINC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICfQpdCw0YDQtNGD0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ9Cc0L7QtNC10Lsg0L3QsCDRhdCw0YDQtNGD0LXRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ9Ci0LXQs9C70L4g0L3QsCDRhdCw0YDQtNGD0LXRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfQodC70YPRiNCw0LvQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAg0L/RgNC+0YLQvtC60L7Quyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICfQo9C/0YDQsNCy0LvQtdC90LjQtSDQvdCwINC40LTQtdC90YLQuNGH0L3QvtGB0YLRgtCwINC4INC00L7RgdGC0YrQv9CwIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICfQmNC90LLQtdC90YLQsNGA0LXQvSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAn0KDQsNC30YXQvtC00Lgg0LfQsCDQuNC90LLQtdGA0YLQuNGA0LDQvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQvdCwINGE0LDQutGC0YPRgNCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ9Ca0LvQsNCy0LjQsNGC0YPRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCDQvNC+0L3QuNGC0L7RgCAo0LTQuNGB0L/Qu9C10Lkg0YEg0YLQtdGH0L3QuCDQutGA0LjRgdGC0LDQu9C4KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEINC80L7QvdC40YLQvtGAICjRgdCy0LXRgtC70L7QuNC30LvRitGH0LLQsNGJINC00LjQvtC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICfQodGC0LDRhtC40L7QvdCw0YDQtdC9INGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9Cf0YDQtdC90L7RgdC40LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfQk9C10L7Qs9GA0LDRhNGB0LrQsCDRiNC40YDQuNC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfQodC70L7QuSAxOiDQpNC40LfQuNGH0LXRgdC60Lgg0YHQu9C+0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn0KHQu9C+0LkgMjog0KHQu9C+0Lkg0LfQsCDQstGA0YrQt9C60LAg0YEg0LTQsNC90L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn0KHQu9C+0LkgMzog0JzRgNC10LbQvtCyINGB0LvQvtC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ9Ch0LvQvtC5IDM6INCc0YDQtdC20L7QsiDRgdC70L7QuSAo0YHRg9C/0LXRgNC80YDQtdC20LApJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ9Ch0LvQvtC5IDQ6INCi0YDQsNC90YHQv9C+0YDRgtC10L0g0YHQu9C+0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ9Ch0LvQvtC5IDU6INCh0LvQvtC5INC90LAg0YHQtdGB0LjRj9GC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAn0KHQu9C+0LkgNjog0KHQu9C+0Lkg0L3QsCDQv9GA0LXQtNGB0YLQsNCy0Y/QvdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn0KHQu9C+0LkgNzog0KHQu9C+0Lkg0L3QsCDQv9GA0LjQu9C+0LbQtdC90LjQtdGC0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0LvQuNC30LjQvdCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0LvQuNGG0LXQvdC3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICfQmtC70Y7RhyDQt9CwINC70LjRhtC10L3Qtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfQktC40LQg0LvQuNGG0LXQvdC3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICfQn9C10YDQuNC+0LQg0L3QsCDQu9C40YbQtdC90LfQsCDQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAn0KHRgNC+0Log0L3QsCDQu9C40YbQtdC90LfQsCDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfQkdCw0YLQtdGA0LjRjyDQvtGCINC70LjRgtC40LXQstC+LdC20LXQu9C10LfQtdC9INGE0L7RgdGE0LDRgiAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ9Cb0LjRgtC40LXQstC+LdC50L7QvdC90LAgKExpLWlvbikg0LHQsNGC0LXRgNC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICfQodC/0L7RgNCw0LfRg9C80LXQvdC40LUg0LfQsCDQt9Cw0LXQvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn0J3QsNC80LjRgNCwINGB0LUg0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAn0JTRitC70LbQuNC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICfQn9GA0L7QuNC30LLQvtC00LjRgtC10LsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvQtdC9INC60LDQv9Cw0YbQuNGC0LXRgiDQvdCwINC90LDRgtC+0LLQsNGA0LLQsNC90LUgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ9Cf0LDQvNC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICfQotC40L8g0L/QsNC80LXRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfQnNC+0LHQuNC70LXQvSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ9Cc0L7QsdC40LvQvdC4L9Cy0LPRgNCw0LTQtdC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfQnNC+0LTQtdC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDQvdCwINC80L7QtNC10LvQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICfQoNC10LfQvtC70Y7RhtC40Y8g0L3QsCDQvNC+0L3QuNGC0L7RgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ9Cg0LDQt9C80LXRgCDQvdCwINC80L7QvdC40YLQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfQnNC40YjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfQnNGA0LXQttCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPINC30LAg0LzRgNC10LbQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPINC30LAg0LzRgNC10LbQsNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ9Cc0YDQtdC20L7QstC+INC90LjQstC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAn0J3QuNC60LXQuy3QutCw0LTQvNC40LXQstCwIChOaUNkKSDQsdCw0YLQtdGA0LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ9Cd0LjQutC10Lst0LzQtdGC0LDQu9GF0LjQtNGA0LjQtNC90LAgKE5pTUgpINCx0LDRgtC10YDQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINC90LXRgNCw0LfQutGA0LjQstCw0L3QtSDQvdCwINC40L3RhNC+0YDQvNCw0YbQuNGPIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAn0JHQtdC70LXQttC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ9CR0YDQvtC5INC/0YDQvtGG0LXRgdC+0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICfQkdGA0L7QuSDQvNC+0LTRg9C70LggUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ9CR0YDQvtC5INCz0YDQsNGE0LjRh9C90Lgg0LrQsNGA0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCDQvNC+0L3QuNGC0L7RgCAo0L7RgNCz0LDQvdC40YfQtdC9INGB0LLQtdGC0L7QuNC30LvRitGH0LLQsNGJINC00LjQvtC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfQntC/0LXRgNCw0YLQuNCy0L3QuCDRgNCw0LfRhdC+0LTQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC90LAg0L/QvtGA0YrRh9C60LDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn0JTRgNGD0LPQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAn0JjQt9GF0L7QtNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ9Cf0JjQnSAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ9Ch0L/QvtGA0LDQt9GD0LzQtdC90LjQtSDQt9CwINC/0LDRgNGC0L3RjNC+0YDRgdGC0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ9Ci0LXQu9C10YTQvtC90LXQvSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfQotC40L8g0L3QsCDRgtC10LvQtdGE0L7QvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAn0KTQuNC30LjRh9C10YHQutC4INGP0LTRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn0JTQvtGB0YLQsNCy0LrQsCDQvdCwINC10L3QtdGA0LPQuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAn0JfQsNC60YPQv9C10L3QviDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn0JTRitC70LHQvtGH0LjQvdCwINC90LAg0YHRgtC10LvQsNC20LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICfQldC00LjQvdC40YbQuCDQt9CwINGB0YLQtdC70LDQtiAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ9Ch0YLQsNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNINC60LDRgNGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTINGB0LXRgNGC0LjRhNC40LrQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfQlNC+0LPQvtCy0L7RgCDQt9CwINC/0YDQvtC00LDQttCx0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn0KHQsNGC0LXQu9C40YLQtdC9INGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ9CX0LDQv9C10YfQsNGC0LDQvdCwINC+0LvQvtCy0L3Qvi3QutC40YHQtdC70LjQvdC90LAg0LHQsNGC0LXRgNC40Y8gKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICfQodC10YDQuNC10L0g0L3QvtC80LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfQodC+0YTRgtGD0LXRgCDQt9CwINGB0YrRgNCy0YrRgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn0KHQv9C+0YDQsNC30YPQvNC10L3QuNC1INC30LAg0YPRgdC70YPQs9C4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAn0KHQtdGA0LLQuNC30LXQvSDQtdGC0LjQutC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn0KLQuNC/INCz0L3QtdC30LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ9Ch0L7RhNGC0YPQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAn0JLQuNGB0L7QutC+0LPQvtCy0L7RgNC40YLQtdC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn0KHRgtCw0L3QtNCw0YDRgtC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ9Cd0LDRh9Cw0LvQtdC9IElQINCw0LTRgNC10YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ9Ch0YrRhdGA0LDQvdC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn0KDQsNC30LTQtdC7INC30LAg0YHRitGF0YDQsNC90LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfQlNGK0YnQtdGA0L3QviDQtNGA0YPQttC10YHRgtCy0L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ9Cg0LXQt9GO0LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ9Ci0YrQvdGK0Log0LrQu9C40LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfQndC40YjQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ9Ce0LHRidCwINC+0L/QtdGA0LDRgtC40LLQvdCwINC/0LDQvNC10YIg0L3QsCDQs9GA0LDRhNC40YfQvdCw0YLQsCDQutCw0YDRgtCwIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfQntCx0YnQviBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn0JzQvtC90LjRgtC+0YAg0YHRitGBINGB0LXQvdC30L7RgNC10L0g0LXQutGA0LDQvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ9Ca0YPQu9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Ig0LrQvtC90YbQtdC90YLRgNCw0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAn0KHQu9GD0YjQsNC70LrQuCDQt9CwIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ9Cj0LXQsSDQutCw0LzQtdGA0LAnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydIaXN0b3J5IENvbnRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ1RlbXBzIGRlIGNyZWFjacOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gdmlldyd9ID0gJ1Zpc3RhIGRlIHpvb20nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdFeGVjdXRhciByZWNlcmNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcsOobmNpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnQXRlbmNpw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05vIHTDqSBQZXJtw61zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdSZXN1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+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+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmw61jaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+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+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+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+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdGb3JtdWxhcmkgZGUgcmVzdWx0YXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQWNvcmQgZGUgTml2ZWxsIGRlIFNlcnZlaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnRXN0w6BuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+a3Uga29uZmlndXJhY2UnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTcHVzdGl0IHZ5aGxlZMOhdsOhbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0hsZWRhdCB0YWvDqSB2IHDFmWVkY2hvesOtY2ggdmVyesOtY2g/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnWm9icmF6ZW7DrSBzdHJvbXUgcHJvIHBvbG/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+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ03DoXRlIGRlZmluaWNlIElUU01Db25maWdJdGVtLCBrdGVyw6kgbmVqc291IHN5bmNocm9uaXpvdsOhbnkuIE5hc2HEj3RlIHptxJtueSBkeW5hbWlja8O9Y2ggcG9sw60gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdQcm9wYWRudXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ8OaZHLFvmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnxZjDrWTDrWPDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnTmFwbMOhbm92w6Fubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdPcHJhdmEvT2Jub3ZlbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdNaW1vIHByb3Zveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQxZllaGxlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9Lb250cm9sYSBrdmFsaXR5JzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQxZllaGxlZCBhIHBvdHZyemVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0IHTFmcOtZC9yb2zDrSBhIGplamljaCBzb3V2aXNlasOtY8OtY2ggcG9sw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdQxZlpIGltcG9ydHUgdMWZw61keSBkb8WhbG8gayBjaHlixJsuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa3J5dMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBWeW9icmF6ZW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvsWIdWplIHJvesWhw63FmWVuw6kgcG9kbcOtbmt5IHZ5aGxlZMOhdsOhbsOtIHYga29uZmlndXJhxI1uw61jaCBwb2xvxb5rw6FjaCByb3pocmFuw60gYWdlbnRhLiBQb21vY8OtIHTDqXRvIGZ1bmtjZSBtxa/FvmV0ZSB2eWhsZWTDoXZhdCBuYXDFmS4gbsOhemV2IGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHMgcG9kbcOtbmthbWkgdHlwdSAiKCprZXkxKiYmKmtleTIqKSIgbmVibyAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Vtb8W+xYh1amUgcm96xaHDrcWZZW7DqSBwb2Rtw61ua3kgdnlobGVkw6F2w6Fuw60gdiBrb25maWd1cmHEjW7DrW0gdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsgdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4gUG9tb2PDrSB0w6l0byBmdW5rY2UgbcWvxb5ldGUgdnlobGVkw6F2YXQgbmFwxZkuIG7DoXpldiBrb25maWd1cmHEjW7DrSBwb2xvxb5reSBzIHBvZG3DrW5rYW1pIHR5cHUgIigqa2V5MSomJiprZXkyKikiIG5lYm8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQxZlpxZlhemVuw6kgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHDFmWlkxJtsZW7DqSBzcG9sZcSNbm9zdGkgesOha2F6bsOta2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSSBwxZlpxZlhemVuw6kgdcW+aXZhdGVsaSB6w6FrYXpuw61rYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnTmFzdGF2ZW7DrSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdaa29udHJvbHVqdGUgamVkaW5lxI1uw70gbsOhemV2IHBvdXplIHYgcsOhbWNpIHN0ZWpuw6kgdMWZw61keSBDb25maWdJdGVtICgiY2xhc3MiKSBuZWJvIGdsb2LDoWxuxJsgKCJnbG9iYWwiKSwgY2/FviB6bmFtZW7DoSwgxb5lIHDFmWkgaGxlZMOhbsOtIGR1cGxpY2l0IHNlIGJlcmUgdiDDunZhaHUga2HFvmTDvSBleGlzdHVqw61jw60gQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1p2b2x0ZSBtb2R1bCBwcm8gdnludWNlbsOtIHNjaMOpbWF0dSBwb2ptZW5vdsOhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnVnliZXJ0ZSBtb2R1bCBwcm8gdnludWNlbsOtIMSNw61zZWxuw6lobyBzY2jDqW1hdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1p2b2x0ZSBtb2R1bCBwcm8gdnludWNlbsOtIHNjaMOpbWF0dSDFmWV0xJt6Y2UgdmVyesOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1Z5YmVydGUgYXRyaWJ1dHksIGt0ZXLDqSBzcHVzdMOtIHZ5dHZvxZllbsOtIG5vdsOpIHZlcnplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWeWJlcnRlIGthdGVnb3JpZSwga3RlcsOpIGNoY2V0ZSBwxZlpxZlhZGl0IHTDqXRvIHTFmcOtZMSbIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyeSBzbG91cGNvdsO9Y2gga29uZmlndXJhxI1uw61jaCBwb2xvxb5layBwcm8gcMWZZWhsZWQgcG9sb8W+ZWsgQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ1Nsb3VwY2UsIGt0ZXLDqSBsemUgZmlsdHJvdmF0IHYgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgcm96aHJhbsOtIGFnZW50YS4gUG96bsOhbWthOiBQb3ZvbGVueSBqc291IHBvdXplIGF0cmlidXR5IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgYSBkeW5hbWlja8OhIHBvbGUgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ1BvbG/Fvmt5IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdQxZlpZMOhbsOtIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ8OacHJhdmEgcG9sb8W+a3kga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWwgdWTDoWxvc3TDrSBwb2xvxb5reSBrb25maWd1cmFjZSwga3RlcsO9IHVtb8W+xYh1amUgcHJvdG9rb2xvdsOhbsOtIGRvIGhpc3RvcmllIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWwgdWTDoWxvc3TDrSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrLCBrdGVyw70gYWt0dWFsaXp1amUga29uZmlndXJhxI1uw60gcG9sb8W+a3kgcG9kbGUgamVqaWNoIGFrdHXDoWxuw60gZGVmaW5pY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaWUgcG9sb8W+ZWsga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1Rpc2sga29uZmlndXJhxI1uw60gcG9sb8W+a3kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnUMWZaWJsw63FvmVuw60gcG9sb8W+a3kga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnU3Ryb21vdsOpIHpvYnJhemVuw60gcG9sb8W+ZWsga29uZmlndXJhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyemUgcG9sb8W+a3kgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdQb2xvxb5reSBDb25maWdJdGVtcyBuw6FzbGVkdWrDrWPDrWNoIHTFmcOtZCBuZWJ1ZG91IG5hIHNlcnZlcnUgRWxhc3RpY3NlYXJjaCB1bG/FvmVueS4gQ2hjZXRlLWxpIHR1dG8gbW/Fvm5vc3QgcG91xb7DrXQgbmEgZXhpc3R1asOtY8OtIENJLCBqZSB0xZllYmEgcG8gem3Em27EmyB0w6l0byBtb8W+bm9zdGkgc3B1c3RpdCBtaWdyYWNpIENJIHByb3N0xZllZG5pY3R2w61tIGtvbnpvbHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ1BvbG/Fvmt5IENvbmZpZ0l0ZW1zIHMgbsOhc2xlZHVqw61jw61taSBzdGF2eSBuYXNhemVuw60gbmVidWRvdSBuYSBzZXJ2ZXJ1IEVsYXN0aWNzZWFyY2ggdWxvxb5lbnkuIENoY2V0ZS1saSB0dXRvIG1vxb5ub3N0IHBvdcW+w610IG5hIGV4aXN0dWrDrWPDrSBDSSwgamUgdMWZZWJhIHBvIHptxJtuxJsgdMOpdG8gbW/Fvm5vc3RpIHNwdXN0aXQgbWlncmFjaSBDSSBwcm9zdMWZZWRuaWN0dsOtbSBrb256b2x5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdCBwb2xvxb5reSBrb25maWd1cmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXJhY2UgT21lemVuw60gcG9sb8W+ZWsgbmEgc3Ryw6Fua3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdEYXRhYsOhemUgcHJvIHNwcsOhdnUga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdIcm9tYWRuw70gbW9kdWwgcG9sb8W+ZWsga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYcSNbsOtIHBvbG/FvmthIHZ5aGxlZMOhdsOhbsOtIGJhY2tlbmRvdsOpaG8gc23Em3JvdmHEjWUgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnVnl0dsOhxZlldCBhIHNwcmF2b3ZhdCBkZWZpbmljZSBwb2xvxb5layBrb25maWd1cmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdWeXR2w6HFmcOtIHRpcHkgcHJvIHBvbG/Fvmt5IENvbmZpZ0l0ZW1zIHYgdXLEjWl0w71jaCDEjWFzb3bDvWNoIGJvZGVjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnWsOha2F6bsOtY2kgc2kgbW9ob3UgcHJvaGzDqWRub3V0IGhpc3Rvcmlja8OpIHZlcnplIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdaw6FrYXpuw61jaSBtYWrDrSBtb8W+bm9zdCBydcSNbsSbIHDFmWVww61uYXQgbWV6aSBoaXN0b3JpY2vDvW1pIHZlcnplbWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnVsO9Y2hvesOtIMO6ZGFqZSwga3RlcsOpIHNlIHBvdcW+aWrDrSBuYSBvYnJhem92Y2UgcHJvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLiBQxZnDrWtsYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnVsO9Y2hvesOtIMO6ZGFqZSwga3RlcsOpIHNlIHBvdcW+aWrDrSBuYSBvYnJhem92Y2UgcHJvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlLiBQxZnDrWtsYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbnVqdGUgQWtjZSwgdSBrdGVyw71jaCBqZSB2ZSB3aWRnZXR1IHByb3BvamVuw71jaCBvYmpla3TFryBrIGRpc3BvemljaSB0bGHEjcOtdGtvIG5hc3RhdmVuw60gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVXBvem9yxYh1amVtZSwgxb5lIHR5dG8gQWtjZSBtdXPDrSBtw610IHphcmVnaXN0cm92YW7DqSBuw6FzbGVkdWrDrWPDrSBzb3Vib3J5IEpTIGEgQ1NTOiBVSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluaWNlIHNjaMOpbWF0dSBzYWR5IFRlbXBsYXRlOjpUb29sa2l0IHBybyDFmWV0xJt6Y2UgdmVyesOtLiBQb3XFvsOtdsOhIHNlIHBvdXplIHYgcMWZw61wYWTEmywgxb5lIGplIG1vZHVsIFZlcnNpb24gU3RyaW5nIG5hc3RhdmVuIG5hIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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/FvmVrIGtvbmZpZ3VyYWNlIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uIE5haG9ydTogbmVqc3RhcsWhw60gbmFob8WZZS4gRG9sxa86IG5lam5vdsSbasWhw60gbmFob8WZZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIHBvxZlhZMOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHZlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSBwb2xvxb5layBrb25maWd1cmFjZSB0w6l0byBvcGVyYWNlLiBOYWhvcnU6IG5lanN0YXLFocOtIG5haG/FmWUuIERvbMWvOiBuZWpub3bEm2rFocOtIG5haG/FmWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gem9icmF6ZW7DqSBzbG91cGNlIENJIHYgcMWZZWhsZWR1IHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOhdmlzbG9zdGkgbmEgdMWZw61kxJsgQ0kuIEthxb5kw6EgcG9sb8W+a2Egc2UgbXVzw60gc2tsw6FkYXQgeiBuw6F6dnUgdMWZw61keSBhIHBvbGUgZG9zdHVwbsO9Y2ggcG9sw60gcHJvIHDFmcOtc2x1xaFub3UgdMWZw61kdS4gUG9sb8W+a3kgZHluYW1pY2vDvWNoIHBvbMOtIG11c8OtIHJlc3Bla3RvdmF0IHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW51amUgdsO9Y2hvesOtIGhsb3Via3Ugdnp0YWjFrywga3RlcsOpIHNlIG1hasOtIHpvYnJheml0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gem9icmF6ZW7DvSBhdHJpYnV0IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHBybyBvYnJhem92a3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w71jaG96w60gem9icmF6ZW7DvSBhdHJpYnV0IHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHBybyBvYnJhem92a3UgdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UuIFDFmcOta2xhZDogIktleSIgbXVzw60gbcOtdCBuw6F6ZXYgZHluYW1pY2vDqWhvIHBvbGUgdiB0b210byBwxZnDrXBhZMSbICJYIiwgIkNvbnRlbnQiIG11c8OtIG3DrXQgaG9kbm90dSBkeW5hbWlja8OpaG8gcG9sZSB2IHrDoXZpc2xvc3RpIG5hIHR5cHUgZHluYW1pY2vDqWhvIHBvbGUsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGEgbmVibyBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD10w71kZW47IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PVDFmWVkOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9Y2hvesOtIHBvZG9iamVrdCB0xZnDrWR5IFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmludWplIGRvc3R1cG7DqSBzbG91cGNlIENJIHYgcMWZZWhsZWR1IHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOhdmlzbG9zdGkgbmEgdMWZw61kxJsgQ0kuIEthxb5kw6EgcG9sb8W+a2Egc2UgbXVzw60gc2tsw6FkYXQgeiBuw6F6dnUgdMWZw61keSBhIHBvbGUgZG9zdHVwbsO9Y2ggcG9sw60gcHJvIHDFmcOtc2x1xaFub3UgdMWZw61kdS4gUG9sb8W+a3kgZHluYW1pY2vDvWNoIHBvbMOtIG11c8OtIHJlc3Bla3RvdmF0IHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW51amUgdsO9xaFrdSBrb21wb25lbnR5IHRleHRvdsOpaG8gZWRpdG9ydSBwcm8gdHV0byBvYnJhem92a3UuIFphZGVqdGUgxI3DrXNsbyAocGl4ZWx5KSBuZWJvIHByb2NlbnR1w6FsbsOtIGhvZG5vdHUgKHJlbGF0aXZuw60pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8SNZXQgxZnDoWRrxa8gZWRpdG9ydSBkZWZpbmljZSBDSSB2IHJvemhyYW7DrSBzcHLDoXZjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW51amUgcG/FmWFkw60gaW5jaWRlbnRuw61jaCBzdGF2xa8gb2Qgdnlzb2vDqWhvIChuYXDFmS4gY3JpY2l0YWwpIHBvIG7DrXprw70gKG5hcMWZLiBmdW5jdGlvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbnVqZSBwxZnDrXNsdcWhbsOpIHN0YXZ5IG5hc2F6ZW7DrSwgdmUga3RlcsO9Y2ggbW9ob3UgcHJvcG9qZW7DqSB0aXB5IG92bGl2bml0IHN0YXYgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgb21lemVuw60gdnlobGVkw6F2w6Fuw60gcHJvIG9icmF6b3ZrdSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIGxpbWl0IHZ5aGxlZMOhdsOhbsOtIHBybyBvYnJhem92a3UgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBvbWV6ZW7DrSB2eWhsZWTDoXbDoW7DrSBwcm8gb2JyYXpvdmt1IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgbGltaXQgdnlobGVkw6F2w6Fuw60gcHJvIG9icmF6b3ZrdSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbnVqZSB6b2JyYXplbsOpIHNsb3VwY2UgQ0kgdiBrb21wbGV4bsOtbSB6b2JyYXplbsOtIHRhYnVsa3kgb2RrYXrFryBwcm8gdsWhZWNobnkgdMWZw61keSBDSS4gUG9rdWQgbmVuw60gayBkaXNwb3ppY2kgxb7DoWRuw6EgcG9sb8W+a2EsIHpvYnJhesOtIHNlIHbDvWNob3rDrSBzbG91cGNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRmlsdHIgcHJvIHTFmcOtZHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdVcsSNdWplLCBrdGVyw6kgcG9sb8W+a3kganNvdSBrIGRpc3BvemljaSBwcm8gIkFjdGlvbiIgdmUgdMWZZXTDrSDDunJvdm5pIHN0cnVrdHVyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdVcsSNdWplLCBrdGVyw6kgcG9sb8W+a3kganNvdSBrIGRpc3BvemljaSB2IHBydm7DrSDDunJvdm5pIHN0cnVrdHVyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnVXLEjXVqZSwga3RlcsOpIHBvbG/Fvmt5IGpzb3UgayBkaXNwb3ppY2kgdmUgZHJ1aMOpIMO6cm92bmkgc3RydWt0dXJ5IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdVcsSNdWplLCBrdGVyw70gdHlwIHByb3BvamVuw60gKHBvam1lbm92YW7DvSB6IHBvaGxlZHUgdGlwdSkgbcWvxb5lIG92bGl2bml0IHN0YXYgcHJvcG9qZW7DqSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdVcsSNdWplLCBrdGVyw70gdHlwIHRpcHUgbcWvxb5lIG92bGl2bml0IHN0YXYgcHJvcG9qZW7DqSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBa3R1YWxpemFjZSBkZWZpbmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnT2RzdHJhbsSbbsOtIHBvbG/Fvmt5IGtvbmZpZ3VyYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQmFydmEgc3RhdnUgbmFzYXplbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bCB1ZMOhbG9zdMOtIGR5bmFtaWNrw71jaCBwb2zDrSwga3RlcsO9IG96bmHEjcOtIGRlZmluaWNlIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIGpha28gbmVzeW5jaHJvbml6b3ZhbsOpLCBwb2t1ZCBzZSB6bcSbbsOtIGR5bmFtaWNrw6EgcG9sZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWNrw6EgcG9sZSB6b2JyYXplbsOhIG5hIG9icmF6b3ZjZSBkb2RhdGXEjW7DvWNoIHBvbMOtIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OhIHBvbGUgem9icmF6ZW7DoSBuYSBvYnJhem92Y2UgcMWZZWhsZWR1IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY2vDoSBwb2xlIHpvYnJhemVuw6EgbmEgb2JyYXpvdmNlIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnUG92b2x1amUgZnVua2NpIGhyb21hZG7DqSBha2NlIGtvbmZpZ3VyYcSNbsOtIHBvbG/Fvmt5IHBybyBmcm9udGVuZCBhZ2VudGEsIGFieSBieWxvIG1vxb5uw6kgcHJhY292YXQgcyB2w61jZSBuZcW+IGplZG5vdSBrb25maWd1cmHEjW7DrSBwb2xvxb5rb3UgbmFqZWRub3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdQb3ZvbMOtIGZ1bmtjaSBocm9tYWRuw6kgYWtjZSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSBwb3V6ZSBwcm8gdXZlZGVuw6kgc2t1cGlueS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnUG92b2x1amUvemFrYXp1amUgZnVua2NpIGtvbnRyb2x5IGplZGluZcSNbsO9Y2ggbsOhenbFryBwb2xvxb5layBrb25maWd1cmFjZSBJVFNNLiBQxZllZCBwb3ZvbGVuw61tIHTDqXRvIG1vxb5ub3N0aSBieXN0ZSBtxJtsaSB6a29udHJvbG92YXQgc3lzdMOpbSwgemRhIGppxb4gbmVleGlzdHVqw60ga29uZmlndXJhxI1uw60gcG9sb8W+a3kgcyBkdXBsaWNpdG7DrW1pIG7DoXp2eS4gVG8gbcWvxb5ldGUgcHJvdsOpc3QgcG9tb2PDrSBrb256b2xvdsOpaG8gcMWZw61rYXp1IEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWwgdWTDoWxvc3TDrSBwcm8gbmFzdGF2ZW7DrSBjb25maWdpdGVtLXN0YXR1cyBuYSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdQb2xlIGluZGV4dSBwb2xvxb5reSBrb25maWd1cmFjZSwga3RlcsOhIHNlIHBvdcW+w612YWrDrSBwcm8gZnVsbHRleHRvdsOpIHZ5aGxlZMOhdsOhbsOtLiBQb2xlIGpzb3Ugcm92bsSbxb4gdWxvxb5lbmEsIGFsZSBwcm8gY2Vsa292b3UgZnVua8SNbm9zdCBuZWpzb3UgcG92aW5uw6EuIFphaHJudXTDrSBwxZnDrWxvaCBsemUgemFrw6F6YXQgbmFzdGF2ZW7DrW0gcG9sb8W+a3kgbmEgaG9kbm90dSAwIG5lYm8gamVqw61tIG9kc3RyYW7Em27DrW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdQb2xlIHVsb8W+ZW7DoSB2IGluZGV4dSBwb2xvxb5layBrb25maWd1cmFjZSwga3RlcsOhIHNlIGtyb23EmyBmdWxsdGV4dG92w6lobyB2eWhsZWTDoXbDoW7DrSBwb3XFvsOtdmFqw60gaSBrIGppbsO9bSDDusSNZWzFr20uIFBybyDDunBsbm91IGZ1bmvEjW5vc3QganNvdSB2xaFlY2huYSBwb2xlIHBvdmlubsOhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BybyBrYcW+ZG91IHdlYm92b3Ugc2x1xb5idSAoa2zDrcSNKSBsemUgZGVmaW5vdmF0IHBvbGUgdMWZw61kIChob2Rub3RhKSwgbmEga3RlcsOpIGplIGltcG9ydCBvbWV6ZW4uIFBybyB2xaFlY2hueSB6dm9sZW7DqSB0xZnDrWR5IG5lYm8gdsWhZWNobnkgZXhpc3R1asOtY8OtIHTFmcOtZHkgYnVkZSB0xZllYmEgdiBrb25maWd1cmFjaSBpbnZva2VydSB6dm9saXQgaWRlbnRpZmlrYcSNbsOtIGF0cmlidXR5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNlIG1vZHVsdSBHZW5lcmljSW50ZXJmYWNlIHBybyB2cnN0dnUgdnl2b2zDoXZhxI1lIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNlIG1vZHVsdSBHZW5lcmljSW50ZXJmYWNlIHBybyB2cnN0dnUgdnl2b2zDoXZhxI1lIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjZSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcm8gdnJzdHZ1IHZ5dm9sw6F2YcSNZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1DFmWVobGVkIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFocm51amUgc3RhdnkgbmFzYXplbsOtIGRvIHZ5aGxlZMOhdsOhbsOtIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgesOha2F6bmlja8OpbSByb3pocmFuw60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1phaHJudWplIHN0YXZ5IGluY2lkZW50xa8gZG8gdnlobGVkw6F2w6Fuw60gcG9sb8W+ZWsga29uZmlndXJhY2UgdiB6w6FrYXpuaWNrw6ltIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWF4aW3DoWxuw60gcG/EjWV0IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWssIGt0ZXLDqSBzZSB6b2JyYXrDrSB2ZSB2w71zbGVka3UgdMOpdG8gb3BlcmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCBwcm8ga29udHJvbHUgc2t1cGlueSBvZHBvdsSbZG7DqSB6YSB0xZnDrWR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHBybyBrb250cm9sdSBza3VwaW55IG9kcG92xJtkbsOpIHphIHBvbG/Fvmt1IGtvbmZpZ3VyYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHBybyBnZW5lcm92w6Fuw60gc3RhdGlzdGlrIHBvbG/FvmVrIGtvbmZpZ3VyYWNlIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTsOhemV2IG1vZHVsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnxIzDrXNlbG7DvSBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8SNZXQga29uZmlndXJhxI1uw61jaCBwb2xvxb5laywga3RlcsOpIHNlIG1hasOtIHpvYnJheml0IG5hIGthxb5kw6kgc3Ryw6FuY2UgdsO9c2xlZGt1IHZ5aGxlZMOhdsOhbsOtIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/EjWV0IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWssIGt0ZXLDqSBzZSBtYWrDrSB6b2JyYXppdCBuYSBrYcW+ZMOpIHN0csOhbmNlIHbDvXNsZWRrdSB2eWhsZWTDoXbDoW7DrSB2IHrDoWthem5pY2vDqW0gcm96aHJhbsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmpla3R5LCBrdGVyw6kgc2UgbWFqw60gdnlobGVkYXQsIGtvbGlrIHrDoXpuYW3FryBhIGt0ZXLDqSBhdHJpYnV0eSBzZSBtYWrDrSB6b2JyYXppdC4gQXRyaWJ1dHkgQ29uZmlnSXRlbSBtdXPDrSBiw710IGV4cGxpY2l0bsSbIHVsb8W+ZW55IHByb3N0xZllZG5pY3R2w61tIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1DFmWVobGVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHBybyBrYXRlZ29yaWUgdMWZw61kIGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgcHJvIGZpbHRyeSBzbG91cGPFryBwxZllaGxlZHUgbWFsw71jaCBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrLiBVcG96b3JuxJtuw606IE5hc3RhdmVuw60gaG9kbm90eSAiQWt0aXZuw60iIG5hIDAgcG91emUgemFicsOhbsOtIGFnZW50xa9tIHVwcmF2b3ZhdCBuYXN0YXZlbsOtIHTDqXRvIHNrdXBpbnkgdiBqZWppY2ggb3NvYm7DrWNoIHByZWZlcmVuY8OtY2gsIGFsZSBzcHLDoXZjxa9tIHN0w6FsZSB1bW/Fvm7DrSB1cHJhdm92YXQgbmFzdGF2ZW7DrSBqbcOpbmVtIGppbsOpaG8gdcW+aXZhdGVsZS4gUG9tb2PDrSBcJ1ByZWZlcmVuY2VHcm91cFwnIG3Fr8W+ZXRlIMWZw61kaXQsIHZlIGt0ZXLDqSBvYmxhc3RpIHNlIG1hasOtIHRhdG8gbmFzdGF2ZW7DrSB2IHXFvml2YXRlbHNrw6ltIHJvemhyYW7DrSB6b2JyYXpvdmF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IHBybyBzdGF2eSBuYXNhemVuw60gc2UgdnliYXJ2w60gdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgcHJvIHN0YXZ5IG5hc2F6ZW7DrSB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cnkgc2t1cGlueSBwcm8gcMWZw61rbGFkIG9wcsOhdm7Em27DrSBvYmVjbsO9Y2ggYXRyaWJ1dMWvIGthdGFsb2d1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG1vZHVsdSBuw6F6dsWvIHBybyB0xZnDrWR5IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBtb2R1bHUgxI3DrXNlbCBwcm8gdMWZw61keSBrb25maWd1cmHEjW7DrWNoIHBvbG/FvmVrIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBzdHLDoW5layAobmEga3RlcsO9Y2ggc2Ugem9icmF6dWrDrSBrb25maWd1cmHEjW7DrSBwb2xvxb5reSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBtb2R1bHUgxZlldMSbemNlIHZlcnplIHBybyB0xZnDrWR5IGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgdiB6b2JyYXplbsOtIHDFmWVkdm9sZWIgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgbW9kdWx1IMWhYWJsb255IMWZZXTEm3pjZSB2ZXJ6ZSBzYWR5IG7DoXN0cm9qxa8gcHJvIHTFmcOtZHkga29uZmlndXJhxI1uw61jaCBwb2xvxb5layB2IHpvYnJhemVuw60gcMWZZWR2b2xlYiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgcHJvIHNwb3XFoXTEm8SNIHZlcnplIHBybyB0xZnDrWR5IHBvbG/FvmVrIGtvbmZpZ3VyYWNlIHYgem9icmF6ZW7DrSBwxZllZHZvbGViIHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnUHJvdmVkZSBuYWtvbmZpZ3Vyb3Zhbm91IGFrY2kgcHJvIGthxb5kb3UgdWTDoWxvc3QgKGpha28gSW52b2tlcikgcHJvIGthxb5kb3UgbmFrb25maWd1cm92YW5vdSB3ZWJvdm91IHNsdcW+YnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdTa3VwaW5hIG9wcsOhdm7Em27DrSc7CiAgICAkU2VsZi0+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+ZWsgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIGhpc3RvcmlpIGtvbmZpZ3VyYcSNbsOtY2ggcG9sb8W+ZWsgKHYgb3BhxI1uw6ltIHBvxZlhZMOtKSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ1bDvWNob3rDrSBrYXRlZ29yaWUsIGt0ZXLDoSBzZSB6b2JyYXrDrSwgcG9rdWQgbmVuw60gdnlicsOhbmEgxb7DoWRuw6EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdJZGVudGlmaWvDoXRvciBrb25maWd1cmHEjW7DrSBwb2xvxb5reSwgbmFwxZkuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBWw71jaG96w60gamUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdXRvbWF0aWNreSBzcG91xaF0w60gaW52b2vDoXRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJ6ZSDFmGV0xJt6Y292w70gdsO9cmF6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ01vZHVsIFZlcnNpb24gU3RyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1Nwb3XFoXTEm8SNIHZlcnplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdaZGEgc2UgbHplIHZ5aG5vdXQgcHJvdmVkZW7DrSBDb25maWdJdGVtQUNMIGtvbnRyb2xvdSB6w6F2aXNsb3N0w60gcG9sw60gdWxvxb5lbsO9Y2ggdiBtZXppcGFtxJt0aS4gVG8gbcWvxb5lIHpsZXDFoWl0IMSNYXN5IG5hxI3DrXTDoW7DrSBmb3JtdWzDocWZxa8sIGFsZSBtdXPDrSB0byBiw710IHpha8OhesOhbm8sIHBva3VkIHNlIG1hasOtIHBvdcW+w612YXQgQUNMTW9kdWx5IHBybyB0eXB5IElUU01Db25maWdJdGVtLSBhIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdLdGVyw6kgb2JlY27DqSBpbmZvcm1hY2UganNvdSB1dmVkZW55IHYgesOhaGxhdsOtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ3TFmcOtZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYsOhbG7DrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWt0aXZuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3DFmWVkcHJvZHVrxI1uw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3Rpdm7DrSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBwYWxjZSAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBhbGPFryAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHBhbGNlICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBhbGNlICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTlwYWxjb3bDvSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IHBhbGNlICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHBhbGPFryAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjFwYWxjb3bDvSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBhbGNlICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjNwYWxjb3bDvSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBhbGNlICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBwYWxjxa8gKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IHBhbGNlICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgcGFsY2UgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcGFsY2UgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IHBhbGNlICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwYWxjZSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcGFsY2UgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIHBhbGPFryAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHBhbGNlICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcGFsY2UgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwYWxjZSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgcGFsY2UgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcGFsY2UgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgcGFsY2UgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBwYWxjZSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHBhbGPFryAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBhbGPFryAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgcGFsY2UgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IHBhbGNlICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IHBhbGNlICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBhbGPFryAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBwYWxjZSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnw5rEjWV0bmljdHbDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ1DFmWlkxJtsb3bDoW7DrSBhZHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnU3Byw6F2Y2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nb3bDvSB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwIHNwb3TFmWViacSNZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0thcGFjaXRhIGJhdGVyaWUgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUeXAgYmF0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J1ZG92YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnUm96aHJhbsOtIHNixJtybmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnVMWZw61kYSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGFjaXRhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhY2l0YSBuYSBncmFmaWNrb3Uga2FydHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfEjMOtc2xvIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnxIx0ZcSNa2Ega2FyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVHlwIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGllbnRza8OpIGNlcnRpZmlrw6F0eSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdLbGllbnRza8O9IHNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnb3JpZSBrbGllbnTFryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdDbG9ja3JhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrw6F0eSBwcm8gcG9kZXBpc292w6Fuw60ga8OzZHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuxI1uw60gdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ1NtbG91dmEgbyBwb3JhZGVuc3R2w60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0tvbnRha3QgbmEgZGlzdHJpYnV0b3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnU3Byw6F2YSBrb250ZWpuZXLFryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1NtbG91dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1R5cCBzbWxvdXZ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnRG9iYSB0cnbDoW7DrSBzbWxvdXZ5IG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0RvYmEgdHJ2w6Fuw60gc21sb3V2eSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdCZXpkcsOhdG92w70gdGVsZWZvbiAodGVsZWZvbiBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdOw6FrbGFkb3bDoSBqZWRub3RrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ1BvxI1ldCBsaWNlbmPDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0dW0gdnl0dm/FmWVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1ZsYXN0bsOtIHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCB2eWhyYXplbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZlciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdHVtIHZ5c3RhdmVuw60gZmFrdHVyeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0dW0gb2JqZWRuw6F2a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdHVtIHrDoXJ1a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0dW0gdnlkw6Fuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ1N0b2xuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmlrw6F0eSBwcm8gcG9kZXBpc292w6Fuw60gZG9rdW1lbnTFryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1tYWlsb3bDqSBjZXJ0aWZpa8OhdHkgKGNlcnRpZmlrw6F0eSBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ1ByYWNvdm7DrSBzbWxvdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnS29uY292w6EgSVAgYWRyZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnVWtvbsSNZW7DrSBwb2Rwb3J5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0dW0gdnlwcsWhZW7DrSBwbGF0bm9zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0V4dGVybsOtIHBldm7DvSBkaXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnQnLDoW5hIGZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTa2xhZG92w6Fuw60gZW5lcmdpZSB2IHNldHJ2YcSNbsOta3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3Jtw6F0b3bDvSBmYWt0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW7FocOtem92w6Egc21sb3V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ09iZWNuw6kgaW5mb3JtYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlja8OpIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWNrw6Ega2FydGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsIGhhcmR3YXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0htb3Rub3N0IGhhcmR3YXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdOw6FobGF2bsOtIHNvdXByYXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnUHJvdG9rb2wgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnU3Byw6F2YSBpZGVudGl0IGEgcMWZw61zdHVwdSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50w6FybsOtIMSNw61zbG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdOw6FrbGFkeSBuYSBpbnZlcnppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnxIzDrXNsbyBmYWt0dXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2zDoXZlc25pY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTW9uaXRvciBMQ0QgKGRpc3BsZWogeiB0ZWt1dMO9Y2gga3J5c3RhbMWvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBMRUQgKHN2xJt0ZWxuw6EgZGlvZGEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1Bldm7DoSB0ZWxlZm9ubsOtIGxpbmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ01vYmlsbsOtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnWmVtxJtwaXNuw6EgxaHDrcWZa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdWcnN0dmEgMTogRnl6aWNrw6EgdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ1Zyc3R2YSAyOiBWcnN0dmEgZGF0b3bDqWhvIHNwb2plJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdWcnN0dmEgMzogU8OtxaVvdsOhIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdWcnN0dmEgMzogU8OtxaVvdsOhIHZyc3R2YSAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ1Zyc3R2YSA0OiBUcmFuc3BvcnRuw60gdnJzdHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdWcnN0dmEgNTogUmVsYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ1Zyc3R2YSA2OiBQcmV6ZW50YcSNbsOtIHZyc3R2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ1Zyc3R2YSA3OiBBcGxpa2HEjW7DrSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnTsOhamVtbsOtIHNtbG91dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbsSNbsOtIHNtbG91dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2VuxI1uw60ga2zDrcSNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1R5cCBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdEb2JhIHBsYXRub3N0aSBsaWNlbmNlIG9kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnRG9iYSBwbGF0bm9zdGkgbGljZW5jZSBkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS3FvmVsZXpvLWZvc2bDoXRvdsOhIGJhdGVyaWUgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLWlvbnRvdsOhIChMaS1pb24pIGJhdGVyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdTbWxvdXZhIG8gcMWvasSNY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ05hY2jDoXrDrSBzZSB2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ1plbcSbcGlzbsOhIGTDqWxrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1bDvXJvYmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbcOhbG7DrSB6YXTDrcW+aXRlbG5vc3QgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ1BhbcSbxaUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdUeXAgcGFtxJt0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfEjMOtc2xvIG1vYmlsbsOtaG8gdGVsZWZvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxuw60vdmxvxb5lbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdQb3BpcyBtb2RlbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUm96bGnFoWVuw60gbW9uaXRvcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnVmVsaWtvc3QgbW9uaXRvcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNecWhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdTw63FpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hY2UgbyBzw610aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYWNlIG8gc8OtdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ1PDrcWlb3bDoSB2cnN0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtsLWthZG1pb3bDoSAoTmlDZCkgYmF0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2wtbWV0YWxoeWRyaWRvdsOhIChOaU1IKSBiYXRlcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0RvaG9kYSBvIG1sxI1lbmxpdm9zdGkgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ1BvxI1ldCBwcm9jZXNvcsWvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1BvxI1ldCBtb2R1bMWvIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdQb8SNZXQgZ3JhZmlja8O9Y2gga2FyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAob3JnYW5pY2vDoSBkaW9kYSBlbWl0dWrDrWPDrSBzdsSbdGxvKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdQcm92b3puw60gbsOha2xhZHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnT2JqZWRuYWPDrSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnSmluw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1bDvXN0dXB5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ0RvaG9kYSBvIHBhcnRuZXJzdHbDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25uw60gxI3DrXNsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVHlwIHRlbGVmb251JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRnl6aWNrw6EgasOhZHJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnRG9kw6F2a2EgZW5lcmdpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ1pha291cGVubyB2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdIbG91YmthIHN0b2phbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdTdG9qYW5vdsOpIGplZG5vdGt5IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnTcOtc3Rub3N0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnS2FydGEgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWvDoXR5IFNTTC9UTFMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdQcm9kZWpuw60gc21sb3V2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGl0bsOtIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnVXphdsWZZW7DoSBvbG92xJtuw6EgYmF0ZXJpZSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1PDqXJpb3bDqSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlcm92w70gc29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTbWxvdXZhIG8gcG9za3l0b3bDoW7DrSBzbHXFvmViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmlzbsOtIMWhdMOtdGVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cCB6w6FzdXZreSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ0UtbWFpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1JlcHJvZHVrdG9yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnUG/EjcOhdGXEjW7DrSBJUCBhZHJlc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ8OabG/FvmnFoXTEmyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ8OabG/Fvm7DvSBvZGTDrWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdEY2XFmWluw6Egc3BvbGXEjW5vc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1NvdWhybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1RlbmvDvSBrbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1Zsw6FrbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnQ2Vsa292w6EgcGFtxJvFpSBSQU0gZ3JhZmlja8OpIGthcnR5IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdDZWxrb3bDoSBwYW3Em8WlIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdEb3R5a292w70gbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1bEm8W+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdSb3pib8SNb3ZhxI0gVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnTsOhaGxhdm7DrSBzb3VwcmF2YSBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlZm9uIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYm92w6Ega2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydSdW4gU2VhcmNoJ30gPSAnS8O4ciBzw7hnbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdTw7hnIG9nc8OlIGkgdGlkbGlnZXJlIHZlcnNpb25lcj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyB0aWwgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0R5YmRlbml2ZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBpbmQvdWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWFrcy4gbGlua25pdmVhdSBuw6VldCBmb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1cmF0aW9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb24gb20ga29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnTnV2w6ZyZW5kZSBkZXBsb3ltZW50IHN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTnV2w6ZyZW5kZSBJbmNpZGVudCB0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdTaWRzdCDDpm5kcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1NpZHN0IMOmbmRyZXQgYWYnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdEaW5lIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0tc8O4Z25pbmcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdGw7hsZ2VuZGUga2xhc3NlciB2aWwgYmxpdmUgaW1wb3J0ZXJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdGw7hsZ2VuZGUgcm9sbGVyIHZpbCBibGl2ZSBpbXBvcnRlcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ0JlbcOmcmssIGF0IGRlciBvZ3PDpSBvcHJldHRlcyB0aWxzdmFyZW5kZSBkeW5hbWlza2UgZmVsdGVyIG9nIEdlbmVyYWxDYXRhbG9nLWtsYXNzZXIsIG9nIGF0IGRlciBpa2tlIHNrZXIgbm9nZW4gYXV0b21hdGlzayBmamVybmVsc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnVmlsIGR1IGZvcnRzw6Z0dGU/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0JydWcgZm9yIGVrc2VtcGVsa2xhc3NlciEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pdGlvbmVuIGVyIGlra2UgZW4gZ3lsZGlnIFlBTUwtaGFzaC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0gQnVsayBBY3Rpb24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnRGVyIGVyIGlra2UgYW5naXZldCBub2dldCBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnRHUgc2thbCBicnVnZSBtaW5kc3Qgw6l0IHZhbGd0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdEdSBoYXIgaWtrZSBza3JpdmVhZGdhbmcgdGlsIGRldHRlIGtvbmZpZ3VyYXRpb25zZWxlbWVudDogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0RlciBibGV2IGlra2UgZGVmaW5lcmV0IG5vZ2VuIGRlZmluaXRpb24gZm9yIGtsYXNzZW4gJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWctZWxlbWVudGV0ICIlcyIgYmxldiBpa2tlIGZ1bmRldCBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdEZWZpbmVyZXIgYW50YWxsZXQgYWYgcsOma2tlciBmb3IgQ0ktZGVmaW5pdGlvbnNlZGl0b3JlbiBpIGFkbWluaXN0cmF0aW9uc2dyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdJbmdlbiB2ZXJzaW9uIGZ1bmRldCBmb3IgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdEZXIgZXIgaWtrZSBhbmdpdmV0IG5vZ2V0IENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgZWxsZXIgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0RlciBnaXZlcyBpbmdlbiBhZGdhbmchJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0thbiBpa2tlIHZpc2UgaGlzdG9yaWssIGRhIGRlciBpa2tlIGVyIGFuZ2l2ZXQgbm9nZXQgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0thbiBpa2tlIHZpc2UgaGlzdG9yaWssIGluZ2VuIGFkZ2FuZ3NyZXR0aWdoZWRlciBnaXZldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ055dCBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ055IHZlcnNpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0ltcGxlbWVudGVyaW5nc3N0YXR1cyBvcGRhdGVyZXQgKG55PSVzLCBnYW1tZWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0jDpm5kZWxzZXNzdGF0dXMgb3BkYXRlcmV0IChueT0lcywgZ2FtbWVsPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBzbGV0dGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGluayB0aWwgJXMgKHR5cGU9JXMpIHRpbGbDuGpldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayB0aWwgJXMgKHR5cGU9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0tZGVmaW5pdGlvbiBvcGRhdGVyZXQgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hdm4gb3BkYXRlcmV0IChueXQ9JXMsIGdhbW1lbHQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXQgJXMgb3BkYXRlcmV0IGZyYSAiJXMiIHRpbCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgc2xldHRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdEZXIgZXIgaWtrZSBhbmdpdmV0IG5vZ2V0IENvbmZpZ0l0ZW1JRCBlbGxlciBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0thbiBpa2tlIHZpc2Uga29uZmlndXJhdGlvbnNlbGVtZW50LCBpbmdlbiBhZGdhbmdzcmV0dGlnaGVkZXIgZ2l2ZXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGZpbmRlcyBpa2tlIGkgZGF0YWJhc2VuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnS29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAndWRza3JldmV0IGFmICVzIHDDpSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnVWd5bGRpZ3Qga2xhc3NlLUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0RlciBlciBpa2tlIGFuZ2l2ZXQgbm9nZXQgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdEZXIgZXIgaWtrZSBnaXZldCBhZGdhbmdzcmV0dGlnaGVkZXIgdGlsIGRlbm5lIGtsYXNzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0ludGV0IHJlc3VsdGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1PDuGdlcmVzdWx0YXRlciBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ0thbiBpa2tlIHZpc2UgZWxlbWVudCwgaW5nZW4gYWRnYW5nc3JldHRpZ2hlZGVyIHRpbCBDb25maWdJdGVtIGVyIGdpdmV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIGlra2UgZnVuZGV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdJbmdlbiB2ZXJzaW9uZXIgZnVuZGV0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGlvbmVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhZHZhcnNlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2jDpm5kZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGVwbG95bWVudCB0aWxzdGFuZCBmb3IgZGVubmUgQ29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJbmNpZGVudCB0aWxzdGFuZCBmb3IgZGVubmUgQ29uZmlnIEl0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdJbmdlbiB0aWxsYWRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlcmV0IGVyIHVneWxkaWd0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU8O4Z2VwYXJhbWV0cmUgdWd5bGRpZ2UhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnVmlzdGUga29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBhZiB1ZHJ1bG5pbmdzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTnV2w6ZyZW5kZSBow6ZuZGVsc2VzdGlsc3RhbmQgVHlwZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdNZWxsZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZWJlZ3LDpm5zbmluZ2VyIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsOmbGcgZW4gZWxsZXIgZmxlcmUga2xhc3NlciBmb3IgYXQgYmVncsOmbnNlIHZhbGdiYXJlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZWdyw6Zuc25pbmdlciBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWw6ZsZyBlbiBlbGxlciBmbGVyZSBrbGFzc2VyIGZvciBhdCBiZWdyw6Zuc2UgdmFsZ2JhcmUga29uZmlndXJhdGlvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzayAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpc2sgKHZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cGUgYWYgbGlua2hlbnZpc25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnT20gZGV0dGUgbGluayBnw6ZsZGVyIGZvciBDb25maWdJdGVtIGVsbGVyIGRlbiBzdGF0aXNrZSB2ZXJzaW9uIGFmIGRldCByZWZlcmVyZW5kZSBvYmpla3QuIEJlcmVnbmluZyBhZiBha3R1ZWwgaMOmbmRlbHNlc3RpbHN0YW5kIHVkZsO4cmVzIGt1biBww6UgZHluYW1pc2tlIGxpbmtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1bDpmxnIGRlbiBhdHRyaWJ1dCwgc29tIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHNrYWwgc8O4Z2VzIGVmdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdCYXNpc3N0cnVrdHVyZW4gZXIgaWtrZSBneWxkaWcuIEFuZ2l2IHZlbmxpZ3N0IGVuIGhhc2ggbWVkIGRhdGEgaSBZQU1MLWZvcm1hdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdEZXQgZXIgbsO4ZHZlbmRpZ3QgYXQgc3RhcnRlIFlBTUwtc3RyZW5nZW4gbWVkIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0t1bm5lIGlra2UgcmVuc2UgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnRGVyIGJsZXYgaWtrZSBmdW5kZXQgbm9nZW4gcmVsZXZhbnRlIGR5bmFtaXNrZSBmZWx0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdLdW5uZSBpa2tlIGluZHPDpnR0ZSBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5kc2F0IDAgcsOma2tlciBpIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXhpbXVtIGFudGFsIGFmIGV0IGVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2lvbnNzdHJlbmcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRmVqbCB2ZWQgc3lua3JvbmlzZXJpbmcgYWYgZGVmaW5pdGlvbmVybmUuIFRqZWsgdmVubGlnc3QgbG9nZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0R1IGhhciBJVFNNQ29uZmlnSXRlbS1kZWZpbml0aW9uZXIsIHNvbSBpa2tlIGVyIHN5bmtyb25pc2VyZWRlLiBJbXBsZW1lbnRlciB2ZW5saWdzdCBkaW5lIElUU01Db25maWdJdGVtIGR5bmFtaXNrZSBmZWx0w6ZuZHJpbmdlci4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1VkbMO4YmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVmVkbGlnZWhvbGRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5sYWd0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGVyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1BlcnNpb25lcmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ0FubWVsZGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ092ZXJzaWd0IG9nIGJla3LDpmZ0ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnQgYWYga2xhc3Nlci9yb2xsZXIgb2cgZGVyZXMgcmVsYXRlcmVkZSBmZWx0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdEZXIgb3BzdG9kIGVuIGZlamwgdW5kZXIga2xhc3NlaW1wb3J0ZW4uJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTa2p1bHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIHZpc3QgcMOlIGJpbGxlZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdUaWxsYWRlciB1ZHZpZGVkZSBzw7hnZWJldGluZ2Vsc2VyIHZlZCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4gTWVkIGRlbm5lIGZ1bmt0aW9uIGthbiBkdSBmLmVrcy4gc8O4Z2UgZWZ0ZXIgbmF2bmV0IHDDpSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgbWVkIGJldGluZ2Vsc2VyIHNvbSAiKCprZXkxKiYmKmtleTIqKSIgZWxsZXIgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdUaWxsYWRlciB1ZHZpZGVkZSBzw7hnZWJldGluZ2Vsc2VyIGkgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBrdW5kZWdyw6Zuc2VmbGFkZW4uIE1lZCBkZW5uZSBmdW5rdGlvbiBrYW4gZHUgZi5la3MuIHPDuGdlIGkgbmF2bmV0IHDDpSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgbWVkIGJldGluZ2Vsc2VyIHNvbSAiKCprZXkxKiYmKmtleTIqKSIgZWxsZXIgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdUaWxkZWx0ZSBDSVwnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJXCdlciB0aWxkZWx0IGt1bmRldmlya3NvbWhlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJXCdlciB0aWxkZWx0IGt1bmRlYnJ1Z2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDTURCLWluZHN0aWxsaW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1RqZWsga3VuIGZvciBldCB1bmlrdCBuYXZuIGluZGVuIGZvciBkZW4gc2FtbWUgQ29uZmlnSXRlbS1rbGFzc2UgKFwnY2xhc3NcJykgZWxsZXIgZ2xvYmFsdCAoXCdnbG9iYWxcJyksIGh2aWxrZXQgYmV0eWRlciwgYXQgYWxsZSBla3Npc3RlcmVuZGUgQ29uZmlnSXRlbXMgdGFnZXMgaSBiZXRyYWd0bmluZywgbsOlciBkZXIgbGVkZXMgZWZ0ZXIgZHVibGV0dGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVsOmbGcgZXQgbW9kdWwgdGlsIGF0IGjDpW5kaMOmdmUgZXQgbmF2bmVza2VtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1bDpmxnIGV0IG1vZHVsIHRpbCBhdCBow6VuZGjDpnZlIGV0IG51bW1lcnNrZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWw6ZsZyBldCBtb2R1bCB0aWwgYXQgaMOlbmRow6Z2ZSBlbiB2ZXJzaW9uc3N0cmVuZ29yZG5pbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVsOmbGcgZGUgYXR0cmlidXR0ZXIsIGRlciBza2FsIHVkbMO4c2Ugb3ByZXR0ZWxzZW4gYWYgZW4gbnkgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVsOmbGcga2F0ZWdvcmllciwgZGVyIHNrYWwgdGlsZGVsZXMgZGVubmUga2xhc3NlIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbG9ubmUta29uZmlndXJhdGlvbnNlbGVtZW50ZmlsdHJlIHRpbCBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnS29sb25uZXIsIGRlciBrYW4gZmlsdHJlcmVzIGkgb3ZlcnNpZ3RlbiBvdmVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLiBCZW3DpnJrOiBLdW4gQ29uZmlnIEl0ZW0tYXR0cmlidXR0ZXIgb2cgZHluYW1pc2tlIGZlbHRlciAoRHluYW1pY0ZpZWxkX05hbWVYKSBlciB0aWxsYWR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdLb25maWd1cmF0aW9uc2VsZW1lbnRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnVGlsZsO4aiBrb25maWctZWxlbWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdSZWRpZ2VyIGtvbmZpZ3VyYXRpb25zZWxlbWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWcgaXRlbS1ow6ZuZGVsc2VzbW9kdWwsIGRlciBtdWxpZ2fDuHIgbG9nbmluZyB0aWwgaGlzdG9yaWsgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZyBpdGVtIGV2ZW50LW1vZHVsLCBkZXIgb3BkYXRlcmVyIGNvbmZpZyBpdGVtcyB0aWwgZGVyZXMgYWt0dWVsbGUgZGVmaW5pdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdLb25maWd1cmVyIGVsZW1lbnRldHMgaGlzdG9yaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1ByaW50IGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyZXIgZWxlbWVudHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbS10csOmdmlzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgaSBmw7hsZ2VuZGUga2xhc3NlciB2aWwgaWtrZSBibGl2ZSBnZW10IHDDpSBFbGFzdGljc2VhcmNoLXNlcnZlcmVuLiBGb3IgYXQgYW52ZW5kZSBkZXR0ZSBww6UgZWtzaXN0ZXJlbmRlIENJXCdlciBza2FsIENJLW1pZ3JlcmluZ2VuIGvDuHJlcyB2aWEga29uc29sbGVuLCBlZnRlciBhdCBkZW5uZSBpbmRzdGlsbGluZyBlciDDpm5kcmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIGltcGxlbWVudGVyaW5nc3RpbHN0YW5kZSB2aWwgaWtrZSBibGl2ZSBnZW10IHDDpSBFbGFzdGljc2VhcmNoLXNlcnZlcmVuLiBGb3IgYXQgYW52ZW5kZSBkZXR0ZSBww6UgZWtzaXN0ZXJlbmRlIENJXCdlciBza2FsIENJLW1pZ3JlcmluZ2VuIGvDuHJlcyB2aWEga29uc29sbGVuLCBlZnRlciBhdCBkZW5uZSBpbmRzdGlsbGluZyBlciDDpm5kcmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdHcsOmbnNlIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3VyYXRpb24gRWxlbWVudGdyw6Zuc2UgcHIuIHNpZGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdEYXRhYmFzZSBmb3Iga29uZmlndXJhdGlvbnNzdHlyaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnS29uZmlndXJhdGlvbnNlbGVtZW50ZXRzIGJ1bGstbW9kdWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRpb25zZWxlbWVudCBzw7hnIGJhY2tlbmQtcm91dGVyIGZvciBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ09wcmV0IG9nIGFkbWluaXN0cmVyIGRlZmluaXRpb25lcm5lIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ09wcmV0dGVyIGJpbGxldHRlciB0aWwgQ29uZmlnSXRlbXMgcMOlIGJlc3RlbXRlIHRpZHNwdW5rdGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLdW5kZXIga2FuIHNlIGhpc3Rvcmlza2UgQ0ktdmVyc2lvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLdW5kZXJuZSBoYXIgbXVsaWdoZWQgZm9yIG1hbnVlbHQgYXQgc2tpZnRlIG1lbGxlbSBoaXN0b3Jpc2tlIENJLXZlcnNpb25lci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEsIGRlciBza2FsIGJydWdlcyBww6UgYXR0cmlidXR0ZW4gZm9yIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4gRWtzZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnU3RhbmRhcmRkYXRhLCBkZXIgc2thbCBicnVnZXMgcMOlIGF0dHJpYnV0dGVuIGZvciBza8Omcm1iaWxsZWRldCB0aWwgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5lciBoYW5kbGluZ2VyLCBodm9yIGVuIGluZHN0aWxsaW5nc2tuYXAgZXIgdGlsZ8OmbmdlbGlnIGkgZGUgbGlua2VkZSBvYmpla3RlcnMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIEJlbcOmcmssIGF0IGRpc3NlIGhhbmRsaW5nZXIgc2thbCBoYXZlIHJlZ2lzdHJlcmV0IGbDuGxnZW5kZSBKUy0gb2cgQ1NTLWZpbGVyOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBvZyBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmVyIGV0IFRlbXBsYXRlOjpUb29sa2l0LXNrZW1hIHRpbCB2ZXJzaW9uc3N0cmVuZ2UuIEJydWdlcyBrdW4sIGh2aXMgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGVyIHNhdCB0aWwgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lciBldCBzw6Z0IGJldGluZ2Vsc2VyLCB1bmRlciBodmlsa2UgZW4ga3VuZGUgaGFyIGxvdiB0aWwgYXQgc2UgZXQga29uZmlndXJhdGlvbnNlbGVtZW50LiBCZXRpbmdlbHNlcm5lIGthbiBldmVudHVlbHQgYmVncsOmbnNlcyB0aWwgYmVzdGVtdGUga3VuZGVncnVwcGVyLiBOYXZuIGVyIGRlbiBlbmVzdGUgb2JsaWdhdG9yaXNrZSBhdHRyaWJ1dC4gSHZpcyBkZXIgaWtrZSBlciBhbmdpdmV0IGFuZHJlIG11bGlnaGVkZXIsIHZpbCBhbGxlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHbDpnJlIHN5bmxpZ2UgdW5kZXIgZGVuIHDDpWfDpmxkZW5kZSBrYXRlZ29yaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBuw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgc2xldHRlIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgdmVkIGhqw6ZscCBhZiBkZW4gZ2VuZXJpc2tlIGdyw6Zuc2VmbGFkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBuw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgaGVudGUgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciB2ZWQgaGrDpmxwIGFmIGRlbiBnZW5lcmlza2UgZ3LDpm5zZWZsYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIG7DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBzw7hnZSBpIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgdmVkIGhqw6ZscCBhZiBkZW4gZ2VuZXJpc2tlIGdyw6Zuc2VmbGFkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBuw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgaW5kc3RpbGxlIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgdmVkIGhqw6ZscCBhZiBkZW4gZ2VuZXJpc2tlIGdyw6Zuc2VmbGFkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lcmVyIGV0IG92ZXJzaWd0c21vZHVsIHRpbCBhdCB2aXNlIGRlbiBsaWxsZSB2aXNuaW5nIGFmIGVuIGxpc3RlIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZXJlciwgb20gbGlua3R5cGVldGlrZXR0ZXJuZSBza2FsIHZpc2VzIGkgbm9kZWZvcmJpbmRlbHNlcm5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHJlZ3Vsw6ZyZSB1ZHRyeWsgaW5kaXZpZHVlbHQgZm9yIGh2ZXIgQ29uZmlnSXRlbS1rbGFzc2UgZm9yIGF0IGtvbnRyb2xsZXJlIENvbmZpZ0l0ZW0tbmF2bmV0IG9nIGZvciBhdCB2aXNlIHRpbHN2YXJlbmRlIGZlamxtZWRkZWxlbHNlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgdGlsZ8OmbmdlbGlnZSBrb2xvbm5lciBtZWQgQ0lcJ2VyIGkgb3ZlcnNpZ3RlbiBvdmVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGFmaMOmbmdpZ3QgYWYgQ0kta2xhc3Nlbi4gSHZlciBwb3N0IHNrYWwgYmVzdMOlIGFmIGV0IGtsYXNzZW5hdm4gb2cgZXQgYXJyYXkgYWYgdGlsZ8OmbmdlbGlnZSBmZWx0ZXIgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2UuIER5bmFtaXNrZSBmZWx0aW5kZ2FuZ2Ugc2thbCBvdmVyaG9sZGUgc2tlbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJka29uZmlndXJhdGlvbnNlbGVtZW50YXR0cmlidXR0ZW4gZm9yIHNvcnRlcmluZyBhZiBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIHPDuGdlcmVzdWx0YXRldCBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRrb25maWd1cmF0aW9uc2VsZW1lbnRhdHRyaWJ1dHRlbiBmb3Igc29ydGVyaW5nIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRrb25maWd1cmF0aW9uc2VsZW1lbnRhdHRyaWJ1dHRlbiBmb3Igc29ydGVyaW5nIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0IGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBkZW5uZSBoYW5kbGluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHLDpmtrZWbDuGxnZW4gZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4gT3A6IMOmbGRzdGUgw7h2ZXJzdC4gTmVkOiBueWVzdGUgw7h2ZXJzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHLDpmtrZWbDuGxnZW4gZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgc8O4Z2VyZXN1bHRhdGV0IGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4gT3A6IMOmbGRzdGUgw7h2ZXJzdC4gTmVkOiBueWVzdGUgw7h2ZXJzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcsOma2tlZsO4bGdlbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBzw7hnZXJlc3VsdGF0ZXQgZm9yIGRlbm5lIGhhbmRsaW5nLiBPcDogw6ZsZHN0ZSDDuHZlcnN0LiBOZWQ6IG55ZXN0ZSDDuHZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIGtvbG9ubmVyLCBkZXIgc29tIHN0YW5kYXJkIHZpc2VzIGZvciBDSVwnZXIgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIGFmaMOmbmdpZ3QgYWYgQ0kta2xhc3Nlbi4gSHZlciBwb3N0IHNrYWwgYmVzdMOlIGFmIGV0IGtsYXNzZW5hdm4gb2cgZXQgYXJyYXkgYWYgdGlsZ8OmbmdlbGlnZSBmZWx0ZXIgZm9yIGRlbiB0aWxzdmFyZW5kZSBrbGFzc2UuIER5bmFtaXNrZSBmZWx0aW5kZ2FuZ2Ugc2thbCBvdmVyaG9sZGUgc2tlbWFldCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmVyZXIgZGVuIHN0YW5kYXJkcmVsYXRpb25zZHliZGUsIGRlciBza2FsIHZpc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGVuIHZpc3RlIHN0YW5kYXJkYXR0cmlidXQgZm9yIHPDuGduaW5nIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHDDpSBza8Omcm1lbiB0aWwgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGVuIHN0YW5kYXJkIHZpc3RlIHPDuGdlYXR0cmlidXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHDDpSBza8Omcm1lbiB0aWwgc8O4Z25pbmcgZWZ0ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiS2V5IiBza2FsIGhhdmUgbmF2bmV0IHDDpSBkZXQgZHluYW1pc2tlIGZlbHQsIGkgZGV0dGUgdGlsZsOmbGRlIFwnWFwnLCAiQ29udGVudCIgc2thbCBoYXZlIHbDpnJkaWVuIGFmIGRldCBkeW5hbWlza2UgZmVsdCBhZmjDpm5naWd0IGFmIGRlbiBkeW5hbWlza2UgZmVsdHR5cGUsIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgb2cgZWxsZXIgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkdW5kZXJvYmpla3RldCBpIGtsYXNzZW4gXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHRpbGfDpm5nZWxpZ2Uga29sb25uZXIgbWVkIENJXCdlciBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBhZmjDpm5naWd0IGFmIENJLWtsYXNzZW4uIEh2ZXIgcG9zdCBza2FsIGJlc3TDpSBhZiBldCBrbGFzc2VuYXZuIG9nIGV0IGFycmF5IGFmIHRpbGfDpm5nZWxpZ2UgZmVsdGVyIGZvciBkZW4gdGlsc3ZhcmVuZGUga2xhc3NlLiBEeW5hbWlza2UgZmVsdGluZGdhbmdlIHNrYWwgb3ZlcmhvbGRlIHNrZW1hZXQgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGjDuGpkZW4gZm9yIFJpY2ggVGV4dCBFZGl0b3Ita29tcG9uZW50ZW4gZm9yIGRlbm5lIHNrw6ZybS4gSW5kdGFzdCB0YWwgKHBpeGVscykgZWxsZXIgcHJvY2VudHbDpnJkaSAocmVsYXRpdikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBhbnRhbGxldCBhZiByw6Zra2VyIGZvciBDSS1kZWZpbml0aW9uc2VkaXRvcmVuIGkgYWRtaW5pc3RyYXRpb25zZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHLDpmtrZWbDuGxnZW4gYWYgaMOmbmRlbHNlc3RpbHN0YW5kZSBmcmEgaMO4aiAoZi5la3MuIGNyaWNpdGFsKSB0aWwgbGF2IChmLmVrcy4gZnVua3Rpb25lbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGRlIHJlbGV2YW50ZSBpbXBsZW1lbnRlcmluZ3N0aWxzdGFuZGUsIGh2b3IgdGlsa255dHRlZGUgdGlja2V0cyBrYW4gcMOldmlya2Ugc3RhdHVzIGZvciBldCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3IgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS1za8Omcm1lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc8O4Z2VncsOmbnNlbiBmb3Igc2vDpnJtYmlsbGVkZXQgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnQ29uZmlnSXRlbSAoSUQ9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZSB2aXN0ZSBrb2xvbm5lciBhZiBDSVwnZXIgaSBkZW4ga29tcGxla3NlIHZpc25pbmcgYWYgbGlua3RhYmVsbGVuLCBhZmjDpm5naWd0IGFmIENJLWtsYXNzZW4uIEh2ZXIgcG9zdCBza2FsIGluZGxlZGVzIG1lZCBrbGFzc2VucyBuYXZuIG9nIGRvYmJlbHQga29sb24gKGYuZWtzLiBDb21wdXRlcjo6KS4gRGVyIGVyIG5vZ2xlIGbDpSBDSS1hdHRyaWJ1dHRlciwgc29tIGVyIGbDpmxsZXMgZm9yIGFsbGUgQ0lcJ2VyIChla3NlbXBlbCBmb3Iga2xhc3NlbiBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gRm9yIGF0IHZpc2UgaW5kaXZpZHVlbGxlIENJLWF0dHJpYnV0dGVyIHNvbSBkZWZpbmVyZXQgaSBDSS1kZWZpbml0aW9uZW4gc2thbCBmw7hsZ2VuZGUgc2tlbWEgYnJ1Z2VzIChla3NlbXBlbCBmb3Iga2xhc3NlbiBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBIdmlzIGRlciBpa2tlIGVyIG5vZ2VuIHBvc3QgZm9yIGVuIENJLWtsYXNzZSwgdmlzZXMgc3RhbmRhcmRrb2xvbm5lcm5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciwgaHZpbGtlIGVsZW1lbnRlciBkZXIgZXIgdGlsZ8OmbmdlbGlnZSBmb3IgXCdIYW5kbGluZ1wnIHDDpSB0cmVkamUgbml2ZWF1IGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVyZXIsIGh2aWxrZSBlbGVtZW50ZXIgZGVyIGVyIHRpbGfDpm5nZWxpZ2UgcMOlIGbDuHJzdGUgbml2ZWF1IGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBodmlsa2UgZWxlbWVudGVyIGRlciBlciB0aWxnw6ZuZ2VsaWdlIHDDpSBhbmRldCBuaXZlYXUgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVyZXIsIGh2aWxrZW4gdHlwZSBsaW5rIChuYXZuZ2l2ZXQgZnJhIHRpY2tldC1wZXJzcGVrdGl2ZXQpIGRlciBrYW4gcMOldmlya2Ugc3RhdHVzIGZvciBldCBsaW5rZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyLCBodmlsa2VuIHR5cGUgdGlja2V0IGRlciBrYW4gcMOldmlya2Ugc3RhdHVzIGZvciBldCBsaW5rZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnT3BkYXRlcmluZyBhZiBkZWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdTbGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0ZhcnZlIHDDpSBpbXBsZW1lbnRlcmluZ3NzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnSMOmbmRlbHNlc21vZHVsIGZvciBkeW5hbWlza2UgZmVsdGVyLCBkZXIgbWFya2VyZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZGVmaW5pdGlvbmVyIHNvbSB1c3lua3JvbmlzZXJlZGUsIGh2aXMgZGUgaW5kZWhvbGRlciBkeW5hbWlza2UgZmVsdGVyLCBkZXIgw6ZuZHJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0ZXIsIGRlciB2aXNlcyBpIGRlbiBla3N0cmEgSVRTTS1mZWx0c2vDpnJtIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2UgZmVsdGVyLCBkZXIgdmlzZXMgaSBvdmVyc2lndHNza8Omcm1lbiBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBrdW5kZWdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0ZXIsIGRlciB2aXNlcyBpIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWt0aXZlcmVyIGZ1bmt0aW9uZW4gdGlsIG1hc3NlaGFuZGxpbmcgYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXIsIHPDpSBhZ2VudGVucyBmcm9udGVuZCBrYW4gYXJiZWpkZSBww6UgbWVyZSBlbmQgw6l0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBhZCBnYW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZGUgcmVsZXZhbnRlIGltcGxlbWVudGVyaW5nc3RpbHN0YW5kZSwgaHZvciB0aWxrbnl0dGVkZSB0aWNrZXRzIGthbiBww6V2aXJrZSBzdGF0dXMgZm9yIGV0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBa3RpdmVyZXIvZGVha3RpdmVyZXIgZnVua3Rpb25lbiB0aWwgYXQga29udHJvbGxlcmUgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBmb3IgdW5pa2tlIG5hdm5lLiBGw7hyIGR1IGFrdGl2ZXJlciBkZW5uZSBtdWxpZ2hlZCwgYsO4ciBkdSB0amVra2UgZGl0IHN5c3RlbSBmb3IgYWxsZXJlZGUgZWtzaXN0ZXJlbmRlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIG1lZCBkdXBsaWthdG5hdm5lLiBEZXQga2FuIGR1IGfDuHJlIG1lZCBrb25zb2xrb21tYW5kb2VuIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnSMOmbmRlbHNlc21vZHVsIHRpbCBhdCBzw6Z0dGUgY29uZmlnaXRlbS1zdGF0dXMgcMOlIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0ZlbHRlciBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBpbmRla3MsIGRlciBicnVnZXMgdGlsIGZ1bGR0ZWtzdHPDuGduaW5nLiBGZWx0ZXIgZ2VtbWVzIG9nc8OlLCBtZW4gZXIgaWtrZSBvYmxpZ2F0b3Jpc2tlIGZvciBkZW4gb3Zlcm9yZG5lZGUgZnVua3Rpb25hbGl0ZXQuIElua2x1ZGVyaW5nIGFmIHZlZGjDpmZ0ZWRlIGZpbGVyIGthbiBkZWFrdGl2ZXJlcyB2ZWQgYXQgc8OmdHRlIHBvc3RlbiB0aWwgMCBlbGxlciBzbGV0dGUgZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnRmVsdGVyIGdlbXQgaSBrb25maWd1cmF0aW9uc2VsZW1lbnRldHMgaW5kZWtzLCBzb20gYnJ1Z2VzIHRpbCBhbmRyZSB0aW5nIGVuZCBmdWxkdGVrc3Rzw7hnbmluZy4gRm9yIGF0IGbDpSBmdWxkIGZ1bmt0aW9uYWxpdGV0IGVyIGFsbGUgZmVsdGVyIG9ibGlnYXRvcmlza2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnRm9yIGh2ZXIgd2VidGplbmVzdGUgKG7DuGdsZSkga2FuIGRlciBkZWZpbmVyZXMgZXQgYXJyYXkgYWYga2xhc3NlciAodsOmcmRpKSwgc29tIGltcG9ydGVuIGVyIGJlZ3LDpm5zZXQgdGlsLiBGb3IgYWxsZSB2YWxndGUga2xhc3NlciBlbGxlciBhbGxlIGVrc2lzdGVyZW5kZSBrbGFzc2VyIHNrYWwgZGUgaWRlbnRpZmljZXJlbmRlIGF0dHJpYnV0dGVyIHbDpmxnZXMgaSBpbnZva2VyLWtvbmZpZ3VyYXRpb25lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmVyaW5nIGFmIEdlbmVyaWNJbnRlcmZhY2UtbW9kdWwgdGlsIENvbmZpZ0l0ZW1GZXRjaC1pbnZva2F0b3JsYWdldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYWYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCB0aWwgQ29uZmlnSXRlbUZldGNoLWludm9rYXRvcmxhZ2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYWYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCB0aWwgQ29uZmlnSXRlbUZldGNoLWludm9rYXRvcmxhZ2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdPdmVyc2lndCBvdmVyIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSMOmbmRlbHNlc3N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5rbHVkZXJlciBpbXBsZW1lbnRlcmluZ3N0aWxzdGFuZGUgaSBzw7hnbmluZ2VuIGVmdGVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkga3VuZGVncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmVyIGjDpm5kZWxzZXN0aWxzdGFuZGUgaSBrb25maWd1cmF0aW9uc2VsZW1lbnQtc8O4Z25pbmdlbiBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc2ltYWx0IGFudGFsIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLCBkZXIgc2thbCB2aXNlcyBpIHJlc3VsdGF0ZXQgYWYgZGVubmUgaGFuZGxpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgdGlsIGF0IGtvbnRyb2xsZXJlIGRlbiBncnVwcGUsIGRlciBlciBhbnN2YXJsaWcgZm9yIGVuIGtsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCB0aWwgYXQga29udHJvbGxlcmUgZGVuIGdydXBwZSwgZGVyIGVyIGFuc3ZhcmxpZyBmb3IgZXQga29uZmlndXJhdGlvbnNlbGVtZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHRpbCBhdCBnZW5lcmVyZSBzdGF0aXN0aWsgb3ZlciBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hdm4gTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lcm1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLCBkZXIgc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGFmIGV0IHPDuGdlcmVzdWx0YXQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLCBkZXIgc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGFmIGV0IHPDuGdlcmVzdWx0YXQgaSBrdW5kZWdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGVyLCBkZXIgc2thbCBzw7hnZXMgZWZ0ZXIsIGh2b3IgbWFuZ2UgcG9zdGVyIG9nIGh2aWxrZSBhdHRyaWJ1dHRlciwgZGVyIHNrYWwgdmlzZXMuIENvbmZpZ0l0ZW0tYXR0cmlidXR0ZXIgc2thbCBla3NwbGljaXQgZ2VtbWVzIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdPdmVyYmxpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3Iga2F0ZWdvcmllcm5lIGZvciBrb25maWd1cmF0aW9uc2VsZW1lbnRrbGFzc2VyIGkgcHLDpmZlcmVuY2V2aXNuaW5nZW4gaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBrb2xvbm5lZmlsdHJlbmUgaSBvdmVyc2lndGVuIG92ZXIgc23DpSBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4gQmVtw6ZyazogSHZpcyBcJ0FrdGl2XCcgc8OmdHRlcyB0aWwgMCwgZm9yaGluZHJlciBkZXQga3VuIGFnZW50ZXIgaSBhdCByZWRpZ2VyZSBpbmRzdGlsbGluZ2VybmUgZm9yIGRlbm5lIGdydXBwZSBpIGRlcmVzIHBlcnNvbmxpZ2UgcHLDpmZlcmVuY2VyLCBtZW4gZGV0IGdpdmVyIHN0YWRpZyBhZG1pbmlzdHJhdG9yZXIgbXVsaWdoZWQgZm9yIGF0IHJlZGlnZXJlIGluZHN0aWxsaW5nZXJuZSBww6UgZW4gYW5kZW4gYnJ1Z2VycyB2ZWduZS4gQnJ1ZyBcJ1ByZWZlcmVuY2VHcm91cFwnIHRpbCBhdCBzdHlyZSwgaSBodmlsa2V0IG9tcsOlZGUgZGlzc2UgaW5kc3RpbGxpbmdlciBza2FsIHZpc2VzIGkgYnJ1Z2VyZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdWRydWxuaW5nc3RpbHN0YW5kZW5lcyBmYXJ2ZSBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdWRydWxuaW5nc3RpbHN0YW5kZSBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIGVrc2VtcGxlcm5lIHDDpSB0aWxsYWRlbHNlc2dydXBwZXIgZm9yIGRlIGdlbmVyZWxsZSBrYXRhbG9nYXR0cmlidXR0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHRpbCBuYXZuZW1vZHVsZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBhZiBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIG51bW1lcm1vZHVsZXQgZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciBzaWRlcm5lIChodm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVybmUgdmlzZXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgZm9yIHZlcnNpb25zc3RyZW5nbW9kdWxldCBmb3Iga29uZmlndXJhdGlvbnNlbGVtZW50a2xhc3NlciBpIHByw6ZmZXJlbmNldmlzbmluZ2VuIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBmb3IgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaSBwcsOmZmVyZW5jZXZpc25pbmdlbiBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIGZvciB2ZXJzaW9uc3VkbMO4c2VyZW4gZm9yIGtvbmZpZ3VyYXRpb25zZWxlbWVudGtsYXNzZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW5zIHByw6ZmZXJlbmNldmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdVZGbDuHJlciBkZW4ga29uZmlndXJlcmVkZSBoYW5kbGluZyBmb3IgaHZlciBiZWdpdmVuaGVkIChzb20gZW4gSW52b2tlcikgZm9yIGh2ZXIga29uZmlndXJlcmV0IHdlYnRqZW5lc3RlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnVGlsbGFkZWxzZXNncnVwcGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2UgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRldHMgdmVkaMOmZnRuaW5nc2hhbmRsaW5nIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50c2vDpnJtZW4gaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IHRpbCBzw7hnbmluZyBlZnRlciBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCB0aWwgc8O4Z25pbmcgZWZ0ZXIgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGt1bmRlZ3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgbWVkIHRyw6Z2aXNuaW5nIGFmIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSB6b29tc2vDpnJtZW4gZm9yIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IFRpbGbDuGogSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCBtZWQgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGJ1bGsgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhZGVsc2VyIHRpbCBhdCBicnVnZSBza8Omcm1iaWxsZWRldCBSZWRpZ2VyIElUU00ta29uZmlndXJhdGlvbnNlbGVtZW50IGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYWRlbHNlciB0aWwgYXQgYnJ1Z2Ugc2vDpnJtYmlsbGVkZXQgbWVkIGhpc3RvcmlrIGZvciBJVFNNLWtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGFkZWxzZXIgdGlsIGF0IGJydWdlIHNrw6ZybWJpbGxlZGV0IFVkc2tyaXYgSVRTTS1rb25maWd1cmF0aW9uc2VsZW1lbnQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdOw7hkdmVuZGlnZSByZXR0aWdoZWRlciBmb3IgYXQgc2xldHRlIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1PDuGcgaSBrb25maWd1cmF0aW9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0luZHN0aWwgYXV0b21hdGlzayBow6ZuZGVsc2Vzc3RhdHVzIGZvciBlbiBDSSwgbsOlciBlbiB0aWNrZXQgZXIgbGlua2V0IHRpbCBlbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmRzdGlsbGVyIGltcGxlbWVudGVyaW5nc3RpbHN0YW5kZW4gaSBrb25maWd1cmF0aW9uc2VsZW1lbnRldHMgYnVsa3Nrw6ZybSBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5kc3RpbGxlciBow6ZuZGVsc2VzdGlsc3RhbmRlbiBpIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBidWxrc2vDpnJtIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4sIGRlciBnw7hyIGRldCBtdWxpZ3QgYXQgZm9yYmluZGUgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IG1lZCBldCBhbmRldCBvYmpla3QgaSB6b29tdmlzbmluZ2VuIGFmIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0IGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gZm9yIGF0IGbDpSBhZGdhbmcgdGlsIGhpc3Rvcmlra2VuIGZvciBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSBvdmVyc2lndGVuIG92ZXIga29uZmlndXJhdGlvbnNlbGVtZW50ZXIgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gZm9yIGF0IGbDpSBhZGdhbmcgdGlsIGhpc3Rvcmlra2VuIGZvciBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSBhZ2VudGdyw6Zuc2VmbGFkZW5zIHpvb212aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gdGlsIGF0IHNsZXR0ZSBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQgaSB6b29tdmlzbmluZ2VuIGFmIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1Zpc2VyIGV0IGxpbmsgaSBtZW51ZW4gZm9yIGF0IHZpc2UgbGlua3MgdGlsIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIHNvbSBlbiB0csOmdmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIHRpbCBhdCBkdXBsaWtlcmUgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgb3ZlcnNpZ3RlbiBvdmVyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGVyIGkgYWdlbnRncsOmbnNlZmxhZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIHRpbCBhdCBkdXBsaWtlcmUgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhZiBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIHRpbCByZWRpZ2VyaW5nIGFmIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIGFnZW50Z3LDpm5zZWZsYWRlbnMgem9vbXZpc25pbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIHRpbCBhdCBnw6UgdGlsYmFnZSBpIHpvb212aXNuaW5nZW4gYWYga29uZmlndXJhdGlvbnNlbGVtZW50ZXQgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZXQgbGluayBpIG1lbnVlbiB0aWwgYXQgdWRza3JpdmUgZXQga29uZmlndXJhdGlvbnNlbGVtZW50IGkgYWdlbnRncsOmbnNlZmxhZGVucyB6b29tdmlzbmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBldCBsaW5rIGkgbWVudWVuIHRpbCBhdCB6b29tZSBpbmQgcMOlIGV0IGtvbmZpZ3VyYXRpb25zZWxlbWVudCBpIG92ZXJzaWd0ZW4gb3ZlciBrb25maWd1cmF0aW9uc2VsZW1lbnRlciBpIGFnZW50Z3LDpm5zZWZsYWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGtvbmZpZ3VyYXRpb25zZWxlbWVudGV0cyBoaXN0b3JpayAoaSBvbXZlbmR0IHLDpmtrZWbDuGxnZSkgaSBhZ2VudGdyw6Zuc2VmbGFkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ1N0YW5kYXJka2F0ZWdvcmllbiwgc29tIHZpc2VzLCBodmlzIGluZ2VuIGVyIHZhbGd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvcmVuIGZvciBldCBrb25maWd1cmF0aW9uc2VsZW1lbnQsIGYuZWtzLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gU3RhbmRhcmQgZXIgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdVZGzDuHNlciBhdXRvbWF0aXNrIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyLic7CiAgICAkU2VsZi0+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+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0ZXJpbmdzb21rb3N0bmluZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnRmFrdHVyYW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1Rhc3RhdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRC1za8Omcm0gKGZseWRlbmRlIGtyeXN0YWxza8Omcm0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQtc2vDpnJtIChseXNlbWl0dGVyZW5kZSBkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnRmFzdG5ldHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnQnJlZGRlZ3JhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xhZyAxOiBGeXNpc2sgbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xhZyAyOiBEYXRhbGluay1sYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xhZyAzOiBOZXR2w6Zya3NsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGFnIDM6IE5ldHbDpnJrc2xhZyAoc3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ0xhZyA0OiBUcmFuc3BvcnRsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xhZyA1OiBTZXNzaW9uc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMYWcgNjogUHLDpnNlbnRhdGlvbnNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdMYWcgNzogQXBwbGlrYXRpb25zbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0xlamVhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbnNhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2Vuc27DuGdsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaWNlbnN0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaWNlbnNwZXJpb2RlIGZyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2Vuc3BlcmlvZGUgaW5kdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtLWplcm5mb3NmYXQgKExpRmVQTzQpLWJhdHRlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGl1bS1pb24tYmF0dGVyaSAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0zDpW5lYWZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdCZWxpZ2dlbmRlIGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTMOmbmdkZWdyYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdQcm9kdWNlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01ha3NpbWFsIGJlbGFzdG5pbmdza2FwYWNpdGV0IChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdIdWtvbW1lbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnSHVrb21tZWxzZXN0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ01vYmlsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsL2luZGxlanJldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWxiZXNrcml2ZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdTa8Omcm1lbnMgb3Bsw7hzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdTa8Omcm1zdMO4cnJlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdOZXR2w6Zyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdOZXR2w6Zya3NpbmZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbiBvbSBuZXR2w6Zyayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTmV0dsOmcmtzbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlra2VsLWNhZG1pdW0tYmF0dGVyaSAoTmlDZCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICdOaWtrZWwtbWV0YWxoeWRyaWQtYmF0dGVyaSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQWZ0YWxlIG9tIGhlbW1lbGlnaG9sZGVsc2UgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3Rlc2JvZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0FudGFsIENQVVwnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnQW50YWwgUkFNLW1vZHVsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnQW50YWwgZ3JhZmlra29ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1za8Omcm0gKG9yZ2FuaXNrIGx5c2VtaXR0ZXJlbmRlIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdEcmlmdHNvbWtvc3RuaW5nZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnQmVzdGlsbGluZ3NudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdBbmRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnVWRnYW5nZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4tS09ERSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BhcnRuZXJza2Fic2FmdGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb25udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb250eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRnlzaXNrZSBrZXJuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHLDuG1mb3JzeW5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdLw7hidCBww6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1N0YXRpdmV0cyBkeWJkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhY2stZW5oZWRlciAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1bDpnJlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWtvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTLWNlcnRpZmlrYXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1NhbGdza29udHJha3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnU2F0ZWxsaXR0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0ZvcnNlZ2xldCBibHlzeXJlYmF0dGVyaSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1NlcmllbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlci1zb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1NlcnZpY2VhZnRhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdTZXJ2aWNlLXRhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdTdGlra29udGFrdHR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0jDuGp0dGFsZXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUC1hZHJlc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdPcGJldmFyaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnT3BiZXZhcmluZ3NwYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdEYXR0ZXJzZWxza2FiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTYW1tZW5mYXRuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVHluZCBrbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1Ryw6VkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RvcmRlbmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0dyYWZpa2tvcnRldHMgc2FtbGVkZSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSBpIGFsdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdCZXLDuHJpbmdzZsO4bHNvbSBza8Omcm0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUw6Vybic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLWhlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC10ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0NvbmZpZyBJdGVtIGF1c3fDpGhsZW4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTdWNoZSBhdXNmw7xocmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0F1Y2ggaW4gZnLDvGhlcmVuIFZlcnNpb25lbiBzdWNoZW4/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgZsO8ciBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+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+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdLZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tSUQgb2RlciBWZXJzaW9ucy1JRCBhbmdlZ2ViZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBrYW5uIG5pY2h0IGFuZ2V6ZWlndCB3ZXJkZW4sIGtlaW5lIFp1Z3JpZmZzcmVjaHRlIHZlcmdlYmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1JRCAlcyBpbiBEYXRlbmJhbmsgbmljaHQgZ2VmdW5kZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdnZWRydWNrdCB2b24gJXMgYW0gJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW56JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnVW5nw7xsdGlnZSBLbGFzc2VuLUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0tlaW5lIEtsYXNzZW4tSUQgw7xiZXJtaXR0ZWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0tlaW5lIFp1Z3JpZmZzcmVjaHRlIGbDvHIgZGllc2UgS2xhc3NlIHZlcmdlYmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnS2VpbiBFcmdlYm5pcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgSXRlbS1TdWNoZXJnZWJuaXNzZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FubiBkYXMgRWxlbWVudCBuaWNodCBhbnplaWdlbiwga2VpbmUgWnVncmlmZnNyZWNodGUgZsO8ciBkYXMgQ29uZmlnSXRlbSB2ZXJnZWJlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnIEl0ZW0gbmljaHQgZ2VmdW5kZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ0tlaW5lIFZlcnNpb25lbiBnZWZ1bmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnV2FybnVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ1ZvcmZhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlciBWZXJ3ZW5kdW5nc3N0YXR1cyBkaWVzZXMgQ29uZmlnIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGVyIFZvcmZhbGxzdGF0dXMgZGllc2VzIENvbmZpZyBJdGVtcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0tlaW5lIEJlcmVjaHRpZ3VuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0ZXIgdW5nw7xsdGlnISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU3VjaHBhcmFtZXRlciB1bmfDvGx0aWchJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnQW5nZXplaWd0ZSBDb25maWd1cmF0aW9uIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1ZlcndlbmR1bmdzc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0FrdHVlbGxlciBWb3JmYWxsc3N0YXR1cy1UeXAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnWndpc2NoZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZW5laW5zY2hyw6Rua3VuZ2VuIGbDvHIgZGFzIEtvbmZpZ3VyYXRpb25zb2JqZWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdXw6RobGVuIFNpZSBlaW5lIG9kZXIgbWVocmVyZSBLbGFzc2VuIGF1cywgdW0gZGllIGF1c3fDpGhsYmFyZW4gQ29uZmlnIEl0ZW1zIGVpbnp1c2NocsOkbmtlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnVmVyd2VuZHVuZ3NzdGF0dXMtRWluc2NocsOkbmt1bmdlbiBmw7xyIGRhcyBDb25maWcgSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ0VpbmVuIG9kZXIgbWVocmVyZSBWZXJ3ZW5kdW5nc3N0YXR1cyBhdXN3w6RobGVuIHVtIGF1c3fDpGhsYmFyZSBDb25maWcgSXRlbXMgZWluenVzY2hyw6Rua2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pc2NoIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGlzY2ggKFZlcnNpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ0xpbmstUmVmZXJlbnppZXJ1bmdzYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0FuZ2FiZSwgb2Igc2ljaCBkaWVzZXIgTGluayBhdWYgZGFzIENvbmZpZ0l0ZW0gb2RlciBkaWUgc3RhdGlzY2hlIFZlcnNpb24gZGVzIHJlZmVyZW56aWVyZW5kZW4gT2JqZWt0cyBiZXppZWh0LiBEaWUgQmVyZWNobnVuZyBkZXMgYWt0dWVsbGVuIFZvcmZhbGxzc3RhdHVzIHdpcmQgbnVyIGJlaSBkeW5hbWlzY2hlbiBMaW5rcyBkdXJjaGdlZsO8aHJ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1fDpGhsZW4gU2llIGRhcyBBdHRyaWJ1dCBhdXMsIG5hY2ggZGVtIGRpZSBLb25maWd1cmF0aW9uc2VsZW1lbnRlIGR1cmNoc3VjaHQgd2VyZGVuIHNvbGxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzaXNzdHJ1a3R1ciBpc3QgbmljaHQgZ8O8bHRpZy4gQml0dGUgZ2ViZW4gU2llIGVpbmVuIEhhc2ggbWl0IERhdGVuIGltIFlBTUwtRm9ybWF0IGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0RlciBCZWdpbm4gZGVyIFlBTUwtWmVpY2hlbmtldHRlIG1pdCBcJy0tLVwnIGlzdCBlcmZvcmRlcmxpY2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0RpZSBUYWJlbGxlIGNvbmZpZ2l0ZW1fbGluayBrb25udGUgbmljaHQgZ2Vsw7ZzY2h0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0VzIHd1cmRlbiBrZWluZSByZWxldmFudGVuIGR5bmFtaXNjaGVuIEZlbGRlciBnZWZ1bmRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0tvbm50ZSBuaWNodCBpbiBkaWUgVGFiZWxsZSBjb25maWdpdGVtX2xpbmsgZWluZ2Vmw7xndCB3ZXJkZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJzAgWmVpbGVuIGluIGRpZSBUYWJlbGxlIGNvbmZpZ2l0ZW1fbGluayBlaW5nZWbDvGd0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltYWxlIEFuemFobCBlaW5lcyBFbGVtZW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaW9uIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdGZWhsZXIgYmVpbSBTeW5jaHJvbmlzaWVyZW4gZGVyIERlZmluaXRpb25lbi4gQml0dGUgcHLDvGZlbiBTaWUgZGFzIFByb3Rva29sbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdTaWUgaGFiZW4gSVRTTUNvbmZpZ0l0ZW0tRGVmaW5pdGlvbmVuLCBkaWUgbmljaHQgc3luY2hyb25pc2llcnQgc2luZC4gQml0dGUgc3RlbGxlbiBTaWUgSWhyZSBkeW5hbWlzY2hlbiBJVFNNQ29uZmlnSXRlbS1GZWxkw6RuZGVydW5nZW4gYmVyZWl0Lic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnQWJnZWxhdWZlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0luIFdhcnR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdGJldHJpZWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ0dlcGxhbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnSW4gUmVwYXJhdHVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdBdcOfZXIgRGllbnN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1VudGVyIFJldmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RUyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw5xiZXJibGljayB1bmQgQmVzdMOkdGlndW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydCB2b24gS2xhc3Nlbi9Sb2xsZW4gdW5kIGlocmVuIHp1Z2Vow7ZyaWdlbiBGZWxkZXJuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnQmVpbSBLbGFzc2VuaW1wb3J0IGlzdCBlaW4gRmVobGVyIGF1ZmdldHJldGVuLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gVmVyc3RlY2t0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBBYmdlYmlsZGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdFcm3DtmdsaWNodCBlcndlaXRlcnRlIFN1Y2hiZWRpbmd1bmdlbiBiZWkgZGVyIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNvYmpla3RlbiBpbiBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuIE1pdCBkaWVzZXIgRnVua3Rpb24ga8O2bm5lbiBTaWUgei4gQi4gZGVuIE5hbWVuIGRlcyBLb25maWd1cmF0aW9uc2VpbnRyYWdzIG1pdCBzb2xjaGVuIEJlZGluZ3VuZ2VuIHdpZSAiKCprZXkxKiYmKmtleTIqKSIgb2RlciAiKCprZXkxKnx8KmtleTIqKSIgc3VjaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdFcm3DtmdsaWNodCBlcndlaXRlcnRlIFN1Y2hiZWRpbmd1bmdlbiBiZWkgZGVyIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNlaW50csOkZ2VuIGluIGRlciBLdW5kZW5zY2huaXR0c3RlbGxlLiBNaXQgZGllc2VyIEZ1bmt0aW9uIGvDtm5uZW4gU2llIHouIEIuIGRlbiBOYW1lbiBlaW5lcyBLb25maWd1cmF0aW9uc2VpbnRyYWdzIG1pdCBCZWRpbmd1bmdlbiB3aWUgIigqa2V5MSomJiprZXkyKikiIG9kZXIgIigqa2V5MSp8fCprZXkyKikiIHN1Y2hlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnWnVnZXdpZXNlbmUgQ29uZmlndXJhdGlvbiBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnWnVtIEt1bmRlbiB6dWdld2llc2VuZSBDb25maWd1cmF0aW9ucyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ1p1bSBLdW5kZW5iZW51dHplciB6dWdld2llc2VuZSBDb25maWd1cmF0aW9ucyBJdGVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1FaW5zdGVsbHVuZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQcsO8ZnQgTmFtZW4gYXVmIEVpbmRldXRpZ2tlaXQgaW5uZXJoYWxiIGRlciBzZWxiZW4gQ29uZmlndXJhdGlvbiBJdGVtLUtsYXNzZSBvZGVyIGdsb2JhbCwgZC5oLiBlcyB3ZXJkZW4gYWxsZSBDb25maWd1cmF0aW9uIEl0ZW1zIGplZ2xpY2hlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlIGJlaSBkZXIgUHLDvGZ1bmcgYXVmIGVpbmVuIGVpbmRldXRpZ2VuIE5hbWVuIGJlcsO8Y2tzaWNodGlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1fDpGhsZW4gU2llIGVpbiBNb2R1bCwgdW0gZWluIEJlbmVubnVuZ3NzY2hlbWEgenUgZXJ6d2luZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnV8OkaGxlbiBTaWUgZWluIE1vZHVsLCB1bSBlaW4gTnVtbWVybnNjaGVtYSB6dSBlcnp3aW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1fDpGhsZW4gU2llIGVpbiBNb2R1bCwgdW0gZWluIFZlcnNpb25za2V0dGVuc2NoZW1hIHp1IGVyendpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdXw6RobGVuIFNpZSBBdHRyaWJ1dGUsIHVtIGRpZSBFcnN0ZWxsdW5nIGVpbmVyIG5ldWVuIFZlcnNpb24gYXVzenVsw7ZzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1fDpGhsZW4gU2llIEthdGVnb3JpZW4gYXVzLCBkaWUgU2llIGRpZXNlciBLb25maWd1cmF0aW9uc2VsZW1lbnRrbGFzc2UgenVvcmRuZW4gbcO2Y2h0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnU3BhbHRlbmtvbmZpZ3VyYXRpb25zZmlsdGVyIGbDvHIgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ1NwYWx0ZW4sIGRpZSBpbiBkZXIgQ29uZmlnIEl0ZW0gw5xiZXJzaWNodCBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUgZ2VmaWx0ZXJ0IHdlcmRlbiBrw7ZubmVuLiBIaW53ZWlzOiBOdXIgQ29uZmlnIEl0ZW0gQXR0cmlidXRlIHVuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBzaW5kIGVybGF1YnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBoaW56dWbDvGdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gYmVhcmJlaXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIEl0ZW0tRXZlbnQtTW9kdWwsIGRhcyBkaWUgUHJvdG9rb2xsaWVydW5nIGRlciBIaXN0b3JpZSBpbSBBZ2VudGVuLUludGVyZmFjZSBlcm3DtmdsaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnQ29uZmlnLUVsZW1lbnQtRXJlaWduaXNtb2R1bCwgZGFzIENvbmZpZy1FbGVtZW50ZSBhdWYgaWhyZSBha3R1ZWxsZSBEZWZpbml0aW9uIGFrdHVhbGlzaWVydC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tSGlzdG9yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBkcnVja2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1EZXRhaWxhbnNpY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0tU3RydWt0dXJhbnNpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBkZXIgZm9sZ2VuZGVuIEtsYXNzZW4gd2VyZGVuIG5pY2h0IGF1ZiBkZW0gRWxhc3RpY3NlYXJjaC1TZXJ2ZXIgZ2VzcGVpY2hlcnQuIFVtIGRpZXMgYXVmIGJlc3RlaGVuZGUgQ0lzIGFuenV3ZW5kZW4sIG11c3MgZGllIENJLU1pZ3JhdGlvbiDDvGJlciBkaWUgS29uc29sZSBhdXNnZWbDvGhydCB3ZXJkZW4sIG5hY2hkZW0gZGllc2UgT3B0aW9uIGdlw6RuZGVydCB3dXJkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbWl0IGRlbiBmb2xnZW5kZW4gQmVyZWl0c3RlbGx1bmdzenVzdMOkbmRlbiB3ZXJkZW4gbmljaHQgYXVmIGRlbSBFbGFzdGljc2VhcmNoLVNlcnZlciBnZXNwZWljaGVydC4gVW0gZGllcyBhdWYgYmVzdGVoZW5kZSBDSXMgYW56dXdlbmRlbiwgbXVzcyBkaWUgQ0ktTWlncmF0aW9uIMO8YmVyIGRpZSBLb25zb2xlIGF1c2dlZsO8aHJ0IHdlcmRlbiwgbmFjaGRlbSBkaWVzZSBPcHRpb24gZ2XDpG5kZXJ0IHd1cmRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tTGltaXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbS1MaW1pdCBwcm8gU2VpdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0tU2FtbWVsYWt0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIEl0ZW0gU3VjaC1CYWNrZW5kIE5hdmlnYXRpb24gZGVzIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdEaWUgRGVmaW5pdGlvbmVuIHZvbiBDb25maWd1cmF0aW9uIEl0ZW0tTGltaXQgZXJzdGVsbGVuIHVuZCB2ZXJ3YWx0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnRXJ6ZXVndCBUaWNrZXRzIGbDvHIgQ29uZmlnSXRlbXMgenUgYmVzdGltbXRlbiBaZWl0cHVua3Rlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS3VuZGVuIGvDtm5uZW4gaGlzdG9yaXNjaGUgQ0ktVmVyc2lvbmVuIGVpbnNlaGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLdW5kZW4gaGFiZW4gZGllIE3DtmdsaWNoa2VpdCwgbWFudWVsbCB6d2lzY2hlbiBoaXN0b3Jpc2NoZW4gQ0ktVmVyc2lvbmVuIHp1IHdlY2hzZWxuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYXJkZGF0ZW4sIGRpZSBhdWYgZGVtIEF0dHJpYnV0IGbDvHIgZGVuIFN1Y2hiaWxkc2NoaXJtIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RlIHZlcndlbmRldCB3ZXJkZW4gc29sbGVuLiBCZWlzcGllbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGVuLCBkaWUgZsO8ciBkYXMgQXR0cmlidXQgZsO8ciBkZW4gU3VjaGJpbGRzY2hpcm0gZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGUgdmVyd2VuZGV0IHdlcmRlbiBzb2xsZW4uIEJlaXNwaWVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pZXJlbiBTaWUgQWN0aW9ucywgaW4gZGVuZW4gaW0gVmVya27DvHBmdGUtT2JqZWt0ZS1XaWRnZXQgZWluIEVpbnN0ZWxsdW5nZW4tS25vcGYgdmVyZsO8Z2JhciBzZWluIHNvbGwgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gQml0dGUgYmVhY2h0ZW4gU2llLCBkYXNzIGbDvHIgZGllc2UgQWN0aW9ucyBkaWUgZm9sZ2VuZGVuIEpTLSB1bmQgQ1NTLURhdGVpZW4gcmVnaXN0cmllcnQgc2VpbiBtw7xzc2VuOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB1bmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGVpbiBUZW1wbGF0ZTo6VG9vbGtpdC1TY2hlbWEgZsO8ciBWZXJzaW9uc3N0cmluZ3MuIFdpcmQgbnVyIHZlcndlbmRldCwgd2VubiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgYXVmIFRlbXBsYXRlVG9vbGtpdCBlaW5nZXN0ZWxsdCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmllcmVuIFNpZSBlaW5lIFJlaWhlIHZvbiBCZWRpbmd1bmdlbiwgdW50ZXIgZGVuZW4gZWluIEt1bmRlIGVpbiBLb25maWd1cmF0aW9uc29iamVrdCBzZWhlbiBkYXJmLiBEaWUgQmVkaW5ndW5nZW4ga8O2bm5lbiBvcHRpb25hbCBhdWYgYmVzdGltbXRlIEt1bmRlbmdydXBwZW4gYmVzY2hyw6Rua3Qgd2VyZGVuLiBEZXIgTmFtZSBpc3QgZGFzIGVpbnppZ2Ugb2JsaWdhdG9yaXNjaGUgQXR0cmlidXQuIFdlbm4ga2VpbmUgYW5kZXJlbiBPcHRpb25lbiBhbmdlZ2ViZW4gd2VyZGVuLCBzaW5kIGFsbGUgS29uZmlndXJhdGlvbnNvYmpla3RlIHVudGVyIGRpZXNlciBLYXRlZ29yaWUgc2ljaHRiYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGJlbsO2dGlndGVuIEJlcmVjaHRpZ3VuZ2VuIHp1bSBMw7ZzY2hlbiB2b24gSVRTTSBDb25maWd1cmF0aW9uIEl0ZW1zIGR1cmNoIGRhcyBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYmVuw7Z0aWd0ZW4gQmVyZWNodGlndW5nZW4sIHVtIElUU00tQ29uZmlndXJhdGlvbiBJdGVtcyDDvGJlciBkYXMgR2VuZXJpYyBJbnRlcmZhY2UgYWJ6dXJ1ZmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBiZW7DtnRpZ3RlbiBCZXJlY2h0aWd1bmdlbiwgdW0gbmFjaCBJVFNNLUNvbmZpZ3VyYXRpb24gSXRlbXMgbWl0IGRlbSBHZW5lcmljIEludGVyZmFjZSB6dSBzdWNoZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGVyZm9yZGVybGljaGVuIEJlcmVjaHRpZ3VuZ2VuIHp1bSBFaW5zdGVsbGVuIHZvbiBJVFNNLUtvbmZpZ3VyYXRpb25zZWxlbWVudGVuIMO8YmVyIGRpZSBnZW5lcmlzY2hlIFNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgw5xiZXJzaWNodHNtb2R1bCB1bSBkaWUgIktsZWluIi1BbnNpY2h0IGVpbmVyIENvbmZpZ3VyYXRpb24gSXRlbXMtTGlzdGUgYW56dXplaWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnTGVndCBmZXN0LCBvYiBkaWUgQmVzY2hyaWZ0dW5nZW4gZGVyIFZlcmJpbmR1bmdzdHlwZW4gaW4gZGVuIEtub3RlbnZlcmJpbmR1bmdlbiBhbmdlemVpZ3Qgd2VyZGVuIG3DvHNzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmllcnQgcmVndWzDpHJlIEF1c2Ryw7xja2UgaW5kaXZpZHVlbGwgZsO8ciBqZWRlcyBDb25maWd1cmF0aW9uIEl0ZW0sIHVtIGRlbiBOYW1lbiBkZXMgQ29uZmlndXJhdGlvbiBJdGVtIHp1IMO8YmVycHLDvGZlbiB1bmQgZW50c3ByZWNoZW5kZSBGZWhsZXJtZWxkdW5nZW4gYW56dXplaWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIHZlcmbDvGdiYXJlbiBTcGFsdGVuIGRlciBDSXMgaW4gZGVyIEtvbmZpZ3VyYXRpb25zw7xiZXJzaWNodCBpbiBBYmjDpG5naWdrZWl0IHZvbiBkZXIgQ0ktS2xhc3NlLiBKZWRlciBFaW50cmFnIG11c3MgYXVzIGVpbmVtIEtsYXNzZW5uYW1lbiB1bmQgZWluZW0gQXJyYXkgdm9uIHZlcmbDvGdiYXJlbiBGZWxkZXJuIGbDvHIgZGllIGVudHNwcmVjaGVuZGUgS2xhc3NlIGJlc3RlaGVuLiBEeW5hbWlzY2hlIEZlbGRlaW50csOkZ2UgbcO8c3NlbiBkYXMgU2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgZWluaGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1Lb25maWd1cmF0aW9uc2F0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEtvbmZpZ3VyYXRpb25zZXJnZWJuaXNzZXMgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1Lb25maWd1cmF0aW9uc2F0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIFN1Y2hlcmdlYm5pc3NlcyBkZXIgS3VuZGVuc2Nobml0dHN0ZWxsZSBuYWNoIEtvbmZpZy1FbGVtZW50ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdGFuZGFyZC1Lb25maWd1cmF0aW9uc2F0dHJpYnV0IGbDvHIgZGllIFNvcnRpZXJ1bmcgZGVzIEtvbmZpZ3VyYXRpb25zLVN1Y2hlcmdlYm5pc3NlcyBkaWVzZXIgT3BlcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTGVndCBkaWUgU3RhbmRhcmRyZWloZW5mb2xnZSBkZXIgS29uZmlndXJhdGlvbnNvYmpla3RlIGluIGRlbiBTdWNoZXJnZWJuaXNzZW4gZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlIGZlc3QuIFVwOiDDpGx0ZXN0ZXIgRWludHJhZyBvYmVuLiBOYWNoIHVudGVuOiBkYXMgbmV1ZXN0ZSBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBTdGFuZGFyZHJlaWhlbmZvbGdlIGRlciBLb25maWd1cmF0aW9uc29iamVrdGUgaW4gZGVuIFN1Y2hlcmdlYm5pc3NlbiBkZXIgS3VuZGVuc2Nobml0dHN0ZWxsZS4gT2Jlbjogw6RsdGVzdGVyIEVpbnRyYWcgZ2FueiBvYmVuLiBVbnRlbjogbmV1ZXN0ZSBvYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdMZWd0IGRpZSBTdGFuZGFyZHJlaWhlbmZvbGdlIGRlciBLb25maWd1cmF0aW9uc29iamVrdGUgaW0gU3VjaGVyZ2VibmlzIGRpZXNlciBPcGVyYXRpb24gZmVzdC4gVXA6IMOkbHRlc3RlciBFaW50cmFnIG9iZW4uIE5hY2ggdW50ZW46IGRhcyBOZXVlc3RlIG9iZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIHN0YW5kYXJkbcOkw59pZyBhbmdlemVpZ3RlbiBTcGFsdGVuIGRlciBDSXMgaW4gZGVyIEtvbmZpZ3VyYXRpb25zw7xiZXJzaWNodCBpbiBBYmjDpG5naWdrZWl0IHZvbiBkZXIgQ0ktS2xhc3NlLiBKZWRlciBFaW50cmFnIG11c3MgYXVzIGVpbmVtIEtsYXNzZW5uYW1lbiB1bmQgZWluZW0gQXJyYXkgdm9uIHZlcmbDvGdiYXJlbiBGZWxkZXJuIGbDvHIgZGllIGVudHNwcmVjaGVuZGUgS2xhc3NlIGJlc3RlaGVuLiBEeW5hbWlzY2hlIEZlbGRlaW50csOkZ2UgbcO8c3NlbiBkYXMgU2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUgZWluaGFsdGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdMZWd0IGRpZSBTdGFuZGFyZHRpZWZlIGRlciBCZXppZWh1bmdlbiBmZXN0LCBkaWUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgc3RhbmRhcmRtw6TDn2lnIGFuZ2V6ZWlndGUgU3VjaGF0dHJpYnV0IGbDvHIgZGllIFN1Y2hlIG5hY2ggS29uZmlndXJhdGlvbnNvYmpla3Rlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkYXMgc3RhbmRhcmRtw6TDn2lnIGFuZ2V6ZWlndGUgU3VjaGF0dHJpYnV0IGbDvHIgZGllIFN1Y2htYXNrZSBkZXMgS29uZmlndXJhdGlvbnNvYmpla3RzLiBCZWlzcGllbDogIktleSIgbXVzcyBkZW4gTmFtZW4gZGVzIGR5bmFtaXNjaGVuIEZlbGRlcyBlbnRoYWx0ZW4sIGluIGRpZXNlbSBGYWxsIFwnWFwnLCAiQ29udGVudCIgbXVzcyBkZW4gV2VydCBkZXMgZHluYW1pc2NoZW4gRmVsZGVzIGVudGhhbHRlbiwgYWJow6RuZ2lnIHZvbSBUeXAgZGVzIGR5bmFtaXNjaGVuIEZlbGRlcywgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyB1bmQgb2RlciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLVVudGVyb2JqZWt0IGRlciBLbGFzc2UgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSB2ZXJmw7xnYmFyZW4gU3BhbHRlbiBkZXIgQ0lzIGluIGRlciBLb25maWd1cmF0aW9uc8O8YmVyc2ljaHQgaW4gQWJow6RuZ2lna2VpdCB2b24gZGVyIENJLUtsYXNzZS4gSmVkZXIgRWludHJhZyBtdXNzIGF1cyBlaW5lbSBLbGFzc2VubmFtZW4gdW5kIGVpbmVtIEFycmF5IHZvbiB2ZXJmw7xnYmFyZW4gRmVsZGVybiBmw7xyIGRpZSBlbnRzcHJlY2hlbmRlIEtsYXNzZSBiZXN0ZWhlbi4gRHluYW1pc2NoZSBGZWxkZWludHLDpGdlIG3DvHNzZW4gZGFzIFNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIGVpbmhhbHRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBIw7ZoZSBkZXIgUmljaFRleHQtRWRpdG9yIEtvbXBvbmVudGUuIEdlYmVuIFNpZSBlaW5lbiBaYWhsZW4tIChQaXhlbCkgb2RlciBQcm96ZW53ZXJ0IChyZWxhdGl2KSBhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRpZSBBbnphaGwgZGVyIFplaWxlbiBmw7xyIGRlbiBFZGl0b3IgZGVyIENvbmZpZ3VyYXRpb24gSXRlbS1EZWZpbml0aW9uIGltIEFkbWluaXN0cmF0b3ItSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFJlaWhlbmZvbGdlIGRlciBWb3JmYWxsc3RhdHVzIHZvbiBob2NoIChic3B3LiBrcml0aXNjaCkgbmFjaCBuaWVkcmlnIChic3B3LiBmdW5rdGlvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmllcnQgcmVsZXZhbnRlIFZlcndlbmR1bmdzc3RhdHVzLCBpbiBkZW5lbiB2ZXJrbsO8cGZ0ZSBUaWNrZXRzIGRlbiBTdGF0dXMgZWluZXMgQ29uZmlndXJhdGlvbiBJdGVtcyBiZWVpbmZsdXNzZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdWNobGltaXQgZsO8ciBkaWUgSVRTTSBDb25maWd1cmF0aW9uLUFuc2ljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJ0IGRhcyBTdWNobGltaXQgZsO8ciBkaWUgQ29uZmlndXJhdGlvbiBJdGVtcy1TdWNoZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIFN1Y2hncmVuemUgZsO8ciBkZW4gQmlsZHNjaGlybSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0xlZ3QgZGllIFN1Y2hncmVuemUgZsO8ciBkZW4gQmlsZHNjaGlybSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIGZlc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVydCBkaWUgYW5nZXplaWd0ZW4gU3BhbHRlbiBpbiBkZXIgS29tcGxleGFuc2ljaHQgZGVyIFZlcmtuw7xwZnVuZ3N0YWJlbGxlIGbDvHIgYWxsZSBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3Nlbi4gV2VubiBlcyBrZWluZW4gRWludHJhZyBnaWJ0LCB3ZXJkZW4gZGllIFN0YW5kYXJkc3BhbHRlbiBhbmdlemVpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW4gZGVyIEtvbXBsZXhhbnNpY2h0IGRlciBWZXJrbsO8cGZ1bmdzdGFiZWxsZSBhYmjDpG5naWcgdm9uIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlLiBEZWZpbmllcnQgZGllIGFuZ2V6ZWlndGVuIFNwYWx0ZW4gdm9uIENvbmZpZ3VyYXRpb24gSXRlbXMgaW4gZGVyIENvbmZpZ3VyYXRpb24gSXRlbS3DnGJlcnNpY2h0IGluIEFiaMOkbmdpZ2tlaXQgdm9uIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlLiBKZWRlbSBFaW50cmFnIG3DvHNzZW4gZGVyIEtsYXNzZW5uYW1lIHVuZCBEb3BwZWxwdW5rdGUgdm9yYW5nZXN0ZWxsdCB3ZXJkZW4gKHouQi4gQ29tcHV0ZXI6OjopLiBFcyBnaWJ0IGVpbmlnZSBDb25maWd1cmF0aW9uIEl0ZW0tQXR0cmlidXRlLCBkaWUgYWxsZW4gQ29uZmlndXJhdGlvbiBJdGVtcyBnZW1laW5zYW0gc2luZCAoQmVpc3BpZWwgZsO8ciBkaWUgS2xhc3NlIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBVbSBlaW56ZWxuZSBDb25maWd1cmF0aW9uIEl0ZW0tQXR0cmlidXRlLCB3aWUgc2llIGluIGRlciBDb25maWd1cmF0aW9uIEl0ZW0tRGVmaW5pdGlvbiBkZWZpbmllcnQgc2luZCwgZGFyenVzdGVsbGVuLCBtdXNzIGRhcyBmb2xnZW5kZSBTY2hlbWEgdmVyd2VuZGV0IHdlcmRlbiAoQmVpc3BpZWwgZsO8ciBkaWUgS2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkthcGF6aXTDpHQ6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpLYXBheml0w6R0OjoxLiBXZW5uIGVzIGtlaW5lbiBFaW50cmFnIGbDvHIgZWluZSBDb25maWd1cmF0aW9uIEl0ZW0tS2xhc3NlIGdpYnQsIHdlcmRlbiBkaWUgU3RhbmRhcmRzcGFsdGVuIGFuZ2V6ZWlndC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdMZWd0IGZlc3QsIHdlbGNoZSBFbGVtZW50ZSBpbiBkZXIgZHJpdHRlbiBFYmVuZSBkZXIgSVRTTSBDb25maWcgSXRlbSBBQ0wtU3RydWt0dXIgZsO8ciAiQWN0aW9uIiB2ZXJmw7xnYmFyIHNpbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTGVndCBmZXN0LCB3ZWxjaGUgRWxlbWVudGUgaW4gZGVyIGVyc3RlbiBFYmVuZSBkZXIgSVRTTSBDb25maWcgSXRlbSBBQ0wtU3RydWt0dXIgdmVyZsO8Z2JhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdMZWd0IGZlc3QsIHdlbGNoZSBFbGVtZW50ZSBpbiBkZXIgendlaXRlbiBFYmVuZSBkZXIgSVRTTSBDb25maWcgSXRlbSBBQ0wtU3RydWt0dXIgdmVyZsO8Z2JhciBzaW5kLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdMZWd0IGZlc3QsIHdlbGNoZSBBcnQgdm9uIExpbmsgKGF1cyBkZXIgVGlja2V0cGVyc3Bla3RpdmUgYmVuYW5udCkgZGVuIFN0YXR1cyBlaW5lcyB2ZXJsaW5rdGVuIENJIGJlZWluZmx1c3NlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgd2VsY2hlciBUeXAgdm9uIFRpY2tldCBkZW4gU3RhdHVzIGVpbmVzIHZlcmtuw7xwZnRlbiBDb25maWd1cmF0aW9uIEl0ZW1zIGJlZWluZmx1c3NlbiBrYW5uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FrdHVhbGlzaWVydW5nIGRlciBEZWZpbml0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0gbMO2c2NoZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdGYXJiZSBWZXJ3ZW5kdW5nc3N0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGl6aWVyZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlcyBGZWxkLUVyZWlnbmlzbW9kdWwsIGRhcyBLb25maWd1cmF0aW9uc2RlZmluaXRpb25lbiBhbHMgbmljaHQgbWVociBzeW5jaHJvbiBtYXJraWVydCwgd2VubiBzaWNoIGRpZSBkYXJpbiBlbnRoYWx0ZW5lbiBkeW5hbWlzY2hlbiBGZWxkZXIgw6RuZGVybi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpZSBhbmdlemVpZ3RlbiBEeW5hbWlzY2hlbiBGZWxkZXIgaW4gZGVyIEFuc2ljaHQgInp1c8OkdHpsaWNoZSBJVFNNLUZlbGRlciIgaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNjaGUgRmVsZGVyLCBkaWUgaW4gZGVyIMOcYmVyc2ljaHRzbWFza2UgZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgYW5nZXplaWd0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSBGZWxkZXIsIGRpZSBpbiBkZXIgU3VjaG1hc2tlIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZSBmw7xyIEtvbmZpZ3VyYXRpb25zb2JqZWt0ZSBhbmdlemVpZ3Qgd2VyZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdBa3RpdmllcnQgZGllIEZ1bmt0aW9uICJTYW1tZWxha3Rpb24iIGbDvHIgZGFzIEFnZW50ZW4tRnJvbnRlbmQsIHVtIHp1ciBnbGVpY2hlbiBaZWl0IGFuIG1laHJlcmVuIENvbmZpZ3VyYXRpb24gSXRlbXMgYXJiZWl0ZW4genUga8O2bm5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FrdGl2aWVydCBkaWUgRnVua3Rpb24gIlNhbW1lbGFrdGlvbiIgbnVyIGbDvHIgZGllIGdlbGlzdGV0ZW4gR3J1cHBlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWt0aXZpZXJ0L2RlYWt0aXZpZXJ0IGRpZSBGdW5rdGlvbiwgSVRTTS1Lb25maWd1cmF0aW9uc2VsZW1lbnRlIGF1ZiBlaW5kZXV0aWdlIE5hbWVuIHp1IHByw7xmZW4uIEJldm9yIFNpZSBkaWVzZSBPcHRpb24gYWt0aXZpZXJlbiwgc29sbHRlbiBTaWUgSWhyIFN5c3RlbSBhdWYgYmVyZWl0cyB2b3JoYW5kZW5lIEtvbmZpZ3VyYXRpb25zZWxlbWVudGUgbWl0IGRvcHBlbHRlbiBOYW1lbiDDvGJlcnByw7xmZW4uIFNpZSBrw7ZubmVuIGRpZXMgbWl0IGRlbSBLb25zb2xlbmJlZmVobCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMgdHVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdFaW4gRXJlaWduaXNtb2R1bCBkYXMgYmVpbSBWZXJrbsO8cGZlbiB2b24gVGlja2V0cyBtaXQgQ29uZmlndXJhdGlvbiBJdGVtcyBkZW4gU3RhdHVzIGRlcyBDb25maWd1cmF0aW9uIEl0ZW1zIHZlcsOkbmRlcnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0ZlbGRlciBkZXMgS29uZmlndXJhdGlvbnNlbGVtZW50aW5kZXgsIGRpZSBmw7xyIGRpZSBWb2xsdGV4dHN1Y2hlIHZlcndlbmRldCB3ZXJkZW4uIEZlbGRlciB3ZXJkZW4gZWJlbmZhbGxzIGdlc3BlaWNoZXJ0LCBzaW5kIGFiZXIgZsO8ciBkaWUgR2VzYW10ZnVua3Rpb25hbGl0w6R0IG5pY2h0IHp3aW5nZW5kIGVyZm9yZGVybGljaC4gRGllIEF1Zm5haG1lIHZvbiBBbmjDpG5nZW4ga2FubiBkZWFrdGl2aWVydCB3ZXJkZW4sIGluZGVtIGRlciBFaW50cmFnIGF1ZiAwIGdlc2V0enQgb2RlciBnZWzDtnNjaHQgd2lyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0ltIEluZGV4IGRlciBLb25maWd1cmF0aW9uc2VsZW1lbnRlIGdlc3BlaWNoZXJ0ZSBGZWxkZXIsIGRpZSBuZWJlbiBkZXIgVm9sbHRleHRzdWNoZSBhdWNoIGbDvHIgYW5kZXJlIFp3ZWNrZSB2ZXJ3ZW5kZXQgd2VyZGVuLiBGw7xyIGRpZSB2b2xsc3TDpG5kaWdlIEZ1bmt0aW9uYWxpdMOkdCBzaW5kIGFsbGUgRmVsZGVyIG9ibGlnYXRvcmlzY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnRsO8ciBqZWRlbiBXZWJzZXJ2aWNlIChTY2hsw7xzc2VsKSBrYW5uIGVpbiBBcnJheSB2b24gS2xhc3NlbiAoV2VydCkgZGVmaW5pZXJ0IHdlcmRlbiwgYXVmIGRpZSBkZXIgSW1wb3J0IGJlc2NocsOkbmt0IHdpcmQuIEbDvHIgYWxsZSBnZXfDpGhsdGVuIEtsYXNzZW4gb2RlciBhbGxlIHZvcmhhbmRlbmVuIEtsYXNzZW4gbcO8c3NlbiBkaWUgaWRlbnRpZml6aWVyZW5kZW4gQXR0cmlidXRlIGluIGRlciBJbnZva2Vya29uZmlndXJhdGlvbiBhdXNnZXfDpGhsdCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtTW9kdWxyZWdpc3RyaWVydW5nIGbDvHIgZGllIENvbmZpZ0l0ZW1GZXRjaC1BdWZydWZlcnNjaGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZS1Nb2R1bHJlZ2lzdHJpZXJ1bmcgZsO8ciBkaWUgQ29uZmlnSXRlbUZldGNoLUF1ZnJ1ZmVyc2NoaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZS1Nb2R1bHJlZ2lzdHJpZXJ1bmcgZsO8ciBkaWUgQ29uZmlnSXRlbUZldGNoLUF1ZnJ1ZmVyc2NoaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdFbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSBDb25maWd1cmF0aW9uIEl0ZW0tw5xiZXJzaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdWb3JmYWxsWnVzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2NobGllw590IEJlcmVpdHN0ZWxsdW5nc3p1c3TDpG5kZSBpbiBkaWUgU3VjaGUgbmFjaCBLb25maWd1cmF0aW9uc2VsZW1lbnRlbiBpbiBkZXIgS3VuZGVuc2Nobml0dHN0ZWxsZSBlaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NjaGxpZcOfdCBWb3JmYWxsc3p1c3TDpG5kZSBpbiBkaWUgS29uZmlndXJhdGlvbnNzdWNoZSBkZXIgS3VuZGVuc2Nobml0dHN0ZWxsZSBlaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltYWxlIEFuemFobCBkZXIgS29uZmlndXJhdGlvbnNvYmpla3RlLCBkaWUgaW0gRXJnZWJuaXMgZGllc2VyIE9wZXJhdGlvbiBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCB6dXIgw5xiZXJwcsO8ZnVuZyBkZXIgR3J1cHBlLCBkaWUgZsO8ciBlaW5lIEtsYXNzZSB2ZXJhbnR3b3J0bGljaCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwsIHVtIGRpZSBHcnVwcGUgenUgw7xiZXJwcsO8ZmVuLCBkaWUgZsO8ciBlaW4gQ29uZmlndXJhdGlvbiBJdGVtIHZlcmFudHdvcnRsaWNoIGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB6dW0gR2VuZXJpZXJlbiB2b24gSVRTTS1Db25maWd1cmF0aW9uIEl0ZW0tU3RhdGlzdGlrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtZSBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVyIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuemFobCBkZXIgS29uZmlndXJhdGlvbnNwdW5rdGUsIGRpZSBhdWYgamVkZXIgU2VpdGUgZWluZXMgU3VjaGVyZ2Vibmlzc2VzIGluIGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW56YWhsIGRlciBLb25maWd1cmF0aW9uc3B1bmt0ZSwgZGllIGF1ZiBqZWRlciBTZWl0ZSBlaW5lcyBTdWNoZXJnZWJuaXNzZXMgaW4gZGVyIEt1bmRlbnNjaG5pdHRzdGVsbGUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGUsIG5hY2ggZGVuZW4gZ2VzdWNodCB3ZXJkZW4gc29sbCwgd2llIHZpZWxlIEVpbnRyw6RnZSB1bmQgd2VsY2hlIEF0dHJpYnV0ZSBhbmdlemVpZ3Qgd2VyZGVuIHNvbGxlbi4gQ29uZmlnSXRlbS1BdHRyaWJ1dGUgbcO8c3NlbiBleHBsaXppdCDDvGJlciBFbGFzdGljc2VhcmNoIGdlc3BlaWNoZXJ0IHdlcmRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnw5xiZXJzaWNodC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSBLYXRlZ29yaWVuIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RrbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgU3BhbHRlbmZpbHRlciBkZXIga2xlaW5lbiBLb25maWd1cmF0aW9uc8O8YmVyc2ljaHQuIEJpdHRlIGJlYWNodGVuIFNpZTogV2VubiBTaWUgXCdBY3RpdmVcJyBhdWYgMCBzZXR6ZW4sIGvDtm5uZW4gQWdlbnRlbiBkaWUgRWluc3RlbGx1bmdlbiBkaWVzZXIgR3J1cHBlIG51ciBpbiBpaHJlbiBwZXJzw7ZubGljaGVuIFByw6RmZXJlbnplbiBiZWFyYmVpdGVuLCBBZG1pbmlzdHJhdG9yZW4ga8O2bm5lbiBqZWRvY2ggd2VpdGVyaGluIGRpZSBFaW5zdGVsbHVuZ2VuIGVpbmVzIGFuZGVyZW4gQmVudXR6ZXJzIGJlYXJiZWl0ZW4uIFZlcndlbmRlbiBTaWUgXCdQcmVmZXJlbmNlR3JvdXBcJywgdW0genUgc3RldWVybiwgaW4gd2VsY2hlbSBCZXJlaWNoIGRpZXNlIEVpbnN0ZWxsdW5nZW4gaW4gZGVyIEJlbnV0emVyb2JlcmZsw6RjaGUgYW5nZXplaWd0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbml0aW9uIHZvbiBGYXJiZW4gZsO8ciBWZXJ3ZW5kdW5nc3N0YXR1cyBpbiBkZW4gcGVyc8O2bmxpY2hlbiBFaW5zdGVsbHVuZ2VuIGltIEFnZW50ZW4tSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIFZlcndlbmR1bmdzc3RhdHVzIGluIGRlbiBwZXJzw7ZubGljaGVuIEVpbnN0ZWxsdW5nZW4gaW0gQWdlbnRlbi1JbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRpZSB6dWdyaWZmc2JlcmVjaHRpZ3RlbiBCZWlzcGllbGdydXBwZW4gZGVyIEdlbmVyYWwgQ2F0YWxvZy1BdHRyaWJ1dGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIGbDvHIgZGFzIE5hbWVuc21vZHVsIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RrbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRhcyBOdW1tZXJubW9kdWwgZsO8ciBLb25maWd1cmF0aW9uc29iamVrdGtsYXNzZW4gaW4gZGVyIEVpbnN0ZWxsdW5nc2Fuc2ljaHQgZGVyIEFnZW50ZW5zY2huaXR0c3RlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkaWUgU2VpdGVuLCBpbiBkZW5lbiBDb25maWd1cmF0aW9uIEl0ZW1zIGFuZ2V6ZWlndCB3ZXJkZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRhcyBWZXJzaW9uc3N0cmluZ21vZHVsIGbDvHIgS29uZmlndXJhdGlvbnNvYmpla3RrbGFzc2VuIGluIGRlciBFaW5zdGVsbHVuZ3NhbnNpY2h0IGRlciBBZ2VudGVuc2Nobml0dHN0ZWxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgZsO8ciBkYXMgVmVyc2lvbnN0cmluZy1UZW1wbGF0ZS1Ub29sa2l0LU1vZHVsIGbDvHIgQ29uZmlnLUl0ZW0tS2xhc3NlbiBpbiBkZXIgRWluc3RlbGx1bmdzYW5zaWNodCBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciBmw7xyIGRlbiBWZXJzaW9ucy1UcmlnZ2VyIGbDvHIgQ29uZmlnLUl0ZW0tS2xhc3NlbiBpbiBkZXIgRWluc3RlbGx1bmdzYW5zaWNodCBkZXIgQWdlbnRlbnNjaG5pdHRzdGVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnRsO8aHJ0IGRpZSBrb25maWd1cmllcnRlIEFrdGlvbiBmw7xyIGplZGVzIEVyZWlnbmlzIGbDvHIgamVkZW4ga29uZmlndXJpZXJ0ZW4gV2Vic2VydmljZSBhdXMgKGFscyBJbnZva2VyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0JlcmVjaHRpZ3VuZ3NncnVwcGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmVpZ3QgZGllIENvbmZpZ3VyYXRpb24gSXRlbS1IaXN0b3JpZSAodW1nZWtlaHJ0ZSBSZWloZW5mb2xnZSkgaW0gQWdlbnRlbi1JbnRlcmZhY2UgYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0RpZSBTdGFuZGFyZGthdGVnb3JpZSwgZGllIGFuZ2V6ZWlndCB3aXJkLCB3ZW5uIGtlaW5lIEthdGVnb3JpZSBhdXNnZXfDpGhsdCBpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdEZXIgSWRlbnRpZmlrYXRvciBmw7xyIGVpbiBDb25maWd1cmF0aW9uIEl0ZW0sIGJzcHcuICJDb25maWdJdGVtIyIgLCAiTWVpbkNvbmZpZ0l0ZW0jIi4gRGVyIFN0YW5kYXJkIGlzdCAiQ29uZmlnSXRlbSMiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnTMO2c3QgYXV0b21hdGlzY2ggZGVuIEF1ZnJ1ZiB2b24gQ29uZmlnSXRlbUZldGNoIGF1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpb24gU3RyaW5nLUF1c2RydWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nLU1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpb24gQXVzbMO2c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJ0RlZmluaWVydCwgb2IgRmVsZGVyIGF1dG9tYXRpc2NoIGJlZsO8bGx0ICgxKSwgdW5kIG9iIGF1dG9tYXRpc2NoIGJlZsO8bGx0ZSBGZWxkZXIgaW4gZGVuIFRpY2tldGZvcm11bGFyZW4gYXVzZ2VibGVuZGV0IHdlcmRlbiBzb2xsZW4gKDIpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdPYiBkaWUgQXVzZsO8aHJ1bmcgdm9uIENvbmZpZ0l0ZW1BQ0wgZHVyY2ggw5xiZXJwcsO8ZnVuZyB2b24gendpc2NoZW5nZXNwZWljaGVydGVuIEZlbGRhYmjDpG5naWdrZWl0ZW4gdmVybWllZGVuIHdlcmRlbiBrYW5uLiBEaWVzIGthbm4gZGllIExhZGV6ZWl0ZW4gdm9uIEZvcm11bGFyZW4gdmVyYmVzc2VybiwgbXVzcyBhYmVyIGRlYWt0aXZpZXJ0IHdlcmRlbiwgd2VubiBBQ0xNb2R1bGUgZsO8ciBJVFNNQ29uZmlnSXRlbS0gdW5kIEZvcm0tUmV0dXJuVHlwZXMgdmVyd2VuZGV0IHdlcmRlbiBzb2xsZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdEaWUgYWxsZ2VtZWluZW4gSW5mb3JtYXRpb25lbiB3ZXJkZW4gaW4gZGVyIEtvcGZ6ZWlsZSBhbmdlemVpZ3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAnS2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ0dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ1Bvc3QtcHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdQcmUtcHJvZHVrdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdQcm9kdWt0aXYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgWm9sbCAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIFpvbGwgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBab2xsICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IFpvbGwgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS1ab2xsLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IFpvbGwgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgWm9sbCAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtWm9sbC1HZXN0ZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBab2xsICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtWm9sbC1HZXN0ZWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBab2xsICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBab2xsICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBab2xsICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgWm9sbCAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBab2xsICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBab2xsICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBab2xsICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBab2xsICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBab2xsICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgWm9sbCAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IFpvbGwgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBab2xsICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBab2xsICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIFpvbGwgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgWm9sbCAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIFpvbGwgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBab2xsICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgWm9sbCAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgWm9sbCAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgWm9sbCAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBab2xsICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IFpvbGwgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgWm9sbCAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQnVjaGhhbHR1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJ0J1Y2hoYWx0dW5nc2luZm9ybWF0aW9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXNzenV3ZWlzdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdWZXJ3YWx0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9nZXMgVGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0dlcsOkdGV0eXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdCYXR0ZXJpZWthcGF6aXTDpHQgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdBa2t1LVR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0dlYsOkdWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdCdXMtU2Nobml0dHN0ZWxsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVS1LbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGF6aXTDpHQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thcGF6aXTDpHQgcHJvIEdyYWZpa2thcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS2FydGVubnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS2FydGVubGVzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS2FydGUgVHlwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLdW5kZW4tWmVydGlmaWthdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS3VuZGVuLVNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0t1bmRlbmthdGVnb3JpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdUYWt0cmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVGFrdGZyZXF1ZW56JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDb2RlIFNpZ25pbmctWmVydGlmaWthdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuenRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdCZXJhdHVuZ3N2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IFZlcnRyaWVic3BhcnRuZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdDb250YWluZXItVmVyd2FsdHVuZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ1ZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1ZlcnRyYWdzYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnVmVydHJhZ3NkYXVlciB2b20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnVmVydHJhZ3NkYXVlciBiaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnU2NobnVybG9zZXMgVGVsZWZvbiAoREVDVC1UZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLb3N0ZW50csOkZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQW56YWhsIGRlciBMaXplbnplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRXJzdGVsbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0JlbnV0emVyZGVmaW5pZXJ0ZXMgR2VzdGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZpZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXR1bSBkZXIgUmVjaG51bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdHVtIGRlciBCZXN0ZWxsdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXR1bSBkZXIgQsO8cmdzY2hhZnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0dW0gZGVyIFZlcsO2ZmZlbnRsaWNodW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2t1bWVudGVuc2lnbmF0dXItWmVydGlmaWthdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJLUdlc3RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtTWFpbC1aZXJ0aWZpa2F0ZSAoUy9NSU1FLVplcnRpZmlrYXRlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdBcmJlaXRzdmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0VuZC1JUC1BZHJlc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnRW5kZSBkZXIgVW50ZXJzdMO8dHp1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdWZXJmYWxsc2RhdHVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFeHRlcm5lcyBGZXN0cGxhdHRlbmxhdWZ3ZXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1NjaHd1bmdyYWQtRW5lcmdpZXNwZWljaGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRm9ybWZha3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbmNoaXNldmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0FsbGdlbWVpbmUgSW5mb3JtYXRpb25lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpa2thcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlra2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR3YXJlLU1vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdIYXJkd2FyZSBHZXdpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdLb3BmaMO2cmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtUHJvdG9rb2xsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0lkZW50aXTDpHRzLSB1bmQgWnVncmlmZnNtYW5hZ2VtZW50IChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRhcm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0ludmVyc3RtZW50a29zdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnUmVjaG51bmdzbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELU1vbml0b3IgKEZsw7xzc2lna3Jpc3RhbGxhbnplaWdlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELU1vbml0b3IgKExpY2h0IGVtaXR0aWVyZW5kZSBEaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnRmVzdG5ldHp0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0JyZWl0ZW5ncmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnU2NoaWNodCAxOiBQaHlzaWthbGlzY2hlIFNjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnU2NoaWNodCAyOiBEYXRlbnZlcmJpbmR1bmdzc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnU2NoaWNodCAzOiBOZXR6d2Vya3NjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnU2NoaWNodCAzOiBOZXR6d2Vya3NjaGljaHQgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdTY2hpY2h0IDQ6IFRyYW5zcG9ydHNjaGljaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ1NjaGljaHQgNTogU2l0enVuZ3NzY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ1NjaGljaHQgNjogUHLDpHNlbnRhdGlvbnNzY2hpY2h0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnU2NoaWNodCA3OiBBbndlbmR1bmdzc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdQYWNodHZlcnRyYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaXplbnp2ZXJlaW5iYXJ1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJ0xpemVuemFuemFobCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpemVuenNjaGzDvHNzZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGl6ZW56LVR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGl6ZW56emVpdHJhdW0gdm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGl6ZW56ZGF1ZXIgYmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtLUVpc2VuLVBob3NwaGF0LUFra3UgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaXRoaXVtLUlvbmVuLUFra3UgKExpLUlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdEYXJsZWhlbnN2ZXJ0cmFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdBbmdlc2llZGVsdCBpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMw6RuZ2VuZ3JhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ0hlcnN0ZWxsZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltYWxlIFRyYWdmw6RoaWdrZWl0IChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdTcGVpY2hlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1NwZWljaGVyIFR5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdIYW5keW51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9FaW5nZWJldHRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Jlc2NocmVpYnVuZyBkZXMgTW9kZWxscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9yLUF1ZmzDtnN1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvciBHcsO2w59lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnTWF1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTmV0endlcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnTmV0endlcmstSW5mb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ05ldHp3ZXJrLUluZm9ybWF0aW9uZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ05ldHp3ZXJrc2NoaWNodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1NZXRhbGxoeWRyaWQtQWtrdSAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnVmVydHJhdWxpY2hrZWl0c3ZlcmVpbmJhcnVuZyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05vdGVib29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnQW56YWhsIGRlciBDUFVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0FuemFobCBkZXIgUkFNLU1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdBbnphaGwgZGVyIEdyYWZpa2thcnRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRC1Nb25pdG9yIChPcmdhbmlzY2hlIExldWNodGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdCZXRyaWVic2tvc3Rlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdCZXN0ZWxsbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnU29uc3RpZ2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdBdXNnw6RuZ2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNjaGFmdHNhYmtvbW1lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICdVbmJlZnJpc3RldGUgTGl6ZW56ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1J1Zm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbiBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdQaHlzaWthbGlzY2hlIEtlcm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnU3Ryb21saWVmZXJ1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdHZWthdWZ0IGJlaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjay1UaWVmZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JlZ2FsZWluaGVpdGVuIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUmF1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1LYXJ0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMtWmVydGlmaWthdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdLYXVmdmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpdGVudGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdWZXJzY2hsb3NzZW5lIEJsZWktU8OkdXJlLUJhdHRlcmllIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICdTaXR6cGxhdHpsaXplbnplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpZW5udW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyLVNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnRGllbnN0bGVpc3R1bmdzdmVydHJhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2UtVGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ0J1Y2hzZSBUeXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ1JlZG5lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQtSVAtQWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnTGFnZXJ1bmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdTcGVpY2hlci1QYXJ0aXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnQWJvbm5lbWVudC1iYXNpZXJ0ZSBMaXplbnplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnVG9jaHRlcmdlc2VsbHNjaGFmdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnWnVzYW1tZW5mYXNzdW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0bDpGRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFmaWtrYXJ0ZW4tUkFNIGluc2dlc2FtdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIGluc2dlc2FtdCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdUb3VjaHNjcmVlbi1Nb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVHVybSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLUh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLUhlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC1UZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJ1ZvbHVtZW5saXplbnplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ86Vz4DOr8+DzrfPgiDOsc69zrHOts6uz4TOt8+Dzrcgz4POtSDPgM+Bzr/Ot86zzr/Pjc68zrXOvc61z4IgzrXOus60z4zPg861zrnPgj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyDOs865zrEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ86Vz4DOr8+AzrXOtM6/IM6yzqzOuM6/z4XPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ86czrXOs86tzrjPhc69z4POty/Oo868zq/Ous+Bz4XOvc+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnzpXPgM6vz4TOtc+Fzr7OtyDOvM6tzrPOuc+Dz4TOv8+FIM61z4DOuc+Azq3OtM6/z4Ugz4PPhc69zrTOrc+DzrXPic69IM6zzrnOsSDPhM6/IENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnzqPPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ86gzrvOt8+Bzr/Phs6/z4HOr861z4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnzqTPgc6tz4fOv8+Fz4POsSDOus6xz4TOrM+Dz4TOsc+DzrcgzrHOvc6sz4DPhM+Fzr7Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfOpM+Bzq3Ph86/z4XPg86xIM66zrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnzqTOtc67zrXPhc+EzrHOr86xIM6xzrvOu86xzrPOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfOpM61zrvOtc+Fz4TOsc6vzrEgzrHOu867zrHOs86uIM6xz4DPjCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ86kzrEgQ29uZmlnSXRlbXMgz4POsc+CJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ86Rzr3Osc62zq7PhM63z4POtyBDb25maWdJdGVtJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnzpjOsSDOtc65z4POsc+HzrjOv8+Nzr0gzr/OuSDOsc66z4zOu86/z4XOuM61z4IgzrrOu86sz4POtc65z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnzpjOsSDOtc65z4POsc+HzrjOv8+Nzr0gzr/OuSDOsc66z4zOu86/z4XOuM6/zrkgz4HPjM67zr/OuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICfOo863zrzOtc65z47Pg8+EzrUgz4zPhM65IM64zrEgzrTOt868zrnOv8+Fz4HOs863zrjOv8+Nzr0gzrXPgM6vz4POt8+CIM+EzrEgzrHOvc+Ezq/Pg8+Ezr/Ouc+HzrEgzrTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xIM66zrHOuSDOv865IM66zrvOrM+DzrXOuc+CIEdlbmVyYWxDYXRhbG9nIM66zrHOuSDOtM61zr0gz4XPgM6sz4HPh861zrkgzrHPhc+Ez4zOvM6xz4TOtyDOsc+GzrHOr8+BzrXPg863Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ86Yzq3Ou861z4TOtSDOvc6xIM+Az4HOv8+Hz4nPgc6uz4POtc+EzrU7JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ86nz4HOtc65zqzOts61z4PPhM61IEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICfOnyDOv8+BzrnPg868z4zPgiDOtM61zr0gzrXOr869zrHOuSDOrc6zzrrPhc+Bzr/PgiDOus6xz4TOsc66zrXPgc68zrHPhM65z4POvM+Mz4IgWUFNTC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfOlc+AzrnPg866z4zPgM63z4POtzogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ86UzrXOvSDOrc+HzrXOuSDOtM6/zrjOtc6vIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfOp8+BzrXOuc6szrbOtc+Dz4TOtSDPhM6/z4XOu86sz4fOuc+Dz4TOv869IM6tzr3OsSDOtc+AzrnOu861zrPOvM6tzr3OvyDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4IhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnzpTOtc69IM6tz4fOtc+EzrUgz4DPgc+Mz4POss6xz4POtyDOtc6zzrPPgc6xz4bOrs+CIM+DzrUgzrHPhc+Ez4wgz4TOvyDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4I6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfOlM61zr0gzq3Ph861zrkgzr/Pgc65z4PPhM61zq8gzr/Pgc65z4POvM+Mz4IgzrPOuc6xIM+EzrfOvSDOus67zqzPg863ICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnzqTOvyDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4IgIiVzIiDOtM61zr0gzrLPgc6tzrjOt866zrUgz4PPhM63IM6yzqzPg863IM60zrXOtM6/zrzOrc69z4nOvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfOlM61zr0gzrzPgM+Mz4HOtc+DzrUgzr3OsSDOtM65zrHOs8+BzqzPiM61zrkgz4TOvyBjb25maWdpdGVtIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnzpTOtc69IM6yz4HOrc64zrfOus61IM6tzrrOtM6/z4POtyDOs865zrEgz4TOvyBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ86UzrXOvSDOtM6vzr3Otc+EzrHOuSBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIM6uIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzrTOr869zrXPhM6xzrkgzrrOsc68zq/OsSDPgM+Bz4zPg86yzrHPg863ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOvM+GzrHOvc65z4PPhM61zq8gz4TOvyDOuc+Dz4TOv8+BzrnOus+MLCDOtM61zr0gzrTOr869zrXPhM6xzrkgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ86UzrXOvSDOvM+Azr/Pgc61zq8gzr3OsSDOtc68z4bOsc69zrnPg8+EzrXOryDPhM6/IM65z4PPhM6/z4HOuc66z4wsIM60zrXOvSDOrc+Hzr/Phc69IM60zr/OuM61zq8gzrTOuc66zrHOuc+OzrzOsc+EzrEgz4DPgc+Mz4POss6xz4POt8+CISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnzp3Orc6/IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnzp3Orc6xIM6tzrrOtM6/z4POtyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrnPgiDOv868zqzOtM61z4IgzrTOuc66zrHOuc+JzrzOrM+Ez4nOvSDPhM6/z4Ugz4DOsc+BzrHOtM61zq/Os868zrHPhM6/z4Igz4TPic69IM6zzrXOvc65zrrPjs69IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z47OvSDOus6xz4TOsc67z4zOs86/z4UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ86Vzr3Ot868zq3Pgc+Jz4POtyDOus6xz4TOrM+Dz4TOsc+DzrfPgiDPgM61z4HOuc+Dz4TOsc+EzrnOus6/z40gKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSDOtM65zrHOs8+BzqzPhs63zrrOtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ86gz4HOv8+Dz4TOrc64zrfOus61IM+Dz43Ovc60zrXPg868zr/PgiDPgM+Bzr/PgiAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ86UzrnOsc6zz4HOsc+Gzq4gz4PPhc69zrTOrc+DzrzOv8+FIM+Az4HOv8+CICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnzp8gzr/Pgc65z4POvM+Mz4IgQ29uZmlnSXRlbSDOtc69zrfOvM61z4HPjs64zrfOus61IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfOjM69zr/OvM6xIM61zr3Ot868zrXPgc+JzrzOrc69zr8gKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ86UzrXOvSDOvM+Azr/Pgc61zq8gzr3OsSDOtc68z4bOsc69zrnPg8+EzrXOryDPhM6/IM+Dz4TOv865z4fOtc6vzr8sIM60zrXOvSDOrc+Hzr/Phc69IM60zr/OuM61zq8gzrTOuc66zrHOuc+OzrzOsc+EzrEgz4DPgc+Mz4POss6xz4POt8+CIM6zzrnOsSDPhM6/IENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ86IzrrOtM6/z4POtyAlcyDOtM65zrHOs8+BzqzPhs63zrrOtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzrTOr869zrXPhM6xzrkgQ29uZmlnSXRlbUlEIM6uIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnzpTOtc69IM68z4DOv8+BzrXOryDOvc6xIM61zrzPhs6xzr3Ouc+Dz4TOtc6vIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLCDOtM61zr0gzq3Ph86/z4XOvSDOtM6/zrjOtc6vIM60zrnOus6xzrnPjs68zrHPhM6xIM+Az4HPjM+DzrLOsc+DzrfPgiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfOpM6/IENvbmZpZ0l0ZW1JRCAlcyDOtM61zr0gzrLPgc6tzrjOt866zrUgz4PPhM63IM6yzqzPg863IM60zrXOtM6/zrzOrc69z4nOvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ8+Ez4XPgM+JzrzOrc69zr8gzrHPgM+MICVzIM+Dz4TOvyAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnzpzOtyDOrc6zzrrPhc+Bzr8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfOlM61zr0gzrTOr869zrXPhM6xzrkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfOlM61zr0gzrTOr869zr/Ovc+EzrHOuSDOtM65zrrOsc65z47OvM6xz4TOsSDPgM+Bz4zPg86yzrHPg863z4IgzrPOuc6xIM6xz4XPhM6uIM+EzrfOvSDOus67zqzPg863ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnzprOsc69zq3Ovc6xIM6xz4DOv8+Ezq3Ou861z4POvM6xISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ86Rz4DOv8+EzrXOu86tz4POvM6xz4TOsSDOsc69zrHOts6uz4TOt8+DzrfPgiDOsc69z4TOuc66zrXOuc68zq3Ovc6/z4UgQ29uZmlnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfOlM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrXOvM+GzrHOvc65z4PPhM61zq8gz4TOvyDPg8+Ezr/Ouc+HzrXOr86/LCDOtM61zr0gzq3Ph86/z4XOvSDOtM6/zrjOtc6vIM60zrnOus6xzrnPjs68zrHPhM6xIM+Az4HPjM+DzrLOsc+DzrfPgiDOs865zrEgz4TOvyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfOpM6/IENvbmZpZ0l0ZW0gzrTOtc69IM6yz4HOrc64zrfOus61ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfOlM61zr0gzrLPgc6tzrjOt866zrHOvSDOtc66zrTPjM+DzrXOuc+CISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ867zrXOuc+Ezr/Phc+BzrPOuc66z4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ8+Az4HOv861zrnOtM6/z4DOv86vzrfPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnz4DOtc+BzrnPg8+EzrHPhM65zrrPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnzpcgzrrOsc+EzqzPg8+EzrHPg863IM6xzr3OrM+Az4TPhc6+zrfPgiDOsc+Fz4TOv8+NIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ86XIM66zrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4IgzrHPhc+Ezr/PjSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfOlM61zr0gz4XPgM6sz4HPh861zrkgzqzOtM61zrnOsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfOps6vzrvPhM+Bzr8gzqzOus+Fz4HOvyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ86fzrkgz4DOsc+BzrHOvM6tz4TPgc6/z4XPgiDOsc69zrHOts6uz4TOt8+DzrfPgiDOtc6vzr3Osc65IM6szrrPhc+BzrXPgiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICfOlc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ86kz43PgM6/z4IgzrrOsc+EzqzPg8+EzrHPg863z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ86kz4HOrc+Hzr/OvSDPgM61z4HOuc+Dz4TOsc+EzrnOus+MIM6kz43PgM6/z4IgzrrOsc+EzqzPg8+EzrHPg863z4InOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnzpzOtc+EzrHOvs+NJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfOoM61z4HOuc6/z4HOuc+DzrzOv86vIM66zrvOrM+DzrfPgiDOs865zrEgz4TOvyDPg8+Ezr/Ouc+HzrXOr86/IM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ86Vz4DOuc67zq3Ovs+EzrUgzrzOr86xIM6uIM+AzrXPgc65z4PPg8+Mz4TOtc+BzrXPgiDOus67zqzPg861zrnPgiDOs865zrEgzr3OsSDPgM61z4HOuc6/z4HOr8+DzrXPhM61IM+EzrEgzrXPgM65zrvOrc6+zrnOvM6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnzqDOtc+BzrnOv8+BzrnPg868zr/OryDOus67zqzPg863z4IgzrPOuc6xIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnzpXPgM65zrvOrc6+z4TOtSDOvM6vzrEgzq4gz4DOtc+BzrnPg8+Dz4zPhM61z4HOtc+CIM66zrvOrM+DzrXOuc+CIM6zzrnOsSDOvc6xIM+AzrXPgc65zr/Pgc6vz4POtc+EzrUgz4TOsSDOtc+AzrnOu86tzr7Ouc68zrEgz4PPhM6/zrnPh861zq/OsSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnzpTPhc69zrHOvM65zrrPjCAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAozojOus60zr/Pg863KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM6xzr3Osc+Gzr/Pgc6sz4Igz4PPhc69zrTOrc+DzrzOv8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ86VzqzOvSDOsc+Fz4TOriDOtyDPg8+Nzr3OtM61z4POtyDOuc+Dz4fPjc61zrkgzrPOuc6xIM+Ezr8gQ29uZmlnSXRlbSDOriDPhM63IM+Dz4TOsc+EzrnOus6uIM6tzrrOtM6/z4POtyDPhM6/z4UgzrHOvc+EzrnOus61zrnOvM6tzr3Ov8+FIM6xzr3Osc+Gzr/Pgc6sz4IuIM6fIM+Fz4DOv867zr/Os865z4POvM+Mz4Igz4TOt8+CIM+Ez4HOrc+Hzr/Phc+DzrHPgiDOus6xz4TOrM+Dz4TOsc+DzrfPgiDPg8+FzrzOss6szr3PhM6/z4IgzrXOus+EzrXOu861zq/PhM6xzrkgzrzPjM69zr8gz4POtSDOtM+Fzr3Osc68zrnOus6tz4Igz4PPhc69zrTOrc+DzrXOuc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ86Vz4DOuc67zq3Ovs+EzrUgz4TOvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM68zrUgzrLOrM+Dzrcgz4TOvyDOv8+Azr/Or86/IM64zrEgzrPOr869zrXPhM6xzrkgzrcgzrHOvc6xzrbOrs+EzrfPg863IM+Ez4nOvSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnzpcgzrLOsc+DzrnOus6uIM60zr/OvM6uIM60zrXOvSDOtc6vzr3Osc65IM6tzrPOus+Fz4HOty4gzqDOsc+BzrHOus6xzrvOv8+NzrzOtSDOtM+Oz4PPhM61IM6tzr3OsSBoYXNoIM68zrUgzrTOtc60zr/OvM6tzr3OsSDPg861IM68zr/Pgc+Gzq4gWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICfOkc+AzrHOuc+EzrXOr8+EzrHOuSDOtyDOrc69zrHPgc6+zrcgz4TOt8+CIM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrM+CIFlBTUwgzrzOtSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICfOlM61zr0gzq7PhM6xzr0gzrTPhc69zrHPhM6uIM63IM61zrrOus6xzrjOrM+BzrnPg863IM+Ezr/PhSDPgM6vzr3Osc66zrEgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnzpTOtc69IM6yz4HOrc64zrfOus6xzr0gz4PPh861z4TOuc66zqwgzrTPhc69zrHOvM65zrrOrCDPgM61zrTOr86xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnzpTOtc69IM6uz4TOsc69IM60z4XOvc6xz4TOriDOtyDOtc65z4POsc6zz4nOs86uIM+Dz4TOv869IM+Azq/Ovc6xzrrOsSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ86VzrnPg86uz4fOuM63z4POsc69IDAgzrPPgc6xzrzOvM6tz4Igz4PPhM6/zr0gz4DOr869zrHOus6xIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfOnM6tzrPOuc+Dz4TOv8+CIM6xz4HOuc64zrzPjM+CIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfOo8+FzrzOss6/zrvOv8+DzrXOuc+Bzqwgzq3Ous60zr/Pg863z4InOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnzqPPhs6szrvOvM6xIM+Dz4XOs8+Hz4HOv869zrnPg868zr/PjSDPhM+Jzr0gzr/Pgc65z4POvM+Ozr0uIM6VzrvOrc6zzr7PhM61IM+Ezr8gzrHPgc+HzrXOr86/IM66zrHPhM6xzrPPgc6xz4bOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ86Iz4fOtc+EzrUgzr/Pgc65z4POvM6/z43PgiBJVFNNQ29uZmlnSXRlbSDPgM6/z4UgzrTOtc69IM61zq/Ovc6xzrkgz4PPhc6zz4fPgc6/zr3Ouc+DzrzOrc69zr/OuS4gzqDOsc+BzrHOus6xzrvOv8+NzrzOtSDOsc69zrHPgM+Ez43Ovs+EzrUgz4TOuc+CIM6xzrvOu86xzrPOrc+CIM+Ez4nOvSDOtM+Fzr3Osc68zrnOus+Ozr0gz4DOtc60zq/Pic69IElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnzpvOtc65z4TOv8+Nz4HOs863z4POtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ86jz4XOvc+Ezq7Pgc63z4POtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ86gzrnOu8+Mz4TOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfOoM+Bzr/Os8+BzrHOvM68zrHPhM65z4POvM6tzr3Ovyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfOlc+AzrnPg866zrXPhc6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfOo8+Fzr3PhM6xzr7Ouc6/z43Ph86/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnzpHOvc6xz4POus+Mz4DOt8+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ86Uzr/Ous65zrzOri9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnzpXPgM65z4POus+Mz4DOt8+DzrcgzrrOsc65IM61z4DOuc6yzrXOss6xzq/Pic+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnzpXOuc+DzrHOs8+JzrPOriDOus67zqzPg861z4nOvS/Pgc+MzrvPic69IM66zrHOuSDPhM+Jzr0gz4PPh861z4TOuc66z47OvSDPgM61zrTOr8+Jzr0gz4TOv8+Fz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfOoM+Bzr/Orc66z4XPiM61IM+Dz4bOrM67zrzOsSDOus6xz4TOrCDPhM63zr0gzrXOuc+DzrHOs8+JzrPOriDPhM63z4IgzrrOu86sz4POt8+CLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gzprPgc+Fz4bPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gzpXOvM+GzrHOvc6vzrbOtc+EzrHOuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnzpXPgM65z4TPgc6tz4DOtc65IM61zrrPhM61z4TOsc68zq3Ovc61z4Igz4PPhc69zrjOrs66zrXPgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DPgc6szrrPhM6/z4HOsS4gzpzOtSDOsc+Fz4TOriDPhM63IM60z4XOvc6xz4TPjM+EzrfPhM6xIM68z4DOv8+BzrXOr8+EzrUgzr3OsSDOsc69zrHOts63z4TOrs+DzrXPhM61IM+ALs+HLiDPhM6/IM+Mzr3Ov868zrEgz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM68zrUgz4TOrc+Ezr/Ouc6/z4UgzrXOr860zr/Phc+CIM+Dz4XOvc64zq7Ous61z4Igz4zPgM+Jz4IgIigqa2V5MSomJiprZXkyKikiIM6uICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnzpXPgM65z4TPgc6tz4DOtc65IM61zrrPhM61z4TOsc68zq3Ovc61z4Igz4PPhc69zrjOrs66zrXPgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zrHPhM+Ozr0uIM6czrUgzrHPhc+Ezq4gz4TOtyDOtM+Fzr3Osc+Ez4zPhM63z4TOsSDOvM+Azr/Pgc61zq/PhM61IM69zrEgzrHOvc6xzrbOt8+Ezq7Pg861z4TOtSDPgC7Phy4gz4TOvyDPjM69zr/OvM6xIM+Ezr/PhSDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOvM61IM+Ezq3PhM6/zrnOv8+FIM61zq/OtM6/z4XPgiDPg8+Fzr3OuM6uzrrOtc+CIM+Mz4DPic+CICIoKmtleTEqJiYqa2V5MiopIiDOriAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ86VzrrPh8+Jz4HOt864zq3Ovc+EzrEgQ0lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+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+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnzpTOt868zrnOv8+Fz4HOs86vzrEgzrrOsc65IM60zrnOsc+HzrXOr8+BzrnPg863IM+Ez4nOvSDOv8+BzrnPg868z47OvSDOs865zrEgz4TOsSDPg8+Ezr/Ouc+HzrXOr86xIM60zrnOsc68z4zPgc+Gz4nPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnzpTOt868zrnOv8+Fz4HOs861zq8gzrXOuc+DzrnPhM6uz4HOuc6xIM6zzrnOsSBDb25maWdJdGVtcyDPg861IM+Dz4XOs866zrXOus+BzrnOvM6tzr3OsSDPh8+Bzr/Ovc65zrrOrCDPg863zrzOtc6vzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ86fzrkgz4DOtc67zqzPhM61z4IgzrzPgM6/z4HOv8+Nzr0gzr3OsSDOtM6/z4XOvSDOuc+Dz4TOv8+BzrnOus6tz4IgzrXOus60z4zPg861zrnPgiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnzp/OuSDPgM61zrvOrM+EzrXPgiDOrc+Hzr/Phc69IM+EzrcgzrTPhc69zrHPhM+Mz4TOt8+EzrEgzr3OsSDOtc69zrHOu867zqzPg8+Dzr/Ovc+EzrHOuSDPh861zrnPgc6/zrrOr869zrfPhM6xIM68zrXPhM6xzr7PjSDPhM+Jzr0gzrnPg8+Ezr/Pgc65zrrPjs69IM61zrrOtM+Mz4POtc+Jzr0gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnzqDPgc6/zrXPgM65zrvOtc6zzrzOrc69zrEgzrTOtc60zr/OvM6tzr3OsSDPgM6/z4UgzrjOsSDPh8+BzrfPg865zrzOv8+Azr/Ouc6/z43Ovc+EzrHOuSDPg8+Ezr8gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjCDOs865zrEgz4TOt869IM6/zrjPjM69zrcgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IuIM6gzrHPgc6szrTOtc65zrPOvM6xOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ86gz4HOv861z4DOuc67zrXOs868zq3Ovc6xIM60zrXOtM6/zrzOrc69zrEgz4DOv8+FIM64zrEgz4fPgc63z4POuc68zr/PgM6/zrnOv8+Nzr3PhM6xzrkgz4PPhM6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLiDOoM6xz4HOrM60zrXOuc6zzrzOsTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ86fz4HOuc+DzrzPjM+CIM6Vzr3Otc+BzrPOtc65z47OvSDPjM+Azr/PhSDOrc69zrEgzrrOv8+FzrzPgM6vIM+Bz4XOuM68zq/Pg861z4nOvSDOtc6vzr3Osc65IM60zrnOsc64zq3Pg865zrzOvyDPg8+Ezr8gd2lkZ2V0IM+Ez4nOvSDPg8+Fzr3OtM61zrTOtc68zq3Ovc+Jzr0gzrHOvc+EzrnOus61zrnOvM6tzr3Pic69IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIM6jzrfOvM61zrnPjs+Dz4TOtSDPjM+EzrkgzrHPhc+Ezq3PgiDOv865IM6Vzr3Orc+BzrPOtc65zrXPgiDPgM+Bzq3PgM61zrkgzr3OsSDOrc+Hzr/Phc69IM66zrHPhM6xz4fPic+Bzq/Pg861zrkgz4TOsSDOsc66z4zOu86/z4XOuM6xIM6xz4HPh861zq/OsSBKUyDOus6xzrkgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDOus6xzrkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnzp/Pgc65z4POvM+Mz4IgzrXOvc+Mz4Igz4PPh86uzrzOsc+Ezr/PgiBUZW1wbGF0ZTo6VG9vbGtpdCDOs865zrEgz4PPhc68zrLOv867zr/Pg861zrnPgc6tz4Igzq3Ous60zr/Pg863z4IuIM6nz4HOt8+DzrnOvM6/z4DOv865zrXOr8+EzrHOuSDOvM+Mzr3OvyDOsc69IM63IM61zr3PjM+EzrfPhM6xIFZlcnNpb24gU3RyaW5nIE1vZHVsZSDOrc+HzrXOuSDOv8+BzrnPg8+EzrXOryDPg861IFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ86fz4HOr8+Dz4TOtSDOrc69zrEgz4PPjc69zr/Ou86/IM+Dz4XOvc64zrfOus+Ozr0gz4XPgM+MIM+EzrnPgiDOv8+Azr/Or861z4IgzrXPgM65z4TPgc6tz4DOtc+EzrHOuSDPg861IM6tzr3Osc69IM+AzrXOu86sz4TOtyDOvc6xIM60zrXOuSDOrc69zrEgz4PPhM6/zrnPh861zq/OvyDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLiDOn865IM+Dz4XOvc64zq7Ous61z4IgzrzPgM6/z4HOv8+Nzr0gz4DPgc6/zrHOuc+BzrXPhM65zrrOrCDOvc6xIM+AzrXPgc65zr/Pgc65z4PPhM6/z43OvSDPg861IM6/z4HOuc+DzrzOrc69zrXPgiDOv868zqzOtM61z4Igz4DOtc67zrHPhM+Ozr0uIM6kzr8gz4zOvc6/zrzOsSDOtc6vzr3Osc65IM+Ezr8gzrzPjM69zr8gz4XPgM6/z4fPgc61z4nPhM65zrrPjCDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MLiDOlc6szr0gzrTOtc69IM60zr/OuM6/z43OvSDOrM67zrvOtc+CIM61z4DOuc67zr/Os86tz4IsIM+MzrvOsSDPhM6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOuM6xIM61zq/Ovc6xzrkgzr/Pgc6xz4TOrCDPg8+Ezr8gz4DOu86xzq/Pg865zr8gzrHPhc+Ezq7PgiDPhM63z4IgzrrOsc+EzrfOs86/z4HOr86xz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOsSDOsc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM60zrnOsc6zz4HOsc+Gzq4gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDOvM61IM+Hz4HOrs+Dzrcgz4TOt8+CIM6zzrXOvc65zrrOrs+CIM60zrnOtc+AzrHPhs6uz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOsSDOsc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM67zq7PiM63IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gzrzOtSDPh8+Bzq7Pg863IM+EzrfPgiDOs861zr3Ouc66zq7PgiDOtM65zrXPgM6xz4bOrs+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+EzrEgzrHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOt869IM6xzr3Osc62zq7PhM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM68zrUgz4fPgc6uz4POtyDPhM63z4IgzrPOtc69zrnOus6uz4IgzrTOuc61z4DOsc+Gzq7Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6xIM6xz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezr/OvSDOus6xzrjOv8+BzrnPg868z4wgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDOvM61IM+Hz4HOrs+Dzrcgz4TOt8+CIM6zzrXOvc65zrrOrs+CIM60zrnOtc+AzrHPhs6uz4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ86fz4HOr862zrXOuSDOvM65zrEgzrXOvc+Mz4TOt8+EzrEgzrXPgM65z4POus+Mz4DOt8+DzrfPgiDOs865zrEgz4TOt869IM61zrzPhs6szr3Ouc+Dzrcgz4TOt8+CIM68zrnOus+Bzq7PgiDPgM+Bzr/Oss6/zrvOrs+CIM68zrnOsc+CIM67zq/Pg8+EzrHPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM61zqzOvSDOv865IM61z4TOuc66zq3PhM61z4Igz4TPjc+Azr/PhSDPg8+Fzr3OtM6tz4POvM6/z4Ugz4DPgc6tz4DOtc65IM69zrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOuc+CIM+Dz4XOvc60zq3Pg861zrnPgiDOus+MzrzOss+Jzr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfOn8+Bzq/Ots61zrkgzrrOsc69zr/Ovc65zrrOrc+CIM61zrrPhs+BzqzPg861zrnPgiDOvs61z4fPic+BzrnPg8+EzqwgzrPOuc6xIM66zqzOuM61IM66zrvOrM+DzrcgQ29uZmlnSXRlbSDOs865zrEgz4TOv869IM6tzrvOtc6zz4fOvyDPhM6/z4Ugzr/Ovc+MzrzOsc+Ezr/PgiDPhM6/z4UgQ29uZmlnSXRlbSDOus6xzrkgz4TOt869IM61zrzPhs6szr3Ouc+Dzrcgz4TPic69IM6xzr3PhM6vz4PPhM6/zrnPh8+Jzr0gzrzOt869z4XOvM6sz4TPic69IM+Dz4bOrM67zrzOsc+Ezr/Pgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOuc+CIM60zrnOsc64zq3Pg865zrzOtc+CIM+Dz4TOrs67zrXPgiDPhM+Jzr0gQ0kgz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrHOvc6szrvOv86zzrEgzrzOtSDPhM63zr0gzrrOsc+EzrfOs86/z4HOr86xIENJLiDOms6szrjOtSDOus6xz4TOsc+Hz47Pgc63z4POtyDPgM+Bzq3PgM61zrkgzr3OsSDOsc+Azr/PhM61zrvOtc6vz4TOsc65IM6xz4DPjCDOrc69zrEgz4zOvc6/zrzOsSDOus67zqzPg863z4IgzrrOsc65IM6tzr3Osc69IM+Azq/Ovc6xzrrOsSDOtM65zrHOuM6tz4POuc68z4nOvSDPgM61zrTOr8+Jzr0gzrPOuc6xIM+EzrfOvSDOsc69z4TOr8+Dz4TOv865z4fOtyDOus67zqzPg863LiDOn865IM66zrHPhM6xz4fPic+Bzq/Pg861zrnPgiDOtM+Fzr3Osc68zrnOus+Ozr0gz4DOtc60zq/Pic69IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrfPgc6/z43OvSDPhM6/IM+Dz4fOrs68zrEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc6/IM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66z4wgz4PPhM6/zrnPh861zq/OvyDPgM6xz4HOsc68zq3PhM+Bz4nOvSDOs865zrEgz4TOt869IM+EzrHOvs65zr3PjM68zrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM6/z4UgzrHPgM6/z4TOtc67zq3Pg868zrHPhM6/z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+EzrfPgiDOtM65zrHPg8+Nzr3OtM61z4POt8+CIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM+Dz4TOv865z4fOtc6vzr8gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gzrPOuc6xIM+EzrfOvSDPhM6xzr7Ouc69z4zOvM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOv8+FIM6xz4DOv8+EzrXOu86tz4POvM6xz4TOv8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM61zrvOrM+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnzprOsc64zr/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+Jzr0gzrHPhc+Ezq7PgiDPhM63z4IgzrvOtc65z4TOv8+Fz4HOs86vzrHPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM63zr0gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zrcgz4POtc65z4HOrCDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4PPhM6/IM6xz4DOv8+Ezq3Ou861z4POvM6xIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM63z4IgzrTOuc6xz4PPjc69zrTOtc+DzrfPgiDPgM+BzqzOus+Ezr/Pgc6xLiBVcDogz4TOvyDPgM6xzrvOsc65z4zPhM61z4HOvyDPg8+EzrfOvSDOus6/z4HPhc+Gzq4uIM6azqzPhM+JOiDPhM6/IM+EzrXOu861z4XPhM6xzq/OvyDPg8+EzrfOvSDOus6/z4HPhc+Gzq4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOt869IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc63IM+DzrXOuc+Bzqwgz4PPhM6/zrnPh861zq/Pic69IM+AzrHPgc6xzrzOrc+Ez4HPic69IM+Dz4TOvyDOsc+Azr/PhM6tzrvOtc+DzrzOsSDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zqzPhM63LiDOoM6szr3PiTogz4TOvyDPgM6xzrvOsc65z4zPhM61z4HOvyDPg8+EzrfOvSDOus6/z4HPhc+Gzq4uIM6azqzPhM+JOiDPhM6/IM+EzrXOu861z4XPhM6xzq/OvyDPg8+EzrfOvSDOus6/z4HPhc+Gzq4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM63zr0gz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zrcgz4POtc65z4HOrCDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gz4PPhM6/IM6xz4DOv8+Ezq3Ou861z4POvM6xIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDPgM6xz4HOsc68zq3PhM+Bz4nOvSDPhM63z4IgzrvOtc65z4TOv8+Fz4HOs86vzrHPgiDOsc+Fz4TOrs+CLiDOoM6szr3PiTogz4TOvyDPgM6xzrvOsc65z4zPhM61z4HOvyDPg8+EzrfOvSDOus6/z4HPhc+Gzq4uIM6azqzPhM+JOiDPhM6/IM+EzrXOu861z4XPhM6xzq/OvyDPg8+EzrfOvSDOus6/z4HPhc+Gzq4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOuc+CIM+Az4HOv861z4DOuc67zrXOs868zq3Ovc61z4IgzrXOvM+GzrHOvc65zrbPjM68zrXOvc61z4Igz4PPhM6uzrvOtc+CIM+Ez4nOvSBDSSDPg8+EzrfOvSDOtc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOsc69zqzOu86/zrPOsSDOvM61IM+EzrfOvSDOus6xz4TOt86zzr/Pgc6vzrEgQ0kuIM6azqzOuM61IM66zrHPhM6xz4fPjs+BzrfPg863IM+Az4HOrc+AzrXOuSDOvc6xIM6xz4DOv8+EzrXOu861zq/PhM6xzrkgzrHPgM+MIM6tzr3OsSDPjM69zr/OvM6xIM66zrvOrM+DzrfPgiDOus6xzrkgzq3Ovc6xzr0gz4DOr869zrHOus6xIM60zrnOsc64zq3Pg865zrzPic69IM+AzrXOtM6vz4nOvSDOs865zrEgz4TOt869IM6xzr3PhM6vz4PPhM6/zrnPh863IM66zrvOrM+DzrcuIM6fzrkgzrrOsc+EzrHPh8+Jz4HOrs+DzrXOuc+CIM60z4XOvc6xzrzOuc66z47OvSDPgM61zrTOr8+Jzr0gz4DPgc6tz4DOtc65IM69zrEgz4TOt8+Bzr/Pjc69IM+Ezr8gz4PPh86uzrzOsSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOvyDPgM+Bzr/Otc+AzrnOu861zrPOvM6tzr3OvyDOss6szrjOv8+CIM+Dz4fOrc+DzrXPic69IM+Azr/PhSDOuM6xIM61zrzPhs6xzr3Or862zrXPhM6xzrkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc6/IM61zrzPhs6xzr3Ouc62z4zOvM61zr3OvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM6/IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc6/IM61zrzPhs6xzr3Ouc62z4zOvM61zr3OvyDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus+MIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM6zzrnOsSDPhM63zr0gzr/OuM+Mzr3OtyDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4gzqDOsc+BzqzOtM61zrnOs868zrE6ICJLZXkiIM+Az4HOrc+AzrXOuSDOvc6xIM6tz4fOtc65IM+Ezr8gz4zOvc6/zrzOsSDPhM6/z4UgzrTPhc69zrHOvM65zrrOv8+NIM+AzrXOtM6vzr/PhSDPg8+EzrfOvSDPgM+Bzr/Ous61zrnOvM6tzr3OtyDPgM61z4HOr8+Az4TPic+DzrcgXCdYXCcsICJDb250ZW50IiDPgM+Bzq3PgM61zrkgzr3OsSDOrc+HzrXOuSDPhM63zr0gz4TOuc68zq4gz4TOv8+FIM60z4XOvc6xzrzOuc66zr/PjSDPgM61zrTOr86/z4UgzrHOvc6szrvOv86zzrEgzrzOtSDPhM6/zr0gz4TPjc+Azr8gz4TOv8+FIM60z4XOvc6xzrzOuc66zr/PjSDPgM61zrTOr86/z4UsIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMS0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNi0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDAsIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDAtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDAtIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMy0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDEsIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNi0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMy0gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5LSBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTksXCcgzrrOsc65IM6uIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ86fz4HOr862zrXOuSDPhM6/IM+Az4HOv861z4DOuc67zrXOs868zq3Ovc6/IM+Fz4DOv86xzr3PhM65zrrOtc6vzrzOtc69zr8gz4TOt8+CIM66zrvOrM+DzrfPgiBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOuc+CIM60zrnOsc64zq3Pg865zrzOtc+CIM+Dz4TOrs67zrXPgiDPhM+Jzr0gQ0kgz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrHOvc6szrvOv86zzrEgzrzOtSDPhM63zr0gzrrOsc+EzrfOs86/z4HOr86xIENJLiDOms6szrjOtSDOus6xz4TOsc+Hz47Pgc63z4POtyDPgM+Bzq3PgM61zrkgzr3OsSDOsc+Azr/PhM61zrvOtc6vz4TOsc65IM6xz4DPjCDOrc69zrEgz4zOvc6/zrzOsSDOus67zqzPg863z4IgzrrOsc65IM6tzr3Osc69IM+Azq/Ovc6xzrrOsSDOtM65zrHOuM6tz4POuc68z4nOvSDPgM61zrTOr8+Jzr0gzrPOuc6xIM+EzrfOvSDOsc69z4TOr8+Dz4TOv865z4fOtyDOus67zqzPg863LiDOn865IM66zrHPhM6xz4fPic+Bzq/Pg861zrnPgiDOtM+Fzr3Osc68zrnOus+Ozr0gz4DOtc60zq/Pic69IM+Az4HOrc+AzrXOuSDOvc6xIM+EzrfPgc6/z43OvSDPhM6/IM+Dz4fOrs68zrEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz43PiM6/z4IgzrPOuc6xIM+Ezr8gz4PPhM6/zrnPh861zq/OvyDPhM6/z4UgzrXPgM61zr7Otc+BzrPOsc+Dz4TOriDPgM67zr/Pjc+DzrnOv8+FIM66zrXOuc68zq3Ovc6/z4UgzrPOuc6xIM6xz4XPhM6uIM+EzrfOvSDOv864z4zOvc63LiDOlc65z4POrM6zzrXPhM61IM6xz4HOuc64zrzPjCAocGl4ZWxzKSDOriDPgM6/z4POv8+Dz4TOuc6xzq/OsSDPhM65zrzOriAoz4PPh861z4TOuc66zq4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOv869IM6xz4HOuc64zrzPjCDPhM+Jzr0gzrPPgc6xzrzOvM+Ozr0gzrPOuc6xIM+Ezr/OvSDOtc+AzrXOvs61z4HOs86xz4PPhM6uIM6/z4HOuc+DzrzOv8+NIENJIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM60zrnOsc+HzrXOr8+BzrnPg863z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM63IM+DzrXOuc+Bzqwgz4TPic69IM66zrHPhM6xz4PPhM6sz4POtc+Jzr0gz4PPhc68zrLOrM69z4TPic69IM6xz4DPjCDPhc+IzrfOu86uICjPgC7Phy4gzrrPgc6vz4POuc68zrcpIM6tz4nPgiDPh86xzrzOt867zq4gKM+ALs+HLiDOu861zrnPhM6/z4XPgc6zzrnOus6uKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOuc+CIM+Dz4fOtc+EzrnOus6tz4IgzrrOsc+EzrHPg8+EzqzPg861zrnPgiDOsc69zqzPgM+Ez4XOvs63z4Igz4zPgM6/z4Ugz4TOsSDPg8+Fzr3OtM61zrTOtc68zq3Ovc6xIM61zrnPg865z4TOrs+BzrnOsSDOvM+Azr/Pgc6/z43OvSDOvc6xIM61z4DOt8+BzrXOrM+Dzr/Phc69IM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+DzrcgzrXOvc+Mz4IgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4zPgc65zr8gzrHOvc6xzrbOrs+EzrfPg863z4IgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4zPgc65zr8gzrHOvc6xzrbOrs+EzrfPg863z4IgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4zPgc65zr8gzrHOvc6xzrbOrs+EzrfPg863z4IgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Ezr8gz4zPgc65zr8gzrHOvc6xzrbOrs+EzrfPg863z4IgzrPOuc6xIM+EzrfOvSDOv864z4zOvc63IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPhM65z4IgzrXOvM+GzrHOvc65zrbPjM68zrXOvc61z4Igz4PPhM6uzrvOtc+CIM+Ez4nOvSBDSSDPg8+EzrfOvSDPgM6/zrvPjc+AzrvOv866zrcgz4DPgc6/zrLOv867zq4gz4TOv8+FIM+Azq/Ovc6xzrrOsSDPg8+Fzr3OtM6tz4POtc+Jzr0gzrPOuc6xIM+MzrvOtc+CIM+EzrnPgiDOus6xz4TOt86zzr/Pgc6vzrXPgiBDSS4gzpXOrM69IM60zrXOvSDPhc+AzqzPgc+HzrXOuSDOus6xz4TOsc+Hz47Pgc65z4POtywgz4TPjM+EzrUgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM6/zrkgz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zrXPgiDPg8+Ezq7Ou861z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4TOuc+CIM61zrzPhs6xzr3Ouc62z4zOvM61zr3Otc+CIM+Dz4TOrs67zrXPgiDPhM+Jzr0gQ0kgz4PPhM63zr0gz4DOv867z43PgM67zr/Ous63IM+Az4HOv86yzr/Ou86uIM+Ezr/PhSDPgM6vzr3Osc66zrEgz4PPhc69zrTOrc+DzrzPic69LCDOsc69zqzOu86/zrPOsSDOvM61IM+EzrfOvSDOus6xz4TOt86zzr/Pgc6vzrEgQ0kuIM6azqzOuM61IM61zrPOs8+BzrHPhs6uIM+Az4HOrc+AzrXOuSDOvc6xIM6tz4fOtc65IM+Jz4Igz4DPgc+MzrjOtc68zrEgz4TOvyDPjM69zr/OvM6xIM+EzrfPgiDOus67zqzPg863z4IgzrrOsc65IM60zrnPgM67zq3PgiDOrM69z4kgzrrOsc65IM66zqzPhM+JIM+EzrXOu861zq/OsSAoz4Auz4cuIENvbXB1dGVyOjo6KS4gzqXPgM6sz4HPh86/z4XOvSDOvM61z4HOuc66zqwgQ0ktQXR0cmlidXRlcyDPgM6/z4UgzrXOr869zrHOuSDOus6/zrnOvc6sIM6zzrnOsSDPjM67zrEgz4TOsSBDSSAoz4DOsc+BzqzOtM61zrnOs868zrEgzrPOuc6xIM+EzrfOvSDOus67zqzPg863IENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDOk865zrEgzr3OsSDOtc68z4bOsc69zrnPg8+Ezr/Pjc69IM68zrXOvM6/zr3Pic68zq3Ovc6xIENJLUF0dHJpYnV0ZXMgz4zPgM+Jz4Igzr/Pgc6vzrbOv869z4TOsc65IM+Dz4TOv869IENJLURlZmluaXRpb24sIM+Az4HOrc+AzrXOuSDOvc6xIM+Hz4HOt8+DzrnOvM6/z4DOv865zrfOuM61zq8gz4TOvyDOsc66z4zOu86/z4XOuM6/IM+Dz4fOrs68zrEgKM+AzrHPgc6szrTOtc65zrPOvM6xIM6zzrnOsSDPhM63zr0gzrrOu86sz4POtyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDOlc6szr0gzrTOtc69IM+Fz4DOrM+Bz4fOtc65IM66zrHPhM6xz4fPjs+BzrfPg863IM6zzrnOsSDOvM65zrEgzrrOu86sz4POtyBDSSwgz4TPjM+EzrUgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM6/zrkgz4DPgc6/zrXPgM65zrvOtc6zzrzOrc69zrXPgiDPg8+Ezq7Ou861z4IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Azr/Ouc6xIM+Dz4TOv865z4fOtc6vzrEgzrXOr869zrHOuSDOtM65zrHOuM6tz4POuc68zrEgzrPOuc6xICLOlM+BzqzPg863IiDPg8+Ezr8gz4TPgc6vz4TOvyDOtc+Azq/PgM61zrTOvyDPhM63z4IgzrTOv868zq7PgiBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4DOv865zrEgz4PPhM6/zrnPh861zq/OsSDOtc6vzr3Osc65IM60zrnOsc64zq3Pg865zrzOsSDPg8+Ezr8gz4DPgc+Oz4TOvyDOtc+Azq/PgM61zrTOvyDPhM63z4IgzrTOv868zq7PgiBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnzprOsc64zr/Pgc6vzrbOtc65IM+Azr/Ouc6xIM+Dz4TOv865z4fOtc6vzrEgzrXOr869zrHOuSDOtM65zrHOuM6tz4POuc68zrEgz4PPhM6/IM60zrXPjc+EzrXPgc6/IM61z4DOr8+AzrXOtM6/IM+EzrfPgiDOtM6/zrzOrs+CIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfOms6xzrjOv8+Bzq/Ots61zrkgz4DOv865zr/PgiDPhM+Nz4DOv8+CIM+Dz43Ovc60zrXPg863z4IgKM68zrUgz4zOvc6/zrzOsSDOsc+Az4wgz4TOt869IM6/z4DPhM65zrrOriDOs8+Jzr3Or86xIM+Ezr/PhSDOtc65z4POuc+EzrfPgc6vzr/PhSkgzrzPgM6/z4HOtc6vIM69zrEgzrXPgM63z4HOtc6sz4POtc65IM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+DzrcgzrXOvc+Mz4Igz4PPhc69zrTOtc60zrXOvM6tzr3Ov8+FIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ86azrHOuM6/z4HOr862zrXOuSDPgM6/zrnOv8+CIM+Ez43PgM6/z4IgzrXOuc+DzrnPhM63z4HOr86/z4UgzrzPgM6/z4HOtc6vIM69zrEgzrXPgM63z4HOtc6sz4POtc65IM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+DzrcgzrXOvc+Mz4Igz4PPhc69zrTOtc60zrXOvM6tzr3Ov8+FIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ86Vzr3Ot868zq3Pgc+Jz4POtyDOv8+BzrnPg868zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnzpTOuc6xzrPPgc6xz4bOriDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ86nz4HPjs68zrEgzrrOsc+EzqzPg8+EzrHPg863z4IgzrHOvc6sz4DPhM+Fzr7Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfOlM65z4DOu8+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnzpzOv869zqzOtM6xIM+Dz4XOvM6yzqzOvc+Ez4nOvSDOtM+Fzr3Osc68zrnOus+Ozr0gz4DOtc60zq/Pic69IM+Azr/PhSDOtc+AzrnPg863zrzOsc6vzr3Otc65IM+Ezr/Phc+CIM6/z4HOuc+DzrzOv8+Nz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4nPgiDOvM63IM+Dz4XOs8+Hz4HOv869zrnPg868zq3Ovc6/z4XPgiwgzrXOrM69IM6xzrvOu86szr7Ov8+Fzr0gz4TOsSDOtM+Fzr3Osc68zrnOus6sIM+AzrXOtM6vzrEgz4DOv8+FIM+AzrXPgc65zq3Ph86/z4XOvS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Uz4XOvc6xzrzOuc66zqwgz4DOtc60zq/OsSDPgM6/z4UgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOt869IM6/zrjPjM69zrcgz4DPgc+Mz4POuM61z4TPic69IM+AzrXOtM6vz4nOvSBJVFNNIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlM+Fzr3Osc68zrnOus6sIM+AzrXOtM6vzrEgz4DOv8+FIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrfOvSDOv864z4zOvc63IM61z4DOuc+DzrrPjM+AzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DOtc67zqzPhM63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlM+Fzr3Osc68zrnOus6sIM+AzrXOtM6vzrEgz4DOv8+FIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPg8+EzrfOvSDOv864z4zOvc63IM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Ezr/PhSDPgM61z4HOuc6yzqzOu867zr/Ovc+Ezr/PgiDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfOlc69zrXPgc6zzr/PgM6/zrnOtc6vIM+EzrcgzrTPhc69zrHPhM+Mz4TOt8+EzrEgzrzOsc62zrnOus6uz4IgzrTPgc6sz4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM6zzrnOsSDPhM6/IGZyb250ZW5kIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xIM+Oz4PPhM61IM69zrEgzrXPgc6zzqzOts61z4TOsc65IM+DzrUgz4DOtc+BzrnPg8+Dz4zPhM61z4HOsSDOsc+Az4wgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM6xz4XPhM+Mz4fPgc6/zr3OsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ86XIM66zrHPhM6sz4PPhM6xz4POtyDOsc69zqzPgM+Ez4XOvs63z4IgzrHPhc+Ezr/PjSDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnzpXOvc61z4HOs86/z4DOv865zrXOry/Osc+AzrXOvc61z4HOs86/z4DOv865zrXOryDPhM63IM67zrXOuc+Ezr/Phc+BzrPOr86xIM61zrvOrc6zz4fOv8+FIM+Ez4nOvSDPg8+Ezr/Ouc+HzrXOr8+Jzr0gz4DOsc+BzrHOvM6tz4TPgc+Jzr0gSVRTTSDOs865zrEgzrzOv869zrHOtM65zrrOrCDOv869z4zOvM6xz4TOsS4gzqDPgc65zr0gzrXOvc61z4HOs86/z4DOv865zq7Pg861z4TOtSDOsc+Fz4TOrs69IM+EzrfOvSDOtc+AzrnOu86/zrPOriwgzrjOsSDPgM+Bzq3PgM61zrkgzr3OsSDOtc67zq3Os86+zrXPhM61IM+Ezr8gz4PPjc+Dz4TOt868zqwgz4POsc+CIM6zzrnOsSDOrs60zrcgz4XPgM6sz4HPh86/zr3PhM6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOvM61IM60zrnPgM67zqwgzr/Ovc+MzrzOsc+EzrEuIM6cz4DOv8+BzrXOr8+EzrUgzr3OsSDPhM6/IM66zqzOvc61z4TOtSDOsc+Fz4TPjCDOvM61IM+EzrfOvSDOtc69z4TOv867zq4gz4TOt8+CIM66zr/Ovc+Dz4zOu86xz4IgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfOlc69z4zPhM63z4TOsSDPg8+FzrzOss6szr3PhM6/z4IgzrPOuc6xIM69zrEgzr/Pgc6vz4POtc+EzrUgz4TOt869IM66zrHPhM6sz4PPhM6xz4POtyDPhM6/z4Ugz4PPhM6/zrnPh861zq/Ov8+FIM+AzrHPgc6xzrzOtc+Ez4HOv8+Azr/Or863z4POt8+CIM+Dz4TOvyDPg8+Nzr3OtM61z4POvM6/IHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ86gzrXOtM6vzrEgz4TOv8+FIM61z4XPgc61z4TOt8+Bzq/Ov8+FIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLCDPgM6/z4Ugz4fPgc63z4POuc68zr/PgM6/zrnOv8+Nzr3PhM6xzrkgzrPOuc6xIM+EzrfOvSDOsc69zrHOts6uz4TOt8+Dzrcgz4DOu86uz4HOv8+Fz4IgzrrOtc65zrzOrc69zr/PhS4gzqTOsSDPgM61zrTOr86xIM6xz4DOv864zrfOus61z43Ov869z4TOsc65IM61z4DOr8+DzrfPgiwgzrHOu867zqwgzrTOtc69IM61zq/Ovc6xzrkgz4XPgM6/z4fPgc61z4nPhM65zrrOrCDOs865zrEgz4TOtyDPg8+Fzr3Ov867zrnOus6uIM67zrXOuc+Ezr/Phc+BzrPOuc66z4zPhM63z4TOsS4gzpcgz4PPhc68z4DOtc+Bzq/Ou863z4jOtyDPhM+Jzr0gz4PPhc69zrfOvM68zq3Ovc+Jzr0gzrzPgM6/z4HOtc6vIM69zrEgzrHPgM61zr3Otc+BzrPOv8+Azr/Ouc63zrjOtc6vIM64zq3PhM6/zr3PhM6xz4Igz4TOt869IM66zrHPhM6xz4fPjs+BzrfPg863IM+DzrUgMCDOriDOtM65zrHOs8+BzqzPhs6/zr3PhM6sz4Igz4TOt869Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnzqDOtc60zq/OsSDPgM6/z4UgzrHPgM6/zrjOt866zrXPjc6/zr3PhM6xzrkgz4PPhM6/IM61z4XPgc61z4TOrs+BzrnOvyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDOus6xzrkgz4fPgc63z4POuc68zr/PgM6/zrnOv8+Nzr3PhM6xzrkgzrPOuc6xIM6szrvOu86xIM+Az4HOrM6zzrzOsc+EzrEgzrXOus+Ez4zPgiDOsc+Az4wgz4TOt869IM6xzr3Osc62zq7PhM63z4POtyDPgM67zq7Pgc6/z4XPgiDOus61zrnOvM6tzr3Ov8+FLiDOk865zrEgz4TOt869IM+AzrvOrs+BzrcgzrvOtc65z4TOv8+Fz4HOs865zrrPjM+EzrfPhM6xIM+MzrvOsSDPhM6xIM+AzrXOtM6vzrEgzrXOr869zrHOuSDPhc+Azr/Ph8+BzrXPic+EzrnOus6sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ86TzrnOsSDOus6szrjOtSDPhc+AzrfPgc61z4POr86xIM65z4PPhM6/z40gKM66zrvOtc65zrTOrykgzrzPgM6/z4HOtc6vIM69zrEgzr/Pgc65z4PPhM61zq8gzq3Ovc6xz4Igz4DOr869zrHOus6xz4IgzrrOu86sz4POtc+Jzr0gKM+EzrnOvM6uKSwgz4PPhM65z4Igzr/PgM6/zq/Otc+CIM+AzrXPgc65zr/Pgc6vzrbOtc+EzrHOuSDOtyDOtc65z4POsc6zz4nOs86uLiDOk865zrEgz4zOu861z4Igz4TOuc+CIM61z4DOuc67zrXOs868zq3Ovc61z4IgzrrOu86sz4POtc65z4Igzq4gzrPOuc6xIM+MzrvOtc+CIM+EzrnPgiDPhc+AzqzPgc+Hzr/Phc+DzrXPgiDOus67zqzPg861zrnPgiDOuM6xIM+Az4HOrc+AzrXOuSDOvc6xIM61z4DOuc67zrXOs86/z43OvSDPhM6xIM+HzrHPgc6xzrrPhM63z4HOuc+Dz4TOuc66zqwgzrHOvc6xzrPOvc+Oz4HOuc+DzrfPgiDPg8+Ezr8gY29uZmlnIM+Ezr/PhSBpbnZva2VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfOlc6zzrPPgc6xz4bOriDOvM6/zr3OrM60zrHPgiBHZW5lcmljSW50ZXJmYWNlIM6zzrnOsSDPhM6/IM61z4DOr8+AzrXOtM6/IM61z4DOuc66zrHOu86/z43OvM61zr3Ov8+FIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfOlc6zzrPPgc6xz4bOriDOvM6/zr3OrM60zrHPgiBHZW5lcmljSW50ZXJmYWNlIM6zzrnOsSDPhM6/IM61z4DOr8+AzrXOtM6/IM61z4DOuc66zrHOu86/z43OvM61zr3Ov8+FIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnzpXOs86zz4HOsc+Gzq4gzrzOv869zqzOtM6xz4IgR2VuZXJpY0ludGVyZmFjZSDOs865zrEgz4TOvyDOtc+Azq/PgM61zrTOvyDOtc+AzrnOus6xzrvOv8+NzrzOtc69zr/PhSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ86Vz4DOuc+DzrrPjM+AzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDPgc+FzrjOvM6vz4POtc+Jzr0gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM61z4HOuc67zrHOvM6yzqzOvc61zrkgzrrOsc+EzrHPg8+EzqzPg861zrnPgiDOsc69zqzPgM+Ez4XOvs63z4Igz4PPhM63zr0gzrHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+AzrXOu86sz4TOty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOtc+BzrnOu86xzrzOss6szr3Otc65IM66zrHPhM6xz4PPhM6sz4POtc65z4Igz4PPhc68zrLOrM69z4TPic69IM+Dz4TOt869IM6xzr3Osc62zq7PhM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM61zrvOrM+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ86czq3Os865z4PPhM6/z4IgzrHPgc65zrjOvM+Mz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4DOv8+FIM64zrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+Dz4TOvyDOsc+Azr/PhM6tzrvOtc+DzrzOsSDOsc+Fz4TOrs+CIM+EzrfPgiDOu861zrnPhM6/z4XPgc6zzq/Osc+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ86Vzr3PjM+EzrfPhM6xIM6zzrnOsSDPhM6/zr0gzq3Ou861zrPPh86/IM+EzrfPgiDOv868zqzOtM6xz4Igz4DOv8+FIM61zq/Ovc6xzrkgz4XPgM61z43OuM+Fzr3OtyDOs865zrEgzrzOuc6xIM+EzqzOvs63Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ86Vzr3PjM+EzrfPhM6xIM6zzrnOsSDPhM6/zr0gzq3Ou861zrPPh86/IM+EzrfPgiDOv868zqzOtM6xz4Igz4DOv8+FIM61zq/Ovc6xzrkgz4XPgM61z43OuM+Fzr3OtyDOs865zrEgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfOlc69z4zPhM63z4TOsSDOs865zrEgz4TOtyDOtM63zrzOuc6/z4XPgc6zzq/OsSDPg8+EzrHPhM65z4PPhM65zrrPjs69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnzozOvc6/zrzOsSDOlc69z4zPhM63z4TOsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnzpXOvc+Mz4TOt8+EzrEgzrHPgc65zrjOvM6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgc65zrjOvM+Mz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4DOv8+FIM64zrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM+DzrUgzrrOrM64zrUgz4POtc67zq/OtM6xIM61zr3PjM+CIM6xz4DOv8+EzrXOu86tz4POvM6xz4TOv8+CIM6xzr3Osc62zq7PhM63z4POt8+CIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+BzrnOuM68z4zPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPgM6/z4UgzrjOsSDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4POtSDOus6szrjOtSDPg861zrvOr860zrEgzrXOvc+Mz4IgzrHPgM6/z4TOtc67zq3Pg868zrHPhM6/z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+AzrXOu86sz4TOty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnzpHOvc+EzrnOus61zq/OvM61zr3OsSDOs865zrEgz4TOsSDOv8+Azr/Or86xIM64zrEgzrPOr869zrXOuSDOsc69zrHOts6uz4TOt8+DzrcsIM+Az4zPg861z4IgzrrOsc+EzrHPh8+Jz4HOrs+DzrXOuc+CIM66zrHOuSDPgM6/zrnOsSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus6sIM64zrEgzrXOvM+GzrHOvc65z4PPhM6/z43OvS4gzqTOsSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus6sIENvbmZpZ0l0ZW0gz4DPgc6tz4DOtc65IM69zrEgzrHPgM6/zrjOt866zrXPjc6/zr3PhM6xzrkgz4HOt8+EzqwgzrzOrc+Dz4kgz4TOv8+FIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ86Vz4DOuc+DzrrPjM+AzrfPg863Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrnPgiDOus6xz4TOt86zzr/Pgc6vzrXPgiDPhM+Jzr0gzrrOu86sz4POtc+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOsSDPhs6vzrvPhM+BzrEgz4PPhM6uzrvOt8+CIM+EzrfPgiDOtc+AzrnPg866z4zPgM63z4POt8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOvM65zrrPgc6uz4IgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgi4gzqPOt868zrXOr8+Jz4POtzogzrcgz4HPjc64zrzOuc+DzrcgXCdBY3RpdmVcJyDPg861IDAgzrjOsSDOtc68z4DOv860zq/Pg861zrkgzrzPjM69zr8gz4TOv8+Fz4Igz4DPgc6szrrPhM6/z4HOtc+CIM69zrEgzrXPgM61zr7Otc+BzrPOrM62zr/Ovc+EzrHOuSDPhM65z4Igz4HPhc64zrzOr8+DzrXOuc+CIM6xz4XPhM6uz4Igz4TOt8+CIM6/zrzOrM60zrHPgiDPg8+EzrnPgiDPgM+Bzr/Pg8+Jz4DOuc66zq3PgiDPhM6/z4XPgiDPgM+Bzr/PhM65zrzOrs+DzrXOuc+CLCDOsc67zrvOrCDOuM6xIM61z4DOuc+Ez4HOrc+IzrXOuSDPg8+Ezr/Phc+CIM60zrnOsc+HzrXOuc+BzrnPg8+Ezq3PgiDOvc6xIM61z4DOtc6+zrXPgc6zzqzOts6/zr3PhM6xzrkgz4TOuc+CIM+Bz4XOuM68zq/Pg861zrnPgiDOs865zrEgzrvOv86zzrHPgc65zrHPg868z4wgzqzOu867zr/PhSDPh8+Bzq7Pg8+EzrcuIM6nz4HOt8+DzrnOvM6/z4DOv865zq7Pg8+EzrUgz4TOvyBcJ1ByZWZlcmVuY2VHcm91cFwnIM6zzrnOsSDOvc6xIM61zrvOrc6zzr7Otc+EzrUgz4POtSDPgM6/zrnOsSDPgM61z4HOuc6/z4fOriDOuM6xIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDOsc+Fz4TOrc+CIM6/zrkgz4HPhc64zrzOr8+DzrXOuc+CIM+Dz4TOvyDPgM61z4HOuc6yzqzOu867zr/OvSDOtc+BzrPOsc+Dzq/Osc+CIM+Hz4HOrs+Dz4TOty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM6/IM+Hz4HPjs68zrEgz4TPic69IM66zrHPhM6xz4PPhM6sz4POtc+Jzr0gzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrnPgiDOus6xz4TOsc+Dz4TOrM+DzrXOuc+CIM6xzr3OrM+Az4TPhc6+zrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDPgM+Bzr/PhM65zrzOrs+DzrXPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOuc+CIM6/zrzOrM60zrXPgiDOtM65zrrOsc65z4nOvM6sz4TPic69IM+Ezr/PhSDPgM6xz4HOsc60zrXOr86zzrzOsc+Ezr/PgiDPhM+Jzr0gzrPOtc69zrnOus+Ozr0gz4fOsc+BzrHOus+EzrfPgc65z4PPhM65zrrPjs69IM66zrHPhM6xzrvPjM6zzr/PhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOoM6xz4HOrM68zrXPhM+Bzr/OuSDOs865zrEgz4TOtyDOvM6/zr3OrM60zrEgzr/Ovc+MzrzOsc+Ezr/PgiDOs865zrEgz4TOuc+CIM66zrvOrM+DzrXOuc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM63IM68zr/Ovc6szrTOsSDOsc+BzrnOuM68zr/PjSDOs865zrEgz4TOuc+CIM66zrvOrM+DzrXOuc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrnPgiDPg861zrvOr860zrXPgiAoz4PPhM65z4Igzr/PgM6/zq/Otc+CIM61zrzPhs6xzr3Or862zr/Ovc+EzrHOuSDPhM6xIM+Dz4TOv865z4fOtc6vzrEgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86gzrHPgc6szrzOtc+Ez4HOv865IM6zzrnOsSDPhM63IM68zr/Ovc6szrTOsSDPg8+FzrzOss6/zrvOv8+DzrXOuc+BzqzPgiDOrc66zrTOv8+DzrfPgiDOs865zrEgz4TOuc+CIM66zrvOrM+DzrXOuc+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM+Az4HOv8+EzrnOvM6uz4POtc+Jzr0gz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrfOvSDOtc69z4zPhM63z4TOsSDOtc+BzrPOsc67zrXOuc6/zrjOrs66zrfPgiDPgM+Bzr/PhM+Nz4DOv8+FIM+Dz4XOvM6yzr/Ou86/z4POtc65z4HOrM+CIM6tzrrOtM6/z4POt8+CIM6zzrnOsSDPhM65z4IgzrrOu86sz4POtc65z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gz4DPgc6/z4TOuc68zq7Pg861z4nOvSDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzqDOsc+BzqzOvM61z4TPgc6/zrkgzrPOuc6xIM+EzrfOvSDOtc69zrXPgc6zzr/PgM6/zq/Ot8+Dzrcgzq3Ous60zr/Pg863z4IgzrPOuc6xIM+EzrnPgiDOus67zqzPg861zrnPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDPgM+Bzr/PhM65zrzOrs+DzrXPic69IM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ86VzrrPhM61zrvOtc6vIM+Ezrcgz4HPhc64zrzOuc+DzrzOrc69zrcgzrXOvc6tz4HOs861zrnOsSDOs865zrEgzrrOrM64zrUgz4PPhc68zrLOrM69ICjPic+CIEludm9rZXIpIM6zzrnOsSDOus6szrjOtSDPgc+FzrjOvM65z4POvM6tzr3OtyDPhc+AzrfPgc61z4POr86xIFdlYnNlcnZpY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfOn868zqzOtM6xIM6xzrTOtc65z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4IgzrXOvc6tz4HOs861zrnOsc+CIM+Az4HOv8+DzqzPgc+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgzrHOvc6xzrbOrs+EzrfPg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiDOsc69zrHOts6uz4TOt8+DzrfPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOtyDOtM65zrXPgM6xz4bOriDPgM61zrvOrM+EzrcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgzrTOtc69zrTPgc65zrrOrs+CIM+Az4HOv86yzr/Ou86uz4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4IgzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgSVRTTSDPg8+EzrcgzrTOuc61z4DOsc+Gzq4gz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4Igz4DPgc6/z4POuM6uzrrOt8+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM68zrHOts65zrrPjs69IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgzrTOuc66zrHOuc+OzrzOsc+EzrEgzrPOuc6xIM+Ezrcgz4fPgc6uz4POtyDPhM63z4Igzr/OuM+Mzr3Ot8+CIM61z4DOtc6+zrXPgc6zzrHPg86vzrHPgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiBJVFNNIM+Dz4TOtyDOtM65zrXPgM6xz4bOriDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpHPgM6xzrnPhM6/z43OvM61zr3OsSDOtM65zrrOsc65z47OvM6xz4TOsSDOs865zrEgz4TOtyDPh8+Bzq7Pg863IM+EzrfPgiDOv864z4zOvc63z4Igz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4IgzrnPg8+Ezr/Pgc65zrrOv8+NIElUU00gz4PPhM6/IM+AzrXPgc65zrLOrM67zrvOv869IM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOkc+AzrHOuc+Ezr/Pjc68zrXOvc6xIM60zrnOus6xzrnPjs68zrHPhM6xIM6zzrnOsSDPhM63IM+Hz4HOrs+Dzrcgz4TOt8+CIM6/zrjPjM69zrfPgiBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSDPg8+Ezr8gz4DOtc+BzrnOss6szrvOu86/zr0gzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ86Rz4DOsc65z4TOv8+NzrzOtc69zrEgz4DPgc6/zr3PjM68zrnOsSDOs865zrEgz4TOtyDOtM65zrHOs8+BzrHPhs6uIM+Dz4TOv865z4fOtc6vz4nOvSDPgc+FzrjOvM6vz4POtc+Jzr0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnzpHOvc6xzrbOrs+EzrfPg863IM+Dz4TOv865z4fOtc6vz4nOvSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnzp/Pgc6vz4PPhM61IM6xz4XPhM+MzrzOsc+EzrEgz4TOt869IM66zrHPhM6sz4PPhM6xz4POtyDPg8+FzrzOss6szr3PhM6/z4IgzrXOvc+Mz4IgQ0kgz4zPhM6xzr0gzq3Ovc6xIFRpY2tldCDPg8+Fzr3OtM6tzrXPhM6xzrkgzrzOtSDOrc69zrEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzp/Pgc6vzrbOtc65IM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+DzrcgzrHOvc6sz4DPhM+Fzr7Ot8+CIM+Dz4TOt869IM6/zrjPjM69zrcgzrzOsc62zrnOus6uz4Igz4DPgc6/zrLOv867zq7PgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc6xz4PPjc69zrTOtc+DzrfPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzp/Pgc6vzrbOtc65IM+EzrfOvSDOus6xz4TOrM+Dz4TOsc+Dzrcgz4PPhc68zrLOrM69z4TOv8+CIM+Dz4TOt869IM6/zrjPjM69zrcgzrzOsc62zrnOus6uz4Igz4DPgc6/zrLOv867zq7PgiDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM63z4IgzrTOuc61z4DOsc+Gzq7PgiDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8+Az4HOv8+AzrHPgc6xzrPPic6zzrnOus6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnzpXOvM+GzrHOvc6vzrbOtc65IM6tzr3Osc69IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM68zrXOvc6/z40gzrPOuc6xIM+Az4HPjM+DzrLOsc+Dzrcgz4PPhM6/IM65z4PPhM6/z4HOuc66z4wgzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gzrXPgM65z4POus+Mz4DOt8+Dzrcgz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4TOv8+FIM+AzrXPgc65zrLOrM67zrvOv869z4TOv8+CIM61z4HOs86xz4POr86xz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPgM+Bz4zPg86yzrHPg863IM+Dz4TOvyDOuc+Dz4TOv8+BzrnOus+MIM61zr3PjM+CIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+Dz4TOt869IM+Az4HOv86yzr/Ou86uIM68zrXOs86tzrjPhc69z4POt8+CIM+Ezr/PhSDPgM61z4HOuc6yzqzOu867zr/Ovc+Ezr/PgiDOtc+BzrPOsc+Dzq/Osc+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPhM63IM60zrnOsc6zz4HOsc+Gzq4gzrXOvc+Mz4Igz4PPhM6/zrnPh861zq/Ov8+FIM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOt8+CIM60zrnOtc+AzrHPhs6uz4Igz4TOv8+FIM+Az4HOrM66z4TOv8+BzrEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM61zrzPhs6szr3Ouc+Dzrcgz4TPic69IM+Dz4XOvc60zq3Pg868z4nOvSDPhM+Jzr0gz4PPhM6/zrnPh861zq/Pic69IM60zrnOsc68z4zPgc+Gz4nPg863z4Igz4nPgiDOtM61zr3OtM+BzrnOus6uIM+Az4HOv86yzr/Ou86uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPhM63zr0gzrHOvc+EzrnOs8+BzrHPhs6uIM61zr3PjM+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+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgz4TOt869IM6xzr3PhM65zrPPgc6xz4bOriDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDOvM61zrPOrc64z4XOvc+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPhM63zr0gzrXPgM61zr7Otc+BzrPOsc+Dzq/OsSDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDOvM61zrPOrc64z4XOvc+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDOvc6xIM61z4DOuc+Dz4TPgc6tz4jOtc+EzrUgz4PPhM63zr0gz4DPgc6/zrLOv867zq4gzrzOtc6zzq3OuM+Fzr3Pg863z4Igz4TOv8+FIM+Dz4TOv865z4fOtc6vzr/PhSDOtM65zrHOvM+Mz4HPhs+Jz4POt8+CIM+EzrfPgiDOtM65zrXPgM6xz4bOrs+CIM+Ezr/PhSDPgM+BzqzOus+Ezr/Pgc6xLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDOrc69zrHOvSDPg8+Nzr3OtM61z4POvM6/IM+Dz4TOvyDOvM61zr3Ov8+NIM6zzrnOsSDPhM63zr0gzrXOus+Ez43PgM+Jz4POtyDOtc69z4zPgiDPg8+Ezr/Ouc+HzrXOr86/z4UgzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDPgM+Bzr/Oss6/zrvOriDOvM61zrPOrc64z4XOvc+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfOlc68z4bOsc69zq/Ots61zrkgzq3Ovc6xzr0gz4PPjc69zrTOtc+DzrzOvyDPg8+Ezr8gzrzOtc69zr/PjSDOs865zrEgzrzOtc6zzq3OuM+Fzr3Pg863IM+DzrUgzq3Ovc6xIM+Dz4TOv865z4fOtc6vzr8gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPg8+EzrfOvSDOtc+AzrnPg866z4zPgM63z4POtyDPg8+Ezr/Ouc+HzrXOr8+Jzr0gzrTOuc6xzrzPjM+Bz4bPic+DzrfPgiDPhM6/z4Ugz4DOtc+BzrnOss6szrvOu86/zr3PhM6/z4IgzrXPgc6zzrHPg86vzrHPgiDPhM6/z4Ugz4DPgc6szrrPhM6/z4HOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ86VzrzPhs6xzr3Or862zrXOuSDPhM6/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/Ous67zrfPg863IENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ86IzrrOtM6/z4POtyBTdHJpbmcgRXhwcmVzc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfOiM66zrTOv8+DzrcgU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfOo866zrHOvc60zqzOu863IM6tzrrOtM6/z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfOlc6szr0gzrcgzrXOus+Ezq3Ou861z4POtyDPhM6/z4UgQ29uZmlnSXRlbUFDTCDOvM+Azr/Pgc61zq8gzr3OsSDOsc+Azr/Phs61z4XPh864zrXOryDOvM61IM+Ezr/OvSDOrc67zrXOs8+Hzr8gz4TPic69IM61zr7Osc+Bz4TOrs+DzrXPic69IM+Ez4nOvSDPgM61zrTOr8+Jzr0gz4DOv8+FIM6tz4fOv8+Fzr0gzrHPgM6/zrjOt866zrXPhc+EzrXOryDPg8+EzrfOvSDPgM+Bzr/Pg8+Jz4HOuc69zq4gzrzOvc6uzrzOty4gzpHPhc+Ez4wgzrzPgM6/z4HOtc6vIM69zrEgzrLOtc67z4TOuc+Oz4POtc65IM+Ezr/Phc+CIM+Hz4HPjM69zr/Phc+CIM+Gz4zPgc+Ez4nPg863z4Igz4TPic69IM+Gzr/Pgc68z47OvSwgzrHOu867zqwgz4DPgc6tz4DOtc65IM69zrEgzrHPgM61zr3Otc+BzrPOv8+Azr/Ouc63zrjOtc6vLCDOtc6szr0gz4DPgc+MzrrOtc65z4TOsc65IM69zrEgz4fPgc63z4POuc68zr/PgM6/zrnOt864zr/Pjc69IEFDTE1vZHVsZXMgzrPOuc6xIElUU01Db25maWdJdGVtLSDOus6xzrkgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ86gzr/Ouc61z4IgzrPOtc69zrnOus6tz4Igz4DOu863z4HOv8+Gzr/Pgc6vzrXPgiDOtc68z4bOsc69zq/Ots6/zr3PhM6xzrkgz4PPhM63zr0gzrXPgM65zrrOtc+GzrHOu86vzrTOsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfOus6xz4TOt86zzr/Pgc6vzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnz4DOsc6zzrrPjM+DzrzOuc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnzrzOtc+EzrHPgM6xz4HOsc6zz4nOs865zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnz4DPgc6/z4DOsc+BzrHOs8+JzrPOuc66zq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ8+AzrHPgc6xzrPPic6zzrnOus+MJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiA0NCw0NSBjbSAoMTcsNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIM6vzr3PhM+DzrXPgiAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDY2LDY4IGNtICgyNiwyNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogODAsMDEgY20gKDMxLDUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICfOoc6sz4bOuSAxOSDOuc69z4TPg8+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiA0LDQ1IGNtICgxLDc1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiA4OCw5IGNtICgzNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJ86hzqzPhs65IDIxIM65zr3PhM+Dz47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgzq/Ovc+Ez4POtc+CICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnzqHOrM+GzrkgMjMgzrnOvc+Ez4PPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiDOr869z4TPg861z4IgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIM6vzr3PhM+DzrXPgiAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgzq/Ovc+Ez4POtc+CICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiA4LDg5IGNtICgzLDUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IM6vzr3PhM+DzrXPgiAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgzq/Ovc+Ez4POtc+CICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSDOr869z4TPg861z4IgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IM6vzr3PhM+DzrXPgiAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogMTYwLDAyIGNtICg2MyDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgzq/Ovc+Ez4POtc+CICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogMTczLDM1IGNtICg2OCwyNSDOr869z4TPg861z4IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogMTg2LDY5IGNtICg3Myw1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgzq/Ovc+Ez4POtc+CICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIM6vzr3PhM+DzrXPgiAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDIxMywzNiBjbSAoODQgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IM6vzr3PhM+DzrXPgiAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDIyLDIzIGNtICg4LDc1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMzEsMTIgY20gKDEyLDI1IM6vzr3PhM+DzrXPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IM6vzr3PhM+DzrXPgiAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgzq/Ovc+Ez4POtc+CKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ86bzr/Os865z4PPhM65zrrOric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ86azrHPhM6xzr3Ov868zq4gzrTOuc61z4XOuM+Nzr3Pg861z4nOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnzpTOuc6xz4fOtc65z4HOuc+Dz4TOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ86Rzr3Osc67zr/Os865zrrPjCDPhM63zrvOrc+Gz4nOvc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnzqTPjc+Azr/PgiDPg8+Fz4POus61z4XOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnzqfPic+BzrfPhM65zrrPjM+EzrfPhM6xIM68z4DOsc+EzrHPgc6vzrHPgiAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ86kz43PgM6/z4IgzrzPgM6xz4TOsc+Bzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnzprPhM6vz4HOuc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfOlM65zrHPg8+Nzr3OtM61z4POtyDOtM65zrHPjc67zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ86azrHPhM63zrPOv8+Bzq/OsSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ86nz4nPgc63z4TOuc66z4zPhM63z4TOsSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnzqfPic+BzrfPhM65zrrPjM+EzrfPhM6xIM6xzr3OrCDOus6sz4HPhM6xIM6zz4HOsc+GzrnOus+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfOkc+BzrnOuM68z4zPgiDOus6sz4HPhM6xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfOkc69zrHOs869z47Pg8+EzrfPgiDOus6xz4HPhM+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOus6sz4HPhM6xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ86gzrnPg8+Ezr/PgM6/zrnOt8+EzrnOus6sIM+AzrXOu86xz4TPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ86bzr/Os865z4POvM65zrrPjCDPgM61zrvOrM+EzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnzprOsc+EzrfOs86/z4HOr86xIM+AzrXOu86sz4TOtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfOoc+FzrjOvM+Mz4Igz4HOv867zr/Os865zr/PjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnzqTOsc+Hz43PhM63z4TOsSDPgc6/zrvOv86zzrnOv8+NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfOoM65z4PPhM6/z4DOv865zrfPhM65zrrOrCDPhc+Azr/Os8+BzrHPhs6uz4IgzrrPjs60zrnOus6xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICfOpM63zrvOrc+Gz4nOvc6/IM+Dz4XOvc60zrnOrM+DzrrOtc+IzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ86jz4XOvM6yzr/Phc67zrXPhc+EzrnOus6uIM+Dz4XOvM+Gz4nOvc6vzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ86Vz4DOuc66zr/Ouc69z4nOvc6vzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ86Vz4DOuc66zr/Ouc69z4nOvc6uz4PPhM61IM68zrUgz4TOv869IM60zrnOsc69zr/OvM6tzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfOlM65zrHPh861zq/Pgc65z4POtyDOtc68z4DOv8+BzrXPhc68zrHPhM6/zrrOuc6yz4nPhM6vz4nOvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ86jz43OvM6yzrHPg863JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM+Dz43OvM6yzrHPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICfOoM61z4HOr86/zrTOv8+CIM+Dz43OvM6yzrHPg863z4IgzrHPgM+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ86gzrXPgc6vzr/OtM6/z4Igz4PPjc68zrLOsc+DzrfPgiDOrc+Jz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnzpHPg8+Nz4HOvM6xz4TOvyDPhM63zrvOrc+Gz4nOvc6/ICjPhM63zrvOrc+Gz4nOvc6/IERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ86czr/Ovc6szrTOsSDOus+Mz4PPhM6/z4XPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ86Rz4HOuc64zrzPjM+CIM6xzrTOtc65z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnzpfOvM61z4HOv868zrfOvc6vzrEgzrTOt868zrnOv8+Fz4HOs86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnzqDPgc6/z4POsc+BzrzOv8+DzrzOrc69zr8gz4HOrM+GzrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgzprPgc6xz4TOt868zq3Ovc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICfOl868zrXPgc6/zrzOt869zq/OsSDPhM6/z4Ugz4TOuc68zr/Ou86/zrPOr86/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM+AzrHPgc6xzrPOs861zrvOr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM+Hzr/Pgc6uzrPOt8+DzrfPgiDOtc6zzrPPjc63z4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ86XzrzOtc+Bzr/OvM63zr3Or86xIM66z4XOus67zr/Phs6/z4HOr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ86Vz4DOuc+Ez4HOsc+Azq3Ots65zrEgzrXPgM65z4bOrM69zrXOuc6xIM61z4HOs86xz4POr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ86gzrnPg8+Ezr/PgM6/zrnOt8+EzrnOus6sIM+Fz4DOv86zz4HOsc+Gzq7PgiDOtc6zzrPPgc6sz4bPic69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnzqHOrM+GzrkgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnzqDOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgzrfOu861zrrPhM+Bzr/Ovc65zrrOv8+NIM+EzrHPh8+FzrTPgc6/zrzOtc6vzr/PhSAoz4DOuc+Dz4TOv8+Azr/Ouc63z4TOuc66zqwgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfOo8+NzrzOss6xz4POtyDOtc+BzrPOsc+Dzq/Osc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnzpTOuc61z43OuM+Fzr3Pg863IElQIM+Ezq3Ou86/z4XPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ86kzq3Ou86/z4Igz4TOt8+CIM+Dz4TOrs+BzrnOvs63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfOl868zrXPgc6/zrzOt869zq/OsSDOu86uzr7Ot8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfOlc6+z4nPhM61z4HOuc66z4zPgiDPg866zrvOt8+Bz4zPgiDOtM6vz4POus6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfOpM61zq/Ph86/z4Igz4DPgc6/z4PPhM6xz4POr86xz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ86Rz4DOv864zq7Ous61z4XPg863IM61zr3Orc+BzrPOtc65zrHPgiDOvM61IM65z4DPhM6szrzOtc69zr8gz4TPgc6/z4fPjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ86gzrHPgc6szrPOv869z4TOsc+CIM68zr/Pgc+Gzq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnzqPPhc68z4bPic69zq/OsSBGcmFuY2hpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfOk861zr3Ouc66zq3PgiDPgM67zrfPgc6/z4bOv8+Bzq/Otc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnzprOrM+Bz4TOtc+CIM6zz4HOsc+GzrnOus+Ozr0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ86azqzPgc+EzrEgzrPPgc6xz4bOuc66z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ86lzrvOuc66z4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfOnM6/zr3PhM6tzrvOvyDPhc67zrnOus6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnzpLOrM+Bzr/PgiDPhc67zrnOus6/z40nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ86RzrrOv8+Fz4PPhM65zrrOrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ86gz4HPic+Ez4zOus6/zrvOu86/IElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ86UzrnOsc+HzrXOr8+BzrnPg863IM+EzrHPhc+Ez4zPhM63z4TOsc+CIM66zrHOuSDPgM+Bz4zPg86yzrHPg863z4IgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM6xz4DOv86zz4HOsc+Gzq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ86az4zPg8+Ezr/PgiDOvM61z4TOsc+Ez4HOv8+Azq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ86Rz4HOuc64zrzPjM+CIM+EzrnOvM6/zrvOv86zzq/Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnzqDOu863zrrPhM+Bzr/Ou8+MzrPOuc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ86fzrjPjM69zrcgTENEICjOn864z4zOvc63IM+FzrPPgc+Ozr0gzrrPgc+Fz4PPhM6szrvOu8+Jzr0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICfOn864z4zOvc63IExFRCAozrTOr86/zrTOv8+CIM61zrrPgM6/zrzPgM6uz4Igz4bPic+Ez4zPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnzqPPhM6xzrjOtc+Bz4wgz4TOt867zq3Phs+Jzr3Ovyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfOps6/z4HOt8+Ez4zPgiDPhc+Azr/Ou86/zrPOuc+Dz4TOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnzpPOtc+JzrPPgc6xz4bOuc66z4wgz4DOu86sz4TOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDE6IM6mz4XPg865zrrPjCDPg8+Ez4HPjs68zrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDI6IM6jz4TPgc+OzrzOsSDOts61z43Ovs63z4IgzrTOtc60zr/OvM6tzr3Pic69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfOo8+Ez4HPjs68zrEgMzogzqPPhM+Bz47OvM6xIM60zrnOus+Ez43Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ86Vz4DOr8+AzrXOtM6/IDM6IM6Vz4DOr8+AzrXOtM6/IM60zrnOus+Ez43Ov8+FIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDQ6IM6jz4TPgc+OzrzOsSDOvM61z4TOsc+Gzr/Pgc6sz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ86jz4TPgc+OzrzOsSA1OiDOo8+Ez4HPjs68zrEgz4PPhc69z4zOtM6/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDY6IM6jz4TPgc+OzrzOsSDPgM6xz4HOv8+Fz4POr86xz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnzqPPhM+Bz47OvM6xIDc6IM6jz4TPgc+OzrzOsSDOtc+GzrHPgc68zr/Os86uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnzqPPhc68z4bPic69zq/OsSDOvM6vz4POuM+Jz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnzqPPhc68z4bPic69zq/OsSDOrM60zrXOuc6xz4Igz4fPgc6uz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICfOms67zrXOuc60zq8gzqzOtM61zrnOsc+CIM+Hz4HOrs+DzrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM6szrTOtc65zrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnzqDOtc+Bzq/Ov860zr/PgiDOrM60zrXOuc6xz4IgzrHPgM+MJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnzqDOtc+Bzq/Ov860zr/PgiDOrM60zrXOuc6xz4IgzrzOrc+Hz4HOuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnzpzPgM6xz4TOsc+Bzq/OsSDPhs+Jz4PPhs6/z4HOuc66zr/PjSDPg865zrTOrs+Bzr/PhSDOu865zrjOr86/z4UgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfOnM+AzrHPhM6xz4HOr86xIM65z4zOvc+Ez4nOvSDOu865zrjOr86/z4UgKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICfOo8+NzrzOss6xz4POtyDOtM6xzr3Otc6vzr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnzpLPgc6vz4POus61z4TOsc65IM+Dz4TOt869JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ86TzrXPic6zz4HOsc+GzrnOus+MIM68zq7Ous6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICfOms6xz4TOsc+DzrrOtc+FzrHPg8+Ezq7Pgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnzpzOrc6zzrnPg8+Ezrcgz4fPic+BzrfPhM65zrrPjM+EzrfPhM6xIM+Gzr/Pgc+Ezq/Ov8+FIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICfOnM69zq7OvM63JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnzqTPjc+Azr/PgiDOvM69zq7OvM63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnzpHPgc65zrjOvM+Mz4IgzrrOuc69zrfPhM6/z40gz4TOt867zrXPhs+Ozr3Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ86azrnOvc63z4TPjC/Otc69z4PPic68zrHPhM+JzrzOrc69zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfOnM6/zr3PhM6tzrvOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ86gzrXPgc65zrPPgc6xz4bOriDOvM6/zr3PhM6tzrvOv8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ86Rzr3OrM67z4XPg863IM6/zrjPjM69zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfOnM6tzrPOtc64zr/PgiDOv864z4zOvc63z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICfOoM6/zr3PhM6vzrrOuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnzpTOr866z4TPhc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ86gzrvOt8+Bzr/Phs6/z4HOr861z4IgzrTOuc66z4TPjc6/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ86gzrvOt8+Bzr/Phs6/z4HOr861z4IgzrTOuc66z4TPjc6/z4UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ86Vz4DOr8+AzrXOtM6/IM60zrnOus+Ez43Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnzpzPgM6xz4TOsc+Bzq/OsSDOvc65zrrOtc67zq/Ov8+FLc66zrHOtM68zq/Ov8+FIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ86cz4DOsc+EzrHPgc6vzrEgzr3Ouc66zrXOu86vzr/PhS3OvM61z4TOsc67zrvOuc66zr/PjSDPhc60z4HOuc60zq/Ov8+FIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfOo8+FzrzPhs+Jzr3Or86xIM68zrcgzrHPgM6/zrrOrM67z4XPiM63z4IgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfOo863zrzOtc65z4nOvM6xz4TOrM+BzrnOvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ86Rz4HOuc64zrzPjM+CIENQVXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnzpHPgc65zrjOvM+Mz4IgzrzOv869zqzOtM+Jzr0gUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ86Rz4HOuc64zrzPjM+CIM66zrHPgc+Ez47OvSDOs8+BzrHPhs65zrrPjs69JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICfOn864z4zOvc63IE9MRUQgKM6/z4HOs86xzr3Ouc66zq4gzrTOr86/zrTOv8+CIM61zrrPgM6/zrzPgM6uz4Igz4bPic+Ez4zPgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnzpvOtc65z4TOv8+Fz4HOs865zrrPjCDOus+Mz4PPhM6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnzpHPgc65zrjOvM+Mz4Igz4DOsc+BzrHOs86zzrXOu86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ86GzrvOu86xJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfOiM6+zr/OtM6/zrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnzqPPhc68z4bPic69zq/OsSDOtc+EzrHOuc+BzrnOus6uz4Igz4PPh86tz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnzpHPgc65zrjOvM+Mz4Igz4TOt867zrXPhs+Ozr3Ov8+FJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM+EzrfOu861z4bPjs69zr/PhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ86mz4XPg865zrrOv86vIM+Az4XPgc6uzr3Otc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnzqDOsc+BzqzOtM6/z4POtyDOuc+Dz4fPjc6/z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICfOkc6zzr/Pgc6sz4PPhM63zrrOtSDPg8+Ezr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ86SzqzOuM6/z4Igz4HOsc+GzrnOv8+NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnzpzOv869zqzOtM61z4IgUmFjayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ86Uz4nOvM6sz4TOuc6/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnzprOrM+Bz4TOsSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICfOoM65z4PPhM6/z4DOv865zrfPhM65zrrOrCBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnzqPPjc68zrLOsc+Dzrcgz4DPjs67zrfPg863z4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnzpTOv8+Bz4XPhs6/z4HOuc66z4wgz4TOt867zq3Phs+Jzr3Ovyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfOo8+Gz4HOsc6zzrnPg868zq3Ovc63IM68z4DOsc+EzrHPgc6vzrEgzrzOv867z43Oss60zr/PhS3Ov86+zq3Ov8+CIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnzpHPjc6+z4nOvSDOsc+BzrnOuM68z4zPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICfOm86/zrPOuc+DzrzOuc66z4wgzrTOuc6xzrrOv868zrnPg8+Ezq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfOo8+FzrzPhs+Jzr3Or86xIM+AzrHPgc6/z4fOrs+CIM+Fz4DOt8+BzrXPg865z47OvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ86Vz4TOuc66zq3PhM6xIM+Fz4DOt8+BzrXPg86vzrHPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfOpM+Nz4DOv8+CIM+Fz4DOv860zr/Ph86uz4InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfOm86/zrPOuc+DzrzOuc66z4wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICfOn868zrnOu863z4TOrc+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ86azrHOvc6/zr3Ouc66zr8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ86UzrnOtc+NzrjPhc69z4POtyBJUCDOrc69zrHPgc6+zrfPgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnzpHPgM6/zrjOrs66zrXPhc+DzrcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfOlM65zrHOvM6tz4HOuc+DzrzOsSDOsc+Azr/OuM6uzrrOtc+Fz4POt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnzpjPhc6zzrHPhM+BzrnOus6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICfOoM61z4HOr867zrfPiM63JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnzpvOtc+Az4TPjM+CIM+AzrXOu86sz4TOt8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICfOnc6uzrzOsc+EzrEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnzqPPhc69zr/Ou865zrrOriDOvM69zq7OvM63IFJBTSDOus6sz4HPhM6xz4IgzrPPgc6xz4bOuc66z47OvSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnzqPPhc69zr/Ou865zrrOriDOvM69zq7OvM63IFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfOn864z4zOvc63IM6xz4bOrs+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnzqDPjc+BzrPOv8+CJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICfOlM65zrHOvc6/zrzOrc6xz4IgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnzpHOus6/z4XPg8+EzrnOus6sIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ86kzrfOu86tz4bPic69zr8gVm9JUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydSdW4gU2VhcmNoJ30gPSAnUnVuIFNlYXJjaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0RlcHRoIExldmVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBJbi9PdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnTGFzdCBjaGFuZ2VkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0xhc3QgY2hhbmdlZCBieSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1lvdXIgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSBTZWFyY2gnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ05lZWQgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTm8gYWNjZXNzIGlzIGdpdmVuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05ldyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05ldyB2ZXJzaW9uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgZGVsZXRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdTdWJuZXQgTWFzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdwcmludGVkIGJ5ICVzIGF0ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTm8gUmVzdWx0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBub3QgZm91bmQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHZlcnNpb25zIGZvdW5kISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGlvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICd3YXJuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05vIHBlcm1pc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyIGludmFsaWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdTZWFyY2ggcGFyYW1zIGludmFsaWQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnU2hvd24gY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ0RlcGxveW1lbnQgU3RhdGUgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pYyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAoVmVyc2lvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGluayBSZWZlcmVuY2luZyBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpb24gU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdDb25maWcgSXRlbSBDbGFzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIEhpZGRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gU2hvd24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdBc3NpZ25lZCBDSXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgU2V0dGluZ3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlnIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdDb25maWcgaXRlbSBhZGQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnQ29uZmlnIGl0ZW0gZWRpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlnIGl0ZW0gcHJpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlnIGl0ZW0gem9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtIFRyZWUgVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLic7CiAgICAkU2VsZi0+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+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOYW1lIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtYmVyIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ092ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnUGVybWlzc2lvbiBHcm91cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU2VhcmNoIGNvbmZpZyBpdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBhcmUgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24gYXMgZGVmaW5lZCBpbiB0aGUgc2V0dGluZyBJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0jIyNTaG93Q29sdW1ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+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+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0ludmVyc3RtZW50IGNvc3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnSW52b2ljZSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLZXlib2FyZCc7CiAgICAkU2VsZi0+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+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</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+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdSdW4gU2VhcmNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IGZvciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnRGVwdGggTGV2ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIEluL091dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aW9uIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGNvbmZpZyBpdGVtPyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdMYXN0IGNoYW5nZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGFzdCBjaGFuZ2VkIGJ5JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnWW91ciBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIFNlYXJjaCc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdObyBhY2Nlc3MgaXMgZ2l2ZW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTmV3IHZlcnNpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgZGVsZXRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAncHJpbnRlZCBieSAlcyBhdCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnSW52YWxpZCBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vIENsYXNzSUQgaXMgZ2l2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05vIFJlc3VsdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBub3QgZm91bmQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05vIHZlcnNpb25zIGZvdW5kISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGlvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICd3YXJuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05vIFBlcm1pc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyIGludmFsaWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdTZWFyY2ggcGFyYW1zIGludmFsaWQhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnU2hvd24gY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ0RlcGxveW1lbnQgU3RhdGUgVHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pYyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAoVmVyc2lvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGluayBSZWZlcmVuY2luZyBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpb24gU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0V4cGlyZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYWludGVuYW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdSZXZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIEhpZGRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gU2hvd24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdBc3NpZ25lZCBDSXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgU2V0dGluZ3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlnIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdDb25maWcgaXRlbSBhZGQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnQ29uZmlnIGl0ZW0gZWRpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlnIGl0ZW0gcHJpbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlnIGl0ZW0gem9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdDb25maWdJdGVtIFRyZWUgVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnRGVmaW5pdGlvbiBVcGRhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdEZXBsb3ltZW50IFN0YXRlIENvbG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmFtZSBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWJlciBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZ3VlIGF0dHJpYnV0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnUGVybWlzc2lvbiBHcm91cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZlcnNpb25JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lic7CiAgICAkU2VsZi0+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+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudG9yeSBOdW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0bWVudCBjb3N0cyc7CiAgICAkU2VsZi0+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+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBIZWFkc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgUGhvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</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+eydSdW4gU2VhcmNoJ30gPSAnRWplY3V0YXIgYsO6c3F1ZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ8K/QnVzY2FyIHRhbWJpw6luIGVuIHZlcnNpb25lcyBhbnRlcmlvcmVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBhcmEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsIGRlIHByb2Z1bmRpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQWNlcmNhci9BbGVqYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnwqFOaXZlbCBtw6F4aW1vIGRlIGVubGFjZXMgYWxjYW56YWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdEZW1vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjacOzbiBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGFjdHVhbCBkZWwgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGFjdHVhbCBkZWwgaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ8OabHRpbW8gY2FtYmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ8OabHRpbW8gY2FtYmlvIHBvcic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ1N1cyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQsO6c3F1ZWRhIENvbmZpZ0l0ZW0nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSBpbXBvcnRhcsOhbiBsYXMgc2lndWllbnRlcyBjbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2UgaW1wb3J0YXLDoW4gbGFzIHNpZ3VpZW50ZXMgZnVuY2lvbmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1RlbmdhIGVuIGN1ZW50YSBxdWUgdGFtYmnDqW4gc2UgY3JlYXLDoW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIHkgbGFzIGNsYXNlcyBHZW5lcmFsQ2F0YWxvZyBjb3JyZXNwb25kaWVudGVzIHkgcXVlIG5vIHNlIGVsaW1pbmFyw6FuIGF1dG9tw6F0aWNhbWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnwr9RdWllcmVzIGNvbnRpbnVhcj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnwqFOZWNlc2l0YSBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnTGEgZGVmaW5pY2nDs24gbm8gZXMgdW4gaGFzaCBZQU1MIHbDoWxpZG8uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnVmlzacOzbiBnZW5lcmFsOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaGEgaW5kaWNhZG8gbmluZ8O6biBDb25maWdJdGVtSUQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnTmVjZXNpdGEgYWwgbWVub3MgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vIHRpZW5lIGFjY2VzbyBkZSBlc2NyaXR1cmEgYSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnwqFObyBzZSBoYSBkZWZpbmlkbyBsYSBjbGFzZSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0VsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuICIlcyIgbm8gc2UgZW5jdWVudHJhIGVuIGxhIGJhc2UgZGUgZGF0b3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnwqFObyBzZSBoYSBwb2RpZG8gYm9ycmFyIGVsIGNvbmZpZ2l0ZW0gSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfCoU5vIHNlIGhhIGVuY29udHJhZG8gbmluZ3VuYSB2ZXJzacOzbiBwYXJhIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaW5kaWNhIG5pbmfDum4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvIENsYXNzSUQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdEZWZpbmUgcXXDqSB0aXBvIGRlIHRpY2tldCBwdWVkZSBhZmVjdGFyIGFsIGVzdGFkbyBkZSB1biBDSSB2aW5jdWxhZG8uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgaGlzdG9yaWFsLCDCoW5vIHNlIGRhIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdObyBwdWVkbyBtb3N0cmFyIGVsIGhpc3RvcmlhbCwgbm8gdGVuZ28gZGVyZWNob3MgZGUgYWNjZXNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnVldm8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTnVldmEgdmVyc2nDs24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0VzdGFkbyBkZSBkZXNwbGllZ3VlIGFjdHVhbGl6YWRvIChudWV2bz0lcywgYW50aWd1bz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlbCBpbmNpZGVudGUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLCBhbnRpZ3VvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdFbmxhY2UgYSAlcyAodHlwZT0lcykgYcOxYWRpZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ0VubGFjZSBhICVzICh0eXBlPSVzKSBlbGltaW5hZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0RlZmluaWNpw7NuIGRlIENvbmZpZ0l0ZW0gYWN0dWFsaXphZGEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWJyZSBhY3R1YWxpemFkbyAobnVldm89JXMsIGFudGlndW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dG8gJXMgYWN0dWFsaXphZG8gZGUgIiVzIiBhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2nDs24gJXMgZWxpbWluYWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05vIHNlIGluZGljYSBuaW5nw7puIENvbmZpZ0l0ZW1JRCBuaSBWZXJzaW9uSUQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIG5vIHNlIGhhbiBjb25jZWRpZG8gZGVyZWNob3MgZGUgYWNjZXNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBubyBzZSBlbmN1ZW50cmEgZW4gbGEgYmFzZSBkZSBkYXRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0VsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdpbXByZXNvIHBvciAlcyBlbiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ8KhQ2xhc3NJRCBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgaW5kaWNhIG5pbmfDum4gQ2xhc3NJRC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdObyBzZSBoYW4gY29uY2VkaWRvIGRlcmVjaG9zIGRlIGFjY2VzbyBwYXJhIGVzdGEgY2xhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfCoVNpbiByZXN1bHRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnQ29uZmlndXJhciByZXN1bHRhZG9zIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgZWxlbWVudG8sIMKhbm8gc2UgZGFuIGRlcmVjaG9zIGRlIGFjY2VzbyBwYXJhIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ8KhQ29uZmlnSXRlbSBubyBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyB2ZXJzaW9uZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmFjaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2FkdmVydGVuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGUgZGVzcGxpZWd1ZSBkZSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRWwgZXN0YWRvIGRlbCBpbmNpZGVudGUgZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05vIHRpZW5lIHBlcm1pc29zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfCoUZpbHRybyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXLDoW1ldHJvcyBkZSBiw7pzcXVlZGEgaW52w6FsaWRvcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0VsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwbyBkZSBlc3RhZG8gZGUgZGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdFc3RhZG8gYWN0dWFsIGRlbCBpbmNpZGVudGUgVGlwbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdFbnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY2Npb25lcyBkZSBjbGFzZSBwYXJhIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljY2lvbmVzIGRlIGNsYXNlIHBhcmEgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2Npb25lIHVuYSBvIG3DoXMgY2xhc2VzIHBhcmEgcmVzdHJpbmdpciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluw6FtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnRXN0w6F0aWNhIChWZXJzacOzbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVGlwbyBkZSByZWZlcmVuY2lhIGRlIGVubGFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTaSBlc3RlIGVubGFjZSBzZSBhcGxpY2EgYWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gbyBhIGxhIHZlcnNpw7NuIGVzdMOhdGljYSBkZWwgb2JqZXRvIGRlIHJlZmVyZW5jaWEuIEVsIGPDoWxjdWxvIGRlbCBlc3RhZG8gYWN0dWFsIGRlbCBpbmNpZGVudGUgc8OzbG8gc2UgcmVhbGl6YSBlbiBsb3MgZW5sYWNlcyBkaW7DoW1pY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjY2lvbmUgZWwgYXRyaWJ1dG8gcG9yIGVsIHF1ZSBzZSBidXNjYXLDoW4gbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgZXN0cnVjdHVyYSBiYXNlIG5vIGVzIHbDoWxpZGEuIFBvciBmYXZvciwgcHJvcG9yY2lvbmUgdW4gaGFzaCBjb24gZGF0b3MgZW4gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0VzIG5lY2VzYXJpbyBjb21lbnphciBsYSBjYWRlbmEgWUFNTCBjb24gXCctLS1cJy4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTm8gc2UgaGEgcG9kaWRvIHB1cmdhciBsYSB0YWJsYSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyBjYW1wb3MgZGluw6FtaWNvcyByZWxldmFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTm8gc2UgaGEgcG9kaWRvIGluc2VydGFyIGVuIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnSW5zZXJ0YWRhcyAwIGZpbGFzIGVuIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgdW4gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2nDs24gQ2FkZW5hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yIGFsIHNpbmNyb25pemFyIGxhcyBkZWZpbmljaW9uZXMuIFBvciBmYXZvciwgY29tcHJ1ZWJlIGVsIHJlZ2lzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1RpZW5lIGRlZmluaWNpb25lcyBkZSBJVFNNQ29uZmlnSXRlbSBxdWUgbm8gZXN0w6FuIHNpbmNyb25pemFkYXMuIERlc3BsaWVndWUgbG9zIGNhbWJpb3MgZW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIGRlIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnQ2FkdWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW50ZW5pbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ0NvbnN1bHRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdQcnVlYmFzL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdWaXNpw7NuIGdlbmVyYWwgeSBjb25maXJtYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGFyIGNsYXNlcy9yb2xlcyB5IHN1cyBjYW1wb3MgcmVsYWNpb25hZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU2UgaGEgcHJvZHVjaWRvIHVuIGVycm9yIGR1cmFudGUgbGEgaW1wb3J0YWNpw7NuIGRlIGxhIGNsYXNlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gT2N1bHRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBTZSBtdWVzdHJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBleHRlbmRpZGFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQ29uIGVzdGEgZnVuY2nDs24gcHVlZGUgYnVzY2FyLCBwb3IgZWplbXBsbywgZWwgbm9tYnJlIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGFtcGxpYXIgbGFzIGNvbmRpY2lvbmVzIGRlIGLDunNxdWVkYSBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIGVzdGUgdGlwbyBkZSBjb25kaWNpb25lcyBjb21vICIoKmNsYXZlMSomJipjbGF2ZTIqKSIgbyAiKCpjbGF2ZTEqfHwqY2xhdmUyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdJQyBhc2lnbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0lDIGFzaWduYWRvcyBhIGxhIGVtcHJlc2EgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJcyBhc2lnbmFkb3MgYWwgdXN1YXJpbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsYSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdCdXNjYSB1biBub21icmUgw7puaWNvIHPDs2xvIGRlbnRybyBkZSBsYSBtaXNtYSBjbGFzZSBkZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG8gZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBsbyBxdWUgc2lnbmlmaWNhIHF1ZSBjYWRhIENvbmZpZ0l0ZW0gZXhpc3RlbnRlIHNlIHRpZW5lIGVuIGN1ZW50YSBhIGxhIGhvcmEgZGUgYnVzY2FyIGR1cGxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIGRlIG5vbWJyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIG51bcOpcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBjYWRlbmFzIGRlIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdFbGlqYSBhdHJpYnV0b3MgcGFyYSBhY3RpdmFyIGxhIGNyZWFjacOzbiBkZSB1bmEgbnVldmEgdmVyc2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0VsaWphIGxhcyBjYXRlZ29yw61hcyBxdWUgZGVzZWEgYXNpZ25hciBhIGVzdGEgY2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgY29sdW1uYSBwYXJhIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bW5hcyBxdWUgc2UgcHVlZGVuIGZpbHRyYXIgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gTm90YTogU29sbyBzZSBwZXJtaXRlbiBhdHJpYnV0b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHkgY2FtcG9zIGRpbsOhbWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQ29uZmlnIGl0ZW0gYWRkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXRhciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBwZXJtaXRlIGVsIHJlZ2lzdHJvIGVuIGVsIGhpc3RvcmlhbCBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBhY3R1YWxpemEgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBhIHN1IGRlZmluaWNpw7NuIGFjdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0b3JpYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdDb25maWcgaXRlbSBwcmludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmFyIHpvb20gZGUgZWxlbWVudG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGVuIMOhcmJvbCBkZSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGRlIGxhcyBzaWd1aWVudGVzIGNsYXNlcyBubyBzZSBhbG1hY2VuYXLDoW4gZW4gZWwgc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGVzdG8gYSBsb3MgQ0lzIGV4aXN0ZW50ZXMsIGxhIG1pZ3JhY2nDs24gZGVsIENJIHRpZW5lIHF1ZSBzZXIgZWplY3V0YWRhIGEgdHJhdsOpcyBkZSBsYSBjb25zb2xhLCBkZXNwdcOpcyBkZSBjYW1iaWFyIGVzdGEgb3BjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTG9zIENvbmZpZ0l0ZW1zIGNvbiBsb3Mgc2lndWllbnRlcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYWNpw7NuIEVsZW1lbnRvIEzDrW1pdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYWNpw7NuIEzDrW1pdGUgZGUgZWxlbWVudG9zIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzZSBkZSBkYXRvcyBkZSBnZXN0acOzbiBkZSBsYSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03Ds2R1bG8gbWFzaXZvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gYnVzY2FyIGVucnV0YWRvciBiYWNrZW5kIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWUgeSBnZXN0aW9uZSBsYXMgZGVmaW5pY2lvbmVzIGRlIGxvcyBFbGVtZW50b3MgZGUgQ29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JlYSBUaWNrZXRzIHBhcmEgQ29uZmlnSXRlbXMgZW4gbW9tZW50b3MgZXNwZWPDrWZpY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdMb3MgY2xpZW50ZXMgcHVlZGVuIHZlciBsYXMgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMb3MgY2xpZW50ZXMgdGllbmVuIGxhIHBvc2liaWxpZGFkIGRlIGNhbWJpYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc2lvbmVzIGhpc3TDs3JpY2FzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHByZWRldGVybWluYWRvcyBxdWUgc2UgdXRpbGl6YXLDoW4gZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9YcOxbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PcOabHRpbW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdG9zIHBvciBkZWZlY3RvIGEgdXRpbGl6YXIgZW4gZWwgYXRyaWJ1dG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGNvbmZpZy4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluYSBhY2Npb25lcyBkb25kZSB1biBib3TDs24gZGUgY29uZmlndXJhY2nDs24gZXN0w6kgZGlzcG9uaWJsZSBlbiBlbCB3aWRnZXQgZGUgb2JqZXRvcyB2aW5jdWxhZG9zIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGVqbyIpLiBUZW5nYSBlbiBjdWVudGEgcXVlIGVzdGFzIGFjY2lvbmVzIGRlYmVuIGhhYmVyIHJlZ2lzdHJhZG8gbG9zIHNpZ3VpZW50ZXMgYXJjaGl2b3MgSlMgeSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHkgQ29yZS5BZ2VudCAuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBlc3F1ZW1hIFRlbXBsYXRlOjpUb29sa2l0IHBhcmEgY2FkZW5hcyBkZSB2ZXJzacOzbi4gU8OzbG8gc2UgdXRpbGl6YSBzaSBWZXJzaW9uIFN0cmluZyBNb2R1bGUgc2UgZXN0YWJsZWNlIGVuIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBjb25qdW50byBkZSBjb25kaWNpb25lcyBiYWpvIGxhcyBjdWFsZXMgdW4gY2xpZW50ZSBwdWVkZSB2ZXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uIExhcyBjb25kaWNpb25lcyBwdWVkZW4gcmVzdHJpbmdpcnNlIG9wY2lvbmFsbWVudGUgYSBkZXRlcm1pbmFkb3MgZ3J1cG9zIGRlIGNsaWVudGVzLiBFbCBub21icmUgZXMgZWwgw7puaWNvIGF0cmlidXRvIG9ibGlnYXRvcmlvLiBTaSBubyBzZSBlc3BlY2lmaWNhIG5pbmd1bmEgb3RyYSBvcGNpw7NuLCB0b2RvcyBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHNlcsOhbiB2aXNpYmxlcyBlbiBlc2EgY2F0ZWdvcsOtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Byb3BpZWRhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgb2J0ZW5lciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSB1dGlsaXphbmRvIGxhIEludGVyZmF6IEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgcmVxdWVyaWRvcyBwYXJhIGJ1c2NhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSB1dGlsaXphbmRvIGxhIEludGVyZmF6IEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgcmVxdWVyaWRvcyBwYXJhIGVzdGFibGVjZXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHZpc3RhIGdlbmVyYWwgcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIHVuYSBsaXN0YSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBzaSBsYXMgZXRpcXVldGFzIGRlIHRpcG8gZGUgZW5sYWNlIGRlYmVuIG1vc3RyYXJzZSBlbiBsYXMgY29uZXhpb25lcyBkZSBsb3Mgbm9kb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmUgZXhwcmVzaW9uZXMgcmVndWxhcmVzIGluZGl2aWR1YWxtZW50ZSBwYXJhIGNhZGEgY2xhc2UgQ29uZmlnSXRlbSBwYXJhIGNvbXByb2JhciBlbCBub21icmUgQ29uZmlnSXRlbSB5IG1vc3RyYXIgbG9zIG1lbnNhamVzIGRlIGVycm9yIGNvcnJlc3BvbmRpZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnN0YXIgZGUgdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW5hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBlc3RhIG9wZXJhY2nDs24uIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgcG9yIGRlZmVjdG8gZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZXBlbmRpZW5kbyBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc2lzdGlyIGVuIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuIGFycmF5IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lIGxhIHByb2Z1bmRpZGFkIGRlIGxhcyByZWxhY2lvbmVzIHF1ZSBzZSBtb3N0cmFyw6FuIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVqZW1wbG86ICJDbGF2ZSIgZGViZSB0ZW5lciBlbCBub21icmUgZGVsIENhbXBvIERpbsOhbWljbyBlbiBlc3RlIGNhc28gXCdYXCcsICJDb250ZW5pZG8iIGRlYmUgdGVuZXIgZWwgdmFsb3IgZGVsIENhbXBvIERpbsOhbWljbyBkZXBlbmRpZW5kbyBkZWwgdGlwbyBkZSBDYW1wbyBEaW7DoW1pY28sIFRleHRvOiBcJ2EgdGV4dFwnLCBEZXNwbGVnYWJsZTogXCcxXCcsIEZlY2hhL0hvcmE6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U2Vjb25kPTU5O1wnIHkgbyBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmUgZWwgc3Vib2JqZXRvIHBvciBkZWZlY3RvIGRlIGxhIGNsYXNlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGlzcG9uaWJsZXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGZ1bmNpw7NuIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zdGFyIGRlIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgbGEgYWx0dXJhIGRlbCBjb21wb25lbnRlIGVkaXRvciBkZSB0ZXh0byBlbnJpcXVlY2lkbyBwYXJhIGVzdGEgcGFudGFsbGEuIEludHJvZHV6Y2EgdW4gbsO6bWVybyAocMOteGVsZXMpIG8gdW4gdmFsb3IgcG9yY2VudHVhbCAocmVsYXRpdm8pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgbsO6bWVybyBkZSBmaWxhcyBkZWwgZWRpdG9yIGRlIGRlZmluaWNpb25lcyBDSSBlbiBsYSBpbnRlcmZheiBkZSBhZG1pbmlzdHJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBkZSBsb3MgZXN0YWRvcyBpbmNpZGVudGVzIGRlIGFsdG8gKHBvciBlamVtcGxvLCBjcmljaXRhbCkgYSBiYWpvIChwb3IgZWplbXBsbywgZnVuY2lvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgbG9zIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSByZWxldmFudGVzIGVuIGxvcyBxdWUgbG9zIHRpY2tldHMgdmluY3VsYWRvcyBwdWVkZW4gYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzIHBhcmEgdG9kYXMgbGFzIGNsYXNlcyBkZSBDSS4gU2kgbm8gaGF5IG5pbmd1bmEgZW50cmFkYSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMsIGRlcGVuZGllbmRvIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBsbGV2YXIgY29tbyBwcmVmaWpvIGVsIG5vbWJyZSBkZSBsYSBjbGFzZSB5IGRvcyBwdW50b3MgZG9ibGVzIChwb3IgZWplbXBsbywgT3JkZW5hZG9yOjopLiBIYXkgYWxndW5vcyBDSS1BdHJpYnV0b3MgcXVlIHNvbiBjb211bmVzIGEgdG9kb3MgbG9zIENJcyAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBQYXJhIG1vc3RyYXIgbG9zIEF0cmlidXRvcy1DSSBpbmRpdmlkdWFsZXMgdGFsIHkgY29tbyBzZSBkZWZpbmVuIGVuIGxhIERlZmluaWNpw7NuLUNJLCBzZSBkZWJlIHV0aWxpemFyIGVsIHNpZ3VpZW50ZSBlc3F1ZW1hIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgT3JkZW5hZG9yKTogT3JkZW5hZG9yOjpEaXNjb0R1cm86OjEsIE9yZGVuYWRvcjo6RGlzY29EdXJvOjoxOjpDYXBhY2lkYWQ6OjEsIE9yZGVuYWRvcjo6RGlzY29EdXJvOjoyLCBPcmRlbmFkb3I6OkRpc2NvRHVybzo6Mjo6Q2FwYWNpZGFkOjoxLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhIHBhcmEgdW5hIGNsYXNlIENJLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgZWxlbWVudG9zIGVzdMOhbiBkaXNwb25pYmxlcyBwYXJhICJBY2Npw7NuIiBlbiBlbCB0ZXJjZXIgbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHByaW1lciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHNlZ3VuZG8gbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSBlbmxhY2UgKG5vbWJyYWRvIGRlc2RlIGxhIHBlcnNwZWN0aXZhIGRlbCB0aWNrZXQpIHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIGVubGF6YWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIHRpcG8gZGUgdGlja2V0IHB1ZWRlIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBY3R1YWxpemFjacOzbiBkZSBsYSBkZWZpbmljacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnQm9ycmFyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUgQ29sb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgZGUgY2FtcG9zIGRpbsOhbWljb3MgcXVlIG1hcmNhIGxhcyBkZWZpbmljaW9uZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbW8gbm8gc2luY3Jvbml6YWRhcyBzaSBjYW1iaWFuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyBxdWUgY29udGllbmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGNhbXBvcyBJVFNNIGFkaWNpb25hbGVzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIG1vc3RyYWRhcyBkZSBsb3MgQ0lzIGVuIGxhIHZpc3RhIGNvbXBsZWphIGRlIGxhIHRhYmxhIGRlIGVubGFjZXMgcGFyYSB0b2RhcyBsYXMgY2xhc2VzIGRlIENJLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcG9yIGRlZmVjdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBY3RpdmEgbGEgZnVuY2nDs24gZGUgYWNjacOzbiBtYXNpdmEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHPDs2xvIHBhcmEgbG9zIGdydXBvcyBkZSBsYSBsaXN0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWN0aXZhL2Rlc2FjdGl2YSBsYSBmdW5jaW9uYWxpZGFkIGRlIGNvbXByb2JhciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gcGFyYSBub21icmVzIMO6bmljb3MuIEFudGVzIGRlIGhhYmlsaXRhciBlc3RhIG9wY2nDs24gZGViZSBjb21wcm9iYXIgc2kgZXhpc3RlbiBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29uIG5vbWJyZXMgZHVwbGljYWRvcy4gUHVlZGUgaGFjZXJsbyBjb24gZWwgY29tYW5kbyBkZSBjb25zb2xhIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIHBhcmEgZXN0YWJsZWNlciBjb25maWdpdGVtLXN0YXR1cyBlbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDYW1wb3MgZGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLCB1dGlsaXphZG9zIHBhcmEgbGEgYsO6c3F1ZWRhIGRlIHRleHRvIGNvbXBsZXRvLiBMb3MgY2FtcG9zIHRhbWJpw6luIHNlIGFsbWFjZW5hbiwgcGVybyBubyBzb24gb2JsaWdhdG9yaW9zIHBhcmEgbGEgZnVuY2lvbmFsaWRhZCBnZW5lcmFsLiBMYSBpbmNsdXNpw7NuIGRlIGFuZXhvcyBwdWVkZSBkZXNhY3RpdmFyc2UgcG9uaWVuZG8gbGEgZW50cmFkYSBhIDAgbyBib3Jyw6FuZG9sYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhbG1hY2VuYWRvcyBlbiBlbCDDrW5kaWNlIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgdXRpbGl6YW4gcGFyYSBvdHJhcyBjb3NhcyBhZGVtw6FzIGRlIGxhcyBiw7pzcXVlZGFzIGRlIHRleHRvIGNvbXBsZXRvLiBQYXJhIGxhIGZ1bmNpb25hbGlkYWQgY29tcGxldGEgdG9kb3MgbG9zIGNhbXBvcyBzb24gb2JsaWdhdG9yaW9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BhcmEgY2FkYSB3ZWJzZXJ2aWNlIChjbGF2ZSkgc2UgcHVlZGUgZGVmaW5pciB1biBhcnJheSBkZSBjbGFzZXMgKHZhbG9yKSBzb2JyZSBsYXMgcXVlIHNlIHJlc3RyaW5nZSBsYSBpbXBvcnRhY2nDs24uIFBhcmEgdG9kYXMgbGFzIGNsYXNlcyBlbGVnaWRhcywgbyB0b2RhcyBsYXMgY2xhc2VzIGV4aXN0ZW50ZXMsIGxvcyBhdHJpYnV0b3MgZGUgaWRlbnRpZmljYWNpw7NuIHRlbmRyw6FuIHF1ZSBzZXIgZWxlZ2lkb3MgZW4gbGEgY29uZmlndXJhY2nDs24gZGVsIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdSZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkb0luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBsb3MgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGluY2lkZW5jaWFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCByZXN1bHRhZG8gZGUgZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSBjb21wcm9iYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW5hIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSBjb21wcm9iYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZXN0YWTDrXN0aWNhcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb21icmUgTcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTcOzZHVsbyBudW3DqXJpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIHNlIG1vc3RyYXLDoW4gZW4gY2FkYSBww6FnaW5hIGRlIHVuIHJlc3VsdGFkbyBkZSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGRlYmVuIG1vc3RyYXJzZSBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZXRvcyBhIGJ1c2NhciwgY3XDoW50YXMgZW50cmFkYXMgeSBxdcOpIGF0cmlidXRvcyBtb3N0cmFyLiBMb3MgYXRyaWJ1dG9zIENvbmZpZ0l0ZW0gZGViZW4gYWxtYWNlbmFyc2UgZXhwbMOtY2l0YW1lbnRlIGEgdHJhdsOpcyBkZSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXNpw7NuIGdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBjYXRlZ29yw61hcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBmaWx0cm9zIGRlIGNvbHVtbmEgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcGVxdWXDsW9zLiBQb3IgZmF2b3IsIHRlbmdhIGVuIGN1ZW50YTogZXN0YWJsZWNlciBcJ0FjdGl2b1wnIGEgMCBzw7NsbyBldml0YXLDoSBxdWUgbG9zIGFnZW50ZXMgZWRpdGVuIGxvcyBhanVzdGVzIGRlIGVzdGUgZ3J1cG8gZW4gc3VzIHByZWZlcmVuY2lhcyBwZXJzb25hbGVzLCBwZXJvIHNlZ3VpcsOhIHBlcm1pdGllbmRvIGEgbG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0YXIgbG9zIGFqdXN0ZXMgZW4gbm9tYnJlIGRlIG90cm8gdXN1YXJpby4gVXRpbGljZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHBhcmEgY29udHJvbGFyIGVuIHF1w6kgw6FyZWEgZGViZW4gbW9zdHJhcnNlIGVzdG9zIGFqdXN0ZXMgZW4gbGEgaW50ZXJmYXogZGUgdXN1YXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgY29sb3IgZGUgbG9zIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIGdydXBvcyBkZSBwZXJtaXNvcyBkZSBlamVtcGxvIGRlIGxvcyBhdHJpYnV0b3MgZ2VuZXJhbGVzIGRlbCBjYXTDoWxvZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gZGUgbm9tYnJlcyBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gbnVtw6lyaWNvIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZWwgbcOzZHVsbyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBtw7NkdWxvIGRlbCBraXQgZGUgaGVycmFtaWVudGFzIGRlIHBsYW50aWxsYXMgZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGFjdGl2YWRvciBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1JlYWxpemEgbGEgYWNjacOzbiBjb25maWd1cmFkYSBwYXJhIGNhZGEgZXZlbnRvIChjb21vIEludm9rZXIpIHBhcmEgY2FkYSBXZWJzZXJ2aWNlIGNvbmZpZ3VyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3J1cG8gZGUgcGVybWlzb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgYWNjacOzbiBkZSBhZGp1bnRhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgdmlzdGEgZGUgw6FyYm9sIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBhbXBsaWFjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBhw7FhZGlyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIG1hc2l2YSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgZWRpY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGRlbCBoaXN0b3JpYWwgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NhbHRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnRGlzcG9zaXRpdm8gZGUgY29waWEgZGUgc2VndXJpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0VzdGFibGV6Y2EgYXV0b23DoXRpY2FtZW50ZSBlbCBlc3RhZG8gZGUgaW5jaWRlbmNpYSBkZSB1biBDSSBjdWFuZG8gc2UgdmluY3VsZSB1biBUaWNrZXQgYSB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlIGRlc3BsaWVndWUgZW4gbGEgcGFudGFsbGEgbWFzaXZhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlbCBpbmNpZGVudGUgZW4gbGEgcGFudGFsbGEgbWFzaXZhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIHZpbmN1bGFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBvdHJvIG9iamV0byBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBhbXBsaWFkYSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWxpbWluYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdmlzdWFsaXphciBsb3MgZW5sYWNlcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbW8gdW5hIHZpc3RhIGVuIMOhcmJvbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGR1cGxpY2FyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWRpdGFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGFtcGxpYWRhIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZvbHZlciBhdHLDoXMgZW4gbGEgdmlzdGEgZGUgem9vbSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIHN1IHZpc3RhIGFtcGxpYWRhIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhbXBsaWFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIGVsIGhpc3RvcmlhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gKG9yZGVuIGludmVyc28pIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdGVnb3LDrWEgcG9yIGRlZmVjdG8gcXVlIHNlIG11ZXN0cmEsIHNpIG5vIHNlIHNlbGVjY2lvbmEgbmluZ3VuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0VsIGlkZW50aWZpY2Fkb3IgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIHBvciBlamVtcGxvIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBQb3IgZGVmZWN0byBlcyBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjdGl2YSBhdXRvbcOhdGljYW1lbnRlIGVsIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdFeHByZXNpw7NuIGRlIGNhZGVuYSBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+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+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBpbnZlbnRhcmlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnQ29zdGVzIGRlIGludmVyc2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGZhY3R1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChwYW50YWxsYSBkZSBjcmlzdGFsIGzDrXF1aWRvKSc7CiAgICAkU2VsZi0+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+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydSdW4gU2VhcmNoJ30gPSAnRWplY3V0YXIgbGEgYsO6c3F1ZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ8K/RGVzZWEgYnVzY2FyIGVuIHZlcnNpb25lcyBhbnRlcmlvcmVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBhcmEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsIGRlIHByb2Z1bmRpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQWNlcmNhci9BbGVqYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnwqFOaXZlbCBtw6F4aW1vIGRlIGVubGFjZXMgYWxjYW56YWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBBY3R1YWwgZGUgbGEgSW1wbGVtZW50YWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdFc3RhZG8gZGVsIEluY2lkZW50ZSBBY3R1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltbyBjYW1iaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGEgw7psdGltYSB2ZXogcXVlIHNlIG1vZGlmaWPDsyBmdWUgcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnU3VzIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdCw7pzcXVlZGEgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGNsYXNlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSBpbXBvcnRhcsOhbiBsYXMgc2lndWllbnRlcyBmdW5jaW9uZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVGVuZ2EgZW4gY3VlbnRhIHF1ZSB0YW1iacOpbiBzZSBjcmVhcsOhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgeSBsYXMgY2xhc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRpZW50ZXMgeSBxdWUgbm8gc2UgZWxpbWluYXLDoW4gYXV0b23DoXRpY2FtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfCv0Rlc2VhIHByb2NlZGVyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfCoU5lY2VzaXRhIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkZWZpbmljacOzbiBubyBlcyB1biBoYXNoIFlBTUwgdsOhbGlkby4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdSZXN1bWVuOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfCoU5lY2VzaXRhIGFsIG1lbm9zIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHNlbGVjY2lvbmFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdObyB0aWVuZSBwZXJtaXNvIGRlIGVzY3JpdHVyYSBwYXJhIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs246ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ8KhTmluZ3VuYSBkZWZpbmljacOzbiBmdWUgZGVmaW5pZGEgcGFyYSBjbGFzZSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ8KhRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gIiVzIiAgbm8gc2UgZW5jb250csOzIGVuIGxhIGJhc2UgZGUgZGF0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnwqFObyBmdWUgcG9zaWJsZSBlbGltaW5hciBlbCBjb25maWdpdGVtIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnwqFObyBzZSBlbmNvbnRyw7MgVmVyc2nDs24gcGFyYSBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG8gQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgaGEgcHJvcG9yY2lvbmFkbyBhY2Nlc28hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ8KhTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIG5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ8KhTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIG5vIHNlIGhhbiBwcm9wb3JjaW9uYWRvIHBlcm1pc29zIGRlIGFjY2VzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ051ZXZvIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTnVldmEgdmVyc2nDs24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0FjdHVhbGl6YWRvIGVzdGFkbyBkZSBkZXNwbGllZ3VlIChudWV2bz0lcywgdmllam89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0FjdHVhbGl6YWRvIGVzdGFkbyBkZSBpbmNpZGVuY2lhIChudWV2bz0lcyx2aWVqbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgZWxpbWluYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnRW5sYWNlIGEgJXMgKHRpcG89JXMpIGHDsWFkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdFbmxhY2UgYSAlcyAodGlwbz0lcykgZWxpbWluYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdBY3R1YWxpemFkYSBkZWZpbmljacOzbiBkZSBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOb21icmUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLHZpZWpvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0cmlidXRvICVzIGFjdHVhbGl6YWRvIGRlICIlcyIgYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpw7NuICVzIGVsaW1pbmFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGhhIHByb3BvcmNpb25hZG8gQ29uZmlnSXRlbUlEIG8gVmVyc2lvbklEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfCoU5vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24sIG5vIHNlIGhhbiBwcm9wb3JjaW9uYWRvIHBlcm1pc29zIGRlIGFjY2VzbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfCoUNvbmZpZ0l0ZW1JRCAlcyBubyBzZSBlbmNvbnRyw7MgZW4gbGEgYmFzZSBkZSBkYXRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ2ltcHJlc28gcG9yICVzIGVuICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnwqFDbGFzc0lEIG5vIGVzIHbDoWxpZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYSBwcm9wb3JjaW9uYWRvIHBlcm1pc29zIGRlIGFjY2VzbyBwYXJhIGVzdGEgY2xhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfCoVNpbiByZXN1bHRhZG9zISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1Jlc3VsdGFkb3MgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfCoU5vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgZWxlbWVudG8sIG5vIHNlIGhhbiBwcm9wb3JjaW9uYWRvIHBlcm1pc29zIGRlIGFjY2VzbyBwYXJhIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ8KhQ29uZmlnSXRlbSBubyBlbmNvbnRyYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdObyBzZSBoYW4gZW5jb250cmFkbyB2ZXJzaW9uZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmFjaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2FkdmVydGVuY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGUgaW1wbGVtZW50YWNpw7NuIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdFbCBlc3RhZG8gZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1NpbiBwZXJtaXNvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfCoUZpbHRybyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXLDoW1ldHJvcyBkZSBiw7pzcXVlZGEgaW52w6FsaWRvcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1NlIG11ZXN0cmFuIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRlIGVzdGFkbyBkZSBpbXBsZW1lbnRhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnRXN0YWRvIGFjdHVhbCBkZWwgVGlwbyBkZSBpbmNpZGVudGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgY2xhc2UgcGFyYSBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWNjaW9uZSB1bmEgbyBtw6FzIGNsYXNlcyBwYXJhIHJlc3RyaW5naXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzZWxlY2Npb25hYmxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY2Npb25lcyBkZSBjbGFzZSBwYXJhIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWNjaW9uZSB1bmEgbyBtw6FzIGNsYXNlcyBwYXJhIHJlc3RyaW5naXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzZWxlY2Npb25hYmxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbsOhbWljbyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ0VzdMOhdGljYSAoVmVyc2nDs24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1RpcG8gZGUgcmVmZXJlbmNpYSBkZSBlbmxhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2kgZXN0ZSBlbmxhY2Ugc2UgYXBsaWNhIGFsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIG8gYSBsYSB2ZXJzacOzbiBlc3TDoXRpY2EgZGVsIG9iamV0byBkZSByZWZlcmVuY2lhLiBFbCBjw6FsY3VsbyBkZWwgZXN0YWRvIGFjdHVhbCBkZWwgaW5jaWRlbnRlIHPDs2xvIHNlIHJlYWxpemEgZW4gbG9zIGVubGFjZXMgZGluw6FtaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTZWxlY2Npb25lIGVsIGF0cmlidXRvIHBvciBlbCBxdWUgc2UgYnVzY2Fyw6FuIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0xhIGVzdHJ1Y3R1cmEgYmFzZSBubyBlcyB2w6FsaWRhLiBQb3IgZmF2b3IsIHByb3BvcmNpb25lIHVuIGhhc2ggY29uIGRhdG9zIGVuIGZvcm1hdG8gWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdFcyBuZWNlc2FyaW8gcXVlIGxhIGNhZGVuYSBZQU1MIGNvbWllbmNlIHBvciBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdObyBzZSBoYSBwb2RpZG8gcHVyZ2FyIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGNhbXBvcyBkaW7DoW1pY29zIHJlbGV2YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdObyBzZSBoYSBwb2RpZG8gaW5zZXJ0YXIgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcnRhZGFzIDAgZmlsYXMgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ07Dum1lcm8gbcOheGltbyBkZSB1biBlbGVtZW50byAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyc2nDs24gQ2FkZW5hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vycm9yIGFsIHNpbmNyb25pemFyIGxhcyBkZWZpbmljaW9uZXMuIFBvciBmYXZvciwgY29tcHJ1ZWJlIGVsIHJlZ2lzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1RpZW5lIGRlZmluaWNpb25lcyBkZSBJVFNNQ29uZmlnSXRlbSBxdWUgbm8gZXN0w6FuIHNpbmNyb25pemFkYXMuIERlc3BsaWVndWUgbG9zIGNhbWJpb3MgZW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIGRlIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW50ZW5pbWllbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1BydWViYSAvIENvbnRyb2wgZGUgY2FsaWRhZCc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnVmlzacOzbiBnZW5lcmFsIHkgY29uZmlybWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRhciBjbGFzZXMvcm9sZXMgeSBzdXMgY2FtcG9zIHJlbGFjaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1NlIGhhIHByb2R1Y2lkbyB1biBlcnJvciBkdXJhbnRlIGxhIGltcG9ydGFjacOzbiBkZSBsYSBjbGFzZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIE9jdWx0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gU2UgbXVlc3RyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kaWNpb25lcyBkZSBiw7pzcXVlZGEgZXh0ZW5kaWRhcyBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gY29uZGljaW9uZXMgY29tbyAiKCpjbGF2ZTEqJiYqY2xhdmUyKikiIG8gIigqY2xhdmUxKnx8KmNsYXZlMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBhbXBsaWFyIGxhcyBjb25kaWNpb25lcyBkZSBiw7pzcXVlZGEgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLiBDb24gZXN0YSBmdW5jacOzbiBwdWVkZSBidXNjYXIsIHBvciBlamVtcGxvLCBlbCBub21icmUgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBlc3RlIHRpcG8gZGUgY29uZGljaW9uZXMgY29tbyAiKCpjbGF2ZTEqJiYqY2xhdmUyKikiIG8gIigqY2xhdmUxKnx8KmNsYXZlMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnQ0lzIGFzaWduYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ2lzIGFzaWduYWRvcyBhIGxhIEVtcHJlc2EgZGVsIENsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDaXMgYXNpZ25hZG9zIGFsIHVzdWFyaW8gZGVsIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NvbmZpZ3VyYWNpb25lcyBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdCdXNxdWUgdW4gbm9tYnJlIMO6bmljbyBzb2xvIGRlbnRybyBkZSBsYSBtaXNtYSBjbGFzZSBkZSBDb25maWdJdGVtIChcJ2NsYXNlXCcpIG8gZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBsbyBxdWUgc2lnbmlmaWNhIHF1ZSBjYWRhIENvbmZpZ0l0ZW0gZXhpc3RlbnRlIHNlIHRpZW5lIGVuIGN1ZW50YSBjdWFuZG8gc2UgYnVzY2FuIGR1cGxpY2Fkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIGRlIG5vbWJyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIG51bcOpcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnRWxpamEgdW4gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW4gZXNxdWVtYSBkZSBjYWRlbmFzIGRlIHZlcnNpb25lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdFbGlqYSBhdHJpYnV0b3MgcGFyYSBhY3RpdmFyIGxhIGNyZWFjacOzbiBkZSB1bmEgbnVldmEgdmVyc2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0VsaWphIGxhcyBjYXRlZ29yw61hcyBxdWUgZGVzZWEgYXNpZ25hciBhIGVzdGEgY2xhc2UgZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgY29sdW1uYSBwYXJhIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bW5hcyBxdWUgc2UgcHVlZGVuIGZpbHRyYXIgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gTm90YTogU29sbyBzZSBwZXJtaXRlbiBhdHJpYnV0b3MgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHkgY2FtcG9zIGRpbsOhbWljb3MgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQcOxYWRpciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXRhciBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGhhYmlsaXRhIGVsIGFjY2VzbyBhIGxhIGhpc3RvcmlhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGFjdHVhbGl6YSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGEgc3UgZGVmaW5pY2nDs24gYWN0dWFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmlhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJpbWlyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0RldGFsbGV6IGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdWaXN0YSBlbiDDoXJib2wgZGUgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xvcyBDb25maWdJdGVtcyBkZSBsYXMgc2lndWllbnRlcyBjbGFzZXMgbm8gc2UgYWxtYWNlbmFyw6FuIGVuIGVsIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBlc3RvIGEgbG9zIENJcyBleGlzdGVudGVzLCBsYSBtaWdyYWNpw7NuIGRlbCBDSSB0aWVuZSBxdWUgc2VyIGVqZWN1dGFkYSBhIHRyYXbDqXMgZGUgbGEgY29uc29sYSwgZGVzcHXDqXMgZGUgY2FtYmlhciBlc3RhIG9wY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0xvcyBDb25maWdJdGVtcyBjb24gbG9zIHNpZ3VpZW50ZXMgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIG5vIHNlIGFsbWFjZW5hcsOhbiBlbiBlbCBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgZXN0byBhIGxvcyBDSXMgZXhpc3RlbnRlcywgbGEgbWlncmFjacOzbiBkZWwgQ0kgdGllbmUgcXVlIHNlciBlamVjdXRhZGEgYSB0cmF2w6lzIGRlIGxhIGNvbnNvbGEsIGRlc3B1w6lzIGRlIGNhbWJpYXIgZXN0YSBvcGNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMw61taXRlIGRlIEVsZW1lbnRvcyBkZSBDb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnTMOtbWl0ZSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwb3IgcMOhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0dlc3Rpw7NuIGRlIGxhIENvbmZpZ3VyYWNpw7NuIGRlIEJhc2VzIGRlIERhdG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdFbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZWwgbcOzZHVsbyBtYXNpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm91dGVyIGJhY2tlbmQgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcmVhIHkgZ2VzdGlvbmEgbGFzIGRlZmluaWNpb25lcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyZWEgVGlja2V0cyBwYXJhIENvbmZpZ0l0ZW1zIGVuIG1vbWVudG9zIGVzcGVjw61maWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnTG9zIGNsaWVudGVzIHB1ZWRlbiB2ZXIgbGFzIHZlcnNpb25lcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnTG9zIGNsaWVudGVzIHRpZW5lbiBsYSBwb3NpYmlsaWRhZCBkZSBjYW1iaWFyIG1hbnVhbG1lbnRlIGVudHJlIHZlcnNpb25lcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRvcyBwcmVkZXRlcm1pbmFkb3MgcXVlIHNlIHV0aWxpemFyw6FuIGVuIGVsIGF0cmlidXRvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PWHDsW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD3Dmmx0aW1vO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRvcyBwb3IgZGVmZWN0byBhIHV0aWxpemFyIGVuIGVsIGF0cmlidXRvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBjb25maWcuIEVqZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmlyIEFjY2lvbmVzIGVuIGxhcyBxdWUgdW4gYm90w7NuIGRlIGNvbmZpZ3VyYWNpw7NuIGVzdMOhIGRpc3BvbmlibGUgZW4gZWwgd2lkZ2V0IGRlIG9iamV0b3MgdmluY3VsYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBUZW5nYSBlbiBjdWVudGEgcXVlIGVzdGFzIEFjY2lvbmVzIGRlYmVuIGhhYmVyIHJlZ2lzdHJhZG8gbG9zIHNpZ3VpZW50ZXMgYXJjaGl2b3MgSlMgeSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGVzcXVlbWEgVGVtcGxhdGU6OlRvb2xraXQgcGFyYSBjYWRlbmFzIGRlIHZlcnNpw7NuLiBTw7NsbyBzZSB1dGlsaXphIHNpIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBzZSBlc3RhYmxlY2UgZW4gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGNvbmp1bnRvIGRlIGNvbmRpY2lvbmVzIGJham8gbGFzIGN1YWxlcyB1biBjbGllbnRlIHB1ZWRlIHZlciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4gTGFzIGNvbmRpY2lvbmVzIHB1ZWRlbiByZXN0cmluZ2lyc2Ugb3BjaW9uYWxtZW50ZSBhIGRldGVybWluYWRvcyBncnVwb3MgZGUgY2xpZW50ZXMuIEVsIG5vbWJyZSBlcyBlbCDDum5pY28gYXRyaWJ1dG8gb2JsaWdhdG9yaW8uIFNpIG5vIHNlIGVzcGVjaWZpY2EgbmluZ3VuYSBvdHJhIG9wY2nDs24sIHRvZG9zIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2Vyw6FuIHZpc2libGVzIGVuIGVzYSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgZWxpbWluYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIElUU00gbWVkaWFudGUgbGEgaW50ZXJmYXogZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgb2J0ZW5lciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSB1dGlsaXphbmRvIGxhIGludGVyZmF6IGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIGJ1c2NhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSB1dGlsaXphbmRvIGxhIGludGVyZmF6IGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgcmVxdWVyaWRvcyBwYXJhIGVzdGFibGVjZXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gdXRpbGl6YW5kbyBsYSBJbnRlcmZheiBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHJlc3VtZW4gcGFyYSBtb3N0cmFyIGxhIHBlcXVlw7FhIHZpc3RhIGRlIHVuYSBsaXN0YSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNpIGxhcyBldGlxdWV0YXMgZGUgdGlwbyBkZSBlbmxhY2UgZGViZW4gbW9zdHJhcnNlIGVuIGxhcyBjb25leGlvbmVzIGRlIGxvcyBub2Rvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZSBleHByZXNpb25lcyByZWd1bGFyZXMgaW5kaXZpZHVhbG1lbnRlIHBhcmEgY2FkYSBjbGFzZSBDb25maWdJdGVtIHBhcmEgdmVyaWZpY2FyIGVsIG5vbWJyZSBkZSBDb25maWdJdGVtIHkgcGFyYSBtb3N0cmFyIGxvcyBtZW5zYWplcyBkZSBlcnJvciBjb3JyZXNwb25kaWVudGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGlzcG9uaWJsZXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGZ1bmNpw7NuIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zdGFyIGRlIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuYSBtYXRyaXogZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBhdHJpYnV0byBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwcmVkZXRlcm1pbmFkbyBwYXJhIGxhIGNsYXNpZmljYWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4gQXJyaWJhOiBlbCBtw6FzIGFudGlndW8gYXJyaWJhLiBBYmFqbzogZWwgbcOhcyByZWNpZW50ZSBhcnJpYmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIHByZWRldGVybWluYWRvIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdWx0YWRvIGRlIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgZXN0YSBvcGVyYWNpw7NuLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgbW9zdHJhZGFzIHBvciBkZWZlY3RvIGRlIGxvcyBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVwZW5kaWVuZG8gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnNpc3RpciBlbiB1biBub21icmUgZGUgY2xhc2UgeSB1biBhcnJheSBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZSBsYSBwcm9mdW5kaWRhZCBkZSBsYXMgcmVsYWNpb25lcyBxdWUgc2UgbW9zdHJhcsOhbiBwb3IgZGVmZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG8gcG9yIGRlZmVjdG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gbW9zdHJhZG8gcG9yIGRlZmVjdG8gcGFyYSBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLiBFamVtcGxvOiAiQ2xhdmUiIGRlYmUgdGVuZXIgZWwgbm9tYnJlIGRlbCBDYW1wbyBEaW7DoW1pY28gZW4gZXN0ZSBjYXNvIFwnWFwnLCAiQ29udGVuaWRvIiBkZWJlIHRlbmVyIGVsIHZhbG9yIGRlbCBDYW1wbyBEaW7DoW1pY28gZGVwZW5kaWVuZG8gZGVsIHRpcG8gZGUgQ2FtcG8gRGluw6FtaWNvLCBUZXh0bzogXCdhIHRleHRcJywgRGVzcGxlZ2FibGU6IFwnMVwnLCBGZWNoYS9Ib3JhOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFNlY29uZD01OTtcJyB5IG8gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lIGVsIHN1Ym9iamV0byBwb3IgZGVmYXVsdCBkZSBsYSBjbGFzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRpc3BvbmlibGVzIGRlIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBmdW5jacOzbiBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc3RhciBkZSB1biBub21icmUgZGUgY2xhc2UgeSB1bmEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGxhIGFsdHVyYSBkZWwgY29tcG9uZW50ZSBlZGl0b3IgZGUgdGV4dG8gZW5yaXF1ZWNpZG8gcGFyYSBlc3RhIHBhbnRhbGxhLiBJbnRyb2R1emNhIHVuIG7Dum1lcm8gKHDDrXhlbGVzKSBvIHVuIHZhbG9yIHBvcmNlbnR1YWwgKHJlbGF0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG7Dum1lcm8gZGUgZmlsYXMgcGFyYSBlbCBlZGl0b3IgZGUgZGVmaW5pY2lvbmVzIGRlIENJIGVuIGxhIGludGVyZmF6IGRlIGFkbWluaXN0cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG9yZGVuIGRlIGxvcyBlc3RhZG9zIGRlIGluY2lkZW5jaWEgZGVzZGUgYWx0byAocG9yIGVqZW1wbG8sIGNyw610aWNvKSBhIGJham8gKHBvciBlamVtcGxvLCBmdW5jaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgZXN0YWRvcyBkZSBpbXBsZW1lbnRhY2nDs24gcmVsZXZhbnRlcyBkb25kZSBsb3MgdGlja2V0cyB2aW5jdWxhZG9zIHB1ZWRlbiBhZmVjdGFyIGVsIGVzdGFkbyBkZSB1biBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgbGFzIGNvbHVtbmFzIGRlIENJIG1vc3RyYWRhcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSB2w61uY3Vsb3MgcGFyYSB0b2RhcyBsYXMgY2xhc2VzIGRlIENJLiBTaSBubyBoYXkgbmluZ3VuYSBlbnRyYWRhLCBzZSBtdWVzdHJhbiBsYXMgY29sdW1uYXMgcHJlZGV0ZXJtaW5hZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIG1vc3RyYWRvcyBlbiBsYSB2aXN0YSBjb21wbGVqYSBkZSBsYSB0YWJsYSBkZSBlbmxhY2VzLCBzZWfDum4gbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGlyIHByZWNlZGlkYSBkZWwgbm9tYnJlIGRlIGxhIGNsYXNlIHkgZG9zIHB1bnRvcyBkb2JsZXMgKGVzIGRlY2lyLCBjb21wdXRhZG9yYTogOikuIEhheSBhbGd1bm9zIGF0cmlidXRvcyBkZSBDSSBxdWUgc29uIGNvbXVuZXMgYSB0b2RvcyBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0YWRvcmE6IENvbXB1dGFkb3JhIDo6IE5vbWJyZSwgQ29tcHV0YWRvcmEgOjogQ3VyRGVwbFN0YXRlLCBDb21wdXRhZG9yYSA6OiBDcmVhdGVUaW1lKS4gUGFyYSBtb3N0cmFyIGxvcyBJQy1BdHJpYnV0b3MgaW5kaXZpZHVhbGVzIGRlZmluaWRvcyBlbiBsYSBEZWZpbmljacOzbi1DSSwgc2UgZGViZSB1dGlsaXphciBlbCBzaWd1aWVudGUgZXNxdWVtYSAoZWplbXBsbyBwYXJhIGxhIGNsYXNlIENvbXB1dGFkb3JhKTogQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAxLCBDb21wdXRhZG9yYSA6OiBEaXNjbyBEdXJvIDo6IDEgOjogQ2FwYWNpZGFkIDo6IDEsIENvbXB1dGFkb3JhIDo6IERpc2NvIER1cm8gOjogMiwgQ29tcHV0YWRvcmEgOjogRGlzY28gRHVybyA6OiAyIDo6IENhcGFjaWRhZCA6OiAxLiBTaSBubyBoYXkgdW5hIGVudHJhZGEgcGFyYSB1bmEgY2xhc2UgQ0ksIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwcmVkZXRlcm1pbmFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgZWxlbWVudG9zIGVzdMOhbiBkaXNwb25pYmxlcyBwYXJhICJBY2Npw7NuIiBlbiBlbCB0ZXJjZXIgbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHByaW1lciBuaXZlbCBkZSBsYSBlc3RydWN0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSBlbGVtZW50b3MgZXN0w6FuIGRpc3BvbmlibGVzIGVuIGVsIHNlZ3VuZG8gbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSBlbmxhY2UgKG5vbWJyYWRvIGRlc2RlIGxhIHBlcnNwZWN0aXZhIGRlbCB0aWNrZXQpIHB1ZWRlIGFmZWN0YXIgZWwgZXN0YWRvIGRlIHVuIENJIHZpbmN1bGFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXXDqSB0aXBvIGRlIHRpY2tldCBwdWVkZSBhZmVjdGFyIGVsIGVzdGFkbyBkZSB1biBDSSB2aW5jdWxhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnQWN0dWFsaXphY2nDs24gZGUgbGEgZGVmaW5pY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsaW1pbmFyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ29sb3IgZGVsIGVzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0VzdGFkbyBkZSBkZXNwbGllZ3VlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBxdWUgbWFyY2EgbGFzIGRlZmluaWNpb25lcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyBubyBzaW5jcm9uaXphZGFzIHNpIGNhbWJpYW4gbG9zIGNhbXBvcyBkaW7DoW1pY29zIHF1ZSBjb250aWVuZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBxdWUgc2UgbXVlc3RyYW4gZW4gbGEgcGFudGFsbGEgZGUgY2FtcG8gSVRTTSBhZGljaW9uYWwgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgcmVzdW1lbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnUGVybWl0ZSBxdWUgbGEgY2FyYWN0ZXLDrXN0aWNhIGRlIGFjY2nDs24gbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBwYXJhIGxhIGludGVyZmF6IGRlbCBhZ2VudGUgZnVuY2lvbmUgZW4gbcOhcyBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBhIGxhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGxhIGNhcmFjdGVyw61zdGljYSBkZSBhY2Npw7NuIG1hc2l2YSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gc29sbyBwYXJhIGxvcyBncnVwb3MgZW51bWVyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWN0aXZhL2Rlc2FjdGl2YSBsYSBmdW5jaW9uYWxpZGFkIGRlIGNvbXByb2JhciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gcGFyYSBub21icmVzIMO6bmljb3MuIEFudGVzIGRlIGhhYmlsaXRhciBlc3RhIG9wY2nDs24gZGViZSBjb21wcm9iYXIgc2kgZXhpc3RlbiBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29uIG5vbWJyZXMgZHVwbGljYWRvcy4gUHVlZGUgaGFjZXJsbyBjb24gZWwgY29tYW5kbyBkZSBjb25zb2xhIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIHBhcmEgY29uZmlndXJhciBjb25maWdpdGVtLXN0YXR1cyBlbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDYW1wb3MgZGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLCB1dGlsaXphZG9zIHBhcmEgbGEgYsO6c3F1ZWRhIGRlIHRleHRvIGNvbXBsZXRvLiBMb3MgY2FtcG9zIHRhbWJpw6luIHNlIGFsbWFjZW5hbiwgcGVybyBubyBzb24gb2JsaWdhdG9yaW9zIHBhcmEgbGEgZnVuY2lvbmFsaWRhZCBnZW5lcmFsLiBMYSBpbmNsdXNpw7NuIGRlIGFuZXhvcyBwdWVkZSBkZXNhY3RpdmFyc2UgcG9uaWVuZG8gbGEgZW50cmFkYSBhIDAgbyBib3Jyw6FuZG9sYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhbG1hY2VuYWRvcyBlbiBlbCDDrW5kaWNlIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgdXRpbGl6YW4gcGFyYSBvdHJhcyBjb3NhcyBhZGVtw6FzIGRlIGxhcyBiw7pzcXVlZGFzIGRlIHRleHRvIGNvbXBsZXRvLiBQYXJhIGxhIGZ1bmNpb25hbGlkYWQgY29tcGxldGEgdG9kb3MgbG9zIGNhbXBvcyBzb24gb2JsaWdhdG9yaW9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BhcmEgY2FkYSB3ZWJzZXJ2aWNlIChjbGF2ZSkgc2UgcHVlZGUgZGVmaW5pciB1biBhcnJheSBkZSBjbGFzZXMgKHZhbG9yKSBzb2JyZSBsYXMgcXVlIHNlIHJlc3RyaW5nZSBsYSBpbXBvcnRhY2nDs24uIFBhcmEgdG9kYXMgbGFzIGNsYXNlcyBlbGVnaWRhcywgbyB0b2RhcyBsYXMgY2xhc2VzIGV4aXN0ZW50ZXMsIGxvcyBhdHJpYnV0b3MgZGUgaWRlbnRpZmljYWNpw7NuIHRlbmRyw6FuIHF1ZSBzZXIgZWxlZ2lkb3MgZW4gbGEgY29uZmlndXJhY2nDs24gZGVsIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdEZXNjcmlwY2nDs24gZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdFc3RhZG9JbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1eWUgZXN0YWRvcyBkZSBkZXNwbGllZ3VlIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGluY2lkZW5jaWFzIGVuIGxhIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTsO6bWVybyBtw6F4aW1vIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBlbCByZXN1bHRhZG8gZGUgZXN0YSBvcGVyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW5hIGNsYXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgZWwgZ3J1cG8gcmVzcG9uc2FibGUgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTcOzZHVsbyBwYXJhIGdlbmVyYXIgZXN0YWTDrXN0aWNhcyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tYnJlIE3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ03Ds2R1bG8gbnVtw6lyaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGNhZGEgcMOhZ2luYSBkZSB1biByZXN1bHRhZG8gZGUgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBkZWJlbiBtb3N0cmFyc2UgZW4gY2FkYSBww6FnaW5hIGRlIHVuIHJlc3VsdGFkbyBkZSBiw7pzcXVlZGEgZW4gbGEgaW50ZXJmYXogZGVsIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamV0b3MgYSBidXNjYXIsIGN1w6FudGFzIGVudHJhZGFzIHkgcXXDqSBhdHJpYnV0b3MgbW9zdHJhci4gTG9zIGF0cmlidXRvcyBDb25maWdJdGVtIGRlYmVuIGFsbWFjZW5hcnNlIGV4cGzDrWNpdGFtZW50ZSBhIHRyYXbDqXMgZGUgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgZ2VuZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbGFzIGNhdGVnb3LDrWFzIGRlIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbG9zIGZpbHRyb3MgZGUgY29sdW1uYSBkZSBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBwZXF1ZcOxb3MuIFBvciBmYXZvciwgdGVuZ2EgZW4gY3VlbnRhOiBlc3RhYmxlY2VyIFwnQWN0aXZvXCcgYSAwIHPDs2xvIGV2aXRhcsOhIHF1ZSBsb3MgYWdlbnRlcyBlZGl0ZW4gbG9zIGFqdXN0ZXMgZGUgZXN0ZSBncnVwbyBlbiBzdXMgcHJlZmVyZW5jaWFzIHBlcnNvbmFsZXMsIHBlcm8gc2VndWlyw6EgcGVybWl0aWVuZG8gYSBsb3MgYWRtaW5pc3RyYWRvcmVzIGVkaXRhciBsb3MgYWp1c3RlcyBlbiBub21icmUgZGUgb3RybyB1c3VhcmlvLiBVdGlsaWNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgcGFyYSBjb250cm9sYXIgZW4gcXXDqSDDoXJlYSBkZWJlbiBtb3N0cmFyc2UgZXN0b3MgYWp1c3RlcyBlbiBsYSBpbnRlcmZheiBkZSB1c3VhcmlvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTG9zIHBhcsOhbWV0cm9zIHBhcmEgbGEgaW1wbGVtZW50YWNpw7NuIGluZGljYW4gZWwgY29sb3IgZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBlc3RhZG9zIGRlIGltcGxlbWVudGFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBsb3MgcGVybWlzb3MgZGUgZWplbXBsbyBkZSBsb3MgYXRyaWJ1dG9zIGRlbCBjYXTDoWxvZ28gZ2VuZXJhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIG3Ds2R1bG8gZGUgbm9tYnJlcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIGRlbCBtw7NkdWxvIG51bcOpcmljbyBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBww6FnaW5hcyAoZG9uZGUgc2UgbXVlc3RyYW4gbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgbcOzZHVsbyBkZWwga2l0IGRlIGhlcnJhbWllbnRhcyBkZSBwbGFudGlsbGFzIGRlIGNhZGVuYXMgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBhY3RpdmFkb3IgZGUgdmVyc2nDs24gcGFyYSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdSZWFsaXphIGxhIGFjY2nDs24gY29uZmlndXJhZGEgcGFyYSBjYWRhIGV2ZW50byAoIGNvbW8gdW4gSW52b2tlcikgcGFyYSBjYWRhIHNlcnZpY2lvIFdlYiBjb25maWd1cmFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBvIGRlIHBlcm1pc29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIGFjY2nDs24gZGUgYWRqdW50YXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1c2FyIGxhIHZlbnRhbmEgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1c2FyIGxhIHZlbnRhbmEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgdmlzdGEgZGUgw6FyYm9sIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1c2FyIGxhIHZlbnRhbmEgZGUgZGV0YWxsZSBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBwYXJhIGFncmVnYXIgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBtYXNpdmEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHVzYXIgbGEgdmVudGFuYSBkZSBlZGljacOzbiBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1c2FyIGxhIHZlbnRhbmEgZGUgaGlzdG9yaWFsIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1c2FyIGxhIHZlbnRhbmEgZGUgaW1wcmVzacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbGVnaW9zIG5lY2VzYXJpb3MgcGFyYSBlbGltaW5hciBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ0J1c2NhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdFc3RhYmxlemNhIGVsIGVzdGFkbyBkZSBpbmNpZGVudGUgZGUgdW4gQ0kgYXV0b23DoXRpY2FtZW50ZSBjdWFuZG8gdW4gdGlja2V0IGVzdMOpIHZpbmN1bGFkbyBhIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGUgaW1wbGVtZW50YWNpw7NuIGVuIGxhIHBhbnRhbGxhIG1hc2l2YSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFc3RhYmxlY2UgZWwgZXN0YWRvIGRlbCBpbmNpZGVudGUgZW4gbGEgcGFudGFsbGEgbWFzaXZhIGRlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgdmluY3VsYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gY29uIG90cm8gb2JqZXRvLCBlbiBsYSB2aXN0YSBkZXRhbGxhZGEgZGUgZGljaG8gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFjY2VkZXIgYWwgaGlzdG9yaWFsIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhIGxhIGhpc3RvcmlhIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpb24gZW4gc3UgdmlzdGEgZGV0YWxsYWRhLCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWxpbWluYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gc3UgdmlzdGEgYW1wbGlhZGEgZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSB2aXN1YWxpemFyIGxvcyBlbmxhY2VzIGRlIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gY29tbyB1bmEgdmlzdGEgZW4gw6FyYm9sLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgZGVzY3JpcGNpw7NuIGdlbmVyYWwgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBsaW5rIGVuIGVsIG1lbsO6IHBhcmEgZHVwbGljYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGxpbmsgZW4gZWwgbWVuw7ogcGFyYSBlZGl0YXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2lvbiBlbiBzdSB2aXN0YSBkZXRhbGxhZGEsIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZvbHZlciBhIGxhIHZpc3RhIGRlIHpvb20gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gbGluayBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpb24gZW4gc3UgdmlzdGEgZGV0YWxsYWRhLCBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNlcmNhcnNlIGEgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSBsYSBoaXN0b3JpYSBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIChvcmRlbmFkb3MgaW52ZXJzYW1lbnRlKSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXRlZ29yw61hIHBvciBkZWZlY3RvIHF1ZSBzZSBtdWVzdHJhLCBzaSBubyBzZSBzZWxlY2Npb25hIG5pbmd1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdFbCBpZGVudGlmaWNhZG9yIGRlIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLCBwb3IgZWplbXBsby4gQ29uZmlnSXRlbSAjLCBNeUNvbmZpZ0l0ZW0gIy4gRWwgdmFsb3IgcG9yIGRlZmVjdG8gZXMgQ29uZmlnSXRlbSAjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQWN0aXZhIGF1dG9tw6F0aWNhbWVudGUgZWwgaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc2nDs24gZGUgY2FkZW5hIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ03Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+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+eydIZWFkc2V0J30gPSAnQXVyaWN1bGFyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbG8gSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGnDs24gZGUgaWRlbnRpZGFkZXMgeSBhY2Nlc29zIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIGludmVudGFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDb3N0ZXMgZGUgaW52ZXJzacOzbic7CiAgICAkU2VsZi0+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+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGRhdG9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY2Npb25lIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdDb3JyZXIgYsO6c3F1ZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ8K/VGFtYmnDqW4gYnVzY2FyIGVuIHZlcnNpb25lcyBhbnRlcmlvcmVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBhcmEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsIGRlIHByb2Z1bmRpZGFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQWNlcmNhci9BbGVqYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnwqFOaXZlbCBtw6F4aW1vIGRlIGVubGFjZXMgYWxjYW56YWRvIHBhcmEgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hY2nDs24gZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBhY3R1YWwgZGVsIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkZWwgSW5jaWRlbnRlIEFjdHVhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfDmmx0aW1vIGNhbWJpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdNb2RpZmljYWRvIHBvciDDumx0aW1hIHZleiBwb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTdXMgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0LDunNxdWVkYSBDb25maWdJdGVtJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnU2UgaW1wb3J0YXLDoW4gbGFzIHNpZ3VpZW50ZXMgY2xhc2VzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1NlIGltcG9ydGFyw6FuIGxhcyBzaWd1aWVudGVzIGZ1bmNpb25lcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdUZW5nYSBlbiBjdWVudGEgcXVlIHRhbWJpw6luIHNlIGNyZWFyw6FuIGxvcyBjYW1wb3MgZGluw6FtaWNvcyB5IGxhcyBjbGFzZXMgR2VuZXJhbENhdGFsb2cgY29ycmVzcG9uZGllbnRlcyB5IHF1ZSBubyBzZSBlbGltaW5hcsOhbiBhdXRvbcOhdGljYW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ8K/UXVpZXJlcyBjb250aW51YXI/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ8KhTmVjZXNpdGEgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0xhIGRlZmluaWNpw7NuIG5vIGVzIHVuIGhhc2ggWUFNTCB2w6FsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Jlc3VtZW46IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIGRhIG5pbmfDum4gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ8KhTmVjZXNpdGEgYWwgbWVub3MgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gc2VsZWNjaW9uYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05vIHRpZW5lIGFjY2VzbyBkZSBlc2NyaXR1cmEgYSBlc3RlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnwqFObyBzZSBoYSBkZWZpbmlkbyBsYSBjbGFzZSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ8KhRWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gIiVzIiBubyBzZSBlbmN1ZW50cmEgZW4gbGEgYmFzZSBkZSBkYXRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfCoU5vIHNlIGhhIHBvZGlkbyBib3JyYXIgZWwgY29uZmlnaXRlbSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ8KhTm8gc2UgaGEgZW5jb250cmFkbyBuaW5ndW5hIHZlcnNpw7NuIHBhcmEgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIHRpZW5lIG5pbmfDum4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIHRpZW5lIGFjY2VzbyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTm8gc2UgcHVlZGUgbW9zdHJhciBlbCBoaXN0b3JpYWwsIMKhbm8gc2UgdGllbmUgZWwgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05vIHNlIHB1ZWRlIG1vc3RyYXIgZWwgaGlzdG9yaWFsLCDCoW5vIHNlIHRpZW5lbiBkZXJlY2hvcyBkZSBhY2Nlc28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOdWV2byBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOdWV2YSB2ZXJzacOzbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUgYWN0dWFsaXphZG8gKG51ZXZvPSVzLCBhbnRpZ3VvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGVsIGluY2lkZW50ZSBhY3R1YWxpemFkbyAobnVldm89JXMsIGFudGlndW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGJvcnJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdFbmxhY2UgYSAlcyAoIHRpcG89JXMpIGHDsWFkaWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdFbmxhY2UgYSAlcyAoIHRpcG89JXMpIGJvcnJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0RlZmluaWNpw7NuIGRlIENvbmZpZ0l0ZW0gYWN0dWFsaXphZGEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWJyZSBhY3R1YWxpemFkbyAobnVldm89JXMsIGFudGlndW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dG8gJXMgYWN0dWFsaXphZG8gZGUgIiVzIiBhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2nDs24gJXMgYm9ycmFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfCoU5vIHNlIHRpZW5lIG5pbmfDum4gQ29uZmlnSXRlbUlEIG8gVmVyc2lvbklEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLCDCoW5vIHNlIHRpZW5lbiBkZXJlY2hvcyBkZSBhY2Nlc28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnwqFDb25maWdJdGVtSUQgJXMgbm8gc2UgZW5jdWVudHJhIGVuIGxhIGJhc2UgZGUgZGF0b3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdpbXByZXNvIHBvciAlcyBlbiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNpYSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ8KhQ2xhc3NJRCBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnwqFObyBzZSB0aWVuZSBuaW5nw7puIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnwqFObyBzZSBoYW4gY29uY2VkaWRvIGRlcmVjaG9zIGRlIGFjY2VzbyBwYXJhIGVzdGEgY2xhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfCoU5vIGhheSByZXN1bHRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmVzdWx0YWRvcyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdObyBzZSBwdWVkZSBtb3N0cmFyIGVsIGVsZW1lbnRvLCDCoW5vIHNlIHRpZW5lbiBkZXJlY2hvcyBkZSBhY2Nlc28gcGFyYSBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICfCoUNvbmZpZ0l0ZW0gbm8gZW5jb250cmFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTm8gc2UgaGFuIGVuY29udHJhZG8gdmVyc2lvbmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhY2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdhZHZlcnRlbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRWwgZXN0YWRvIGRlIGRlc3BsaWVndWUgZGUgZXN0ZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0VsIGVzdGFkbyBkZWwgaW5jaWRlbnRlIGRlIGVzdGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdTaW4gcGVybWlzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICfCoUZpbHRybyBpbnbDoWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXLDoW1ldHJvcyBkZSBiw7pzcXVlZGEgaW52w6FsaWRvcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0VsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwbyBkZSBFc3RhZG8gZGUgRGVzcGxpZWd1ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGFjdHVhbCBkZWwgZXN0YWRvIGRlbCBpbmNpZGVudGUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnRW50cmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaWNjaW9uZXMgZGUgY2xhc2UgcGFyYSBlbCBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWNjaW9uZSB1bmEgbyBtw6FzIGNsYXNlcyBwYXJhIHJlc3RyaW5naXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzZWxlY2Npb25hYmxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY2Npb25lcyBkZSBjbGFzZSBwYXJhIGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWNjaW9uZSB1bmEgbyBtw6FzIGNsYXNlcyBwYXJhIHJlc3RyaW5naXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBzZWxlY2Npb25hYmxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbsOhbWljbyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ0VzdMOhdGljYSAoVmVyc2nDs24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1RpcG8gZGUgcmVmZXJlbmNpYSBkZSBlbmxhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnU2kgZXN0ZSBlbmxhY2Ugc2UgYXBsaWNhIGFsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIG8gYSBsYSB2ZXJzacOzbiBlc3TDoXRpY2EgZGVsIG9iamV0byBkZSByZWZlcmVuY2lhLiBFbCBjw6FsY3VsbyBkZWwgZXN0YWRvIGFjdHVhbCBkZWwgaW5jaWRlbnRlIHPDs2xvIHNlIHJlYWxpemEgZW4gbG9zIGVubGFjZXMgZGluw6FtaWNvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdTZWxlY2Npb25lIGVsIGF0cmlidXRvIHBvciBlbCBxdWUgc2UgYnVzY2Fyw6FuIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0xhIGVzdHJ1Y3R1cmEgYmFzZSBubyBlcyB2w6FsaWRhLiBQb3IgZmF2b3IsIHByb3BvcmNpb25lIHVuIGhhc2ggY29uIGRhdG9zIGVuIGZvcm1hdG8gWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdFcyBuZWNlc2FyaW8gcXVlIGxhIGNhZGVuYSBZQU1MIGNvbWllbmNlIHBvciBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdObyBzZSBoYSBwb2RpZG8gcHVyZ2FyIGxhIHRhYmxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ05vIHNlIGhhbiBlbmNvbnRyYWRvIGNhbXBvcyBkaW7DoW1pY29zIHJlbGV2YW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdObyBzZSBoYSBwb2RpZG8gaW5zZXJ0YXIgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcnRhZGFzIDAgZmlsYXMgZW4gbGEgdGFibGEgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ07Dum1lcm8gbcOheGltbyBkZSB1biBlbGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzacOzbiBDYWRlbmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3IgYWwgc2luY3Jvbml6YXIgbGFzIGRlZmluaWNpb25lcy4gUG9yIGZhdm9yLCBjb21wcnVlYmUgZWwgcmVnaXN0cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGllbmUgZGVmaW5pY2lvbmVzIGRlIElUU01Db25maWdJdGVtIHF1ZSBubyBlc3TDoW4gc2luY3Jvbml6YWRhcy4gRGVzcGxpZWd1ZSBsb3MgY2FtYmlvcyBlbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgZGUgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbmltaWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1BsYW5pZmljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFyYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1JldmlzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnUHJ1ZWJhL0NvbnRyb2wgZGUgY2FsaWRhZCc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnVmlzacOzbiBnZW5lcmFsIHkgY29uZmlybWFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRhciBjbGFzZXMvcm9sZXMgeSBzdXMgY2FtcG9zIHJlbGFjaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1NlIGhhIHByb2R1Y2lkbyB1biBlcnJvciBkdXJhbnRlIGxhIGltcG9ydGFjacOzbiBkZSBsYSBjbGFzZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIE9jdWx0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gU2UgbXVlc3RyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kaWNpb25lcyBkZSBiw7pzcXVlZGEgZXh0ZW5kaWRhcyBlbiBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuIENvbiBlc3RhIGZ1bmNpw7NuIHB1ZWRlIGJ1c2NhciwgcG9yIGVqZW1wbG8sIGVsIG5vbWJyZSBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBjb24gY29uZGljaW9uZXMgY29tbyAiKCpjbGF2ZTEqJiYqY2xhdmUyKikiIG8gIigqY2xhdmUxKnx8KmNsYXZlMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBhbXBsaWFyIGxhcyBjb25kaWNpb25lcyBkZSBiw7pzcXVlZGEgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLiBDb24gZXN0YSBmdW5jacOzbiBwdWVkZSBidXNjYXIsIHBvciBlamVtcGxvLCBlbCBub21icmUgZGVsIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBlc3RlIHRpcG8gZGUgY29uZGljaW9uZXMgY29tbyAiKCpjbGF2ZTEqJiYqY2xhdmUyKikiIG8gIigqY2xhdmUxKnx8KmNsYXZlMiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnQ0lzIGFzaWduYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0lzIGFzaWduYWRvcyBhIGxhIGVtcHJlc2EgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJcyBhc2lnbmFkb3MgYWwgdXN1YXJpbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdDb25maWd1cmFjacOzbiBkZSBsYSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdCdXNjYSB1biBub21icmUgw7puaWNvIHPDs2xvIGRlbnRybyBkZSBsYSBtaXNtYSBjbGFzZSBkZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG8gZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBsbyBxdWUgc2lnbmlmaWNhIHF1ZSBjYWRhIENvbmZpZ0l0ZW0gZXhpc3RlbnRlIHNlIHRpZW5lIGVuIGN1ZW50YSBhbCBidXNjYXIgZHVwbGljYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgZGUgbm9tYnJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0VsaWphIHVuIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVuIGVzcXVlbWEgbnVtw6lyaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdFbGlqYSB1biBtw7NkdWxvIHBhcmEgYXBsaWNhciB1biBlc3F1ZW1hIGRlIGNhZGVuYXMgZGUgdmVyc2lvbmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0VsaWphIGF0cmlidXRvcyBwYXJhIGFjdGl2YXIgbGEgY3JlYWNpw7NuIGRlIHVuYSBudWV2YSB2ZXJzacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnRWxpamEgbGFzIGNhdGVnb3LDrWFzIHF1ZSBkZXNlYSBhc2lnbmFyIGEgZXN0YSBjbGFzZSBkZSBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cm9zIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBjb2x1bW5hIHBhcmEgQ29uZmlnSXRlbSBPdmVydmlldy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbHVtbmFzIHF1ZSBzZSBwdWVkZW4gZmlsdHJhciBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBOb3RhOiBTb2xvIHNlIHBlcm1pdGVuIGF0cmlidXRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24geSBjYW1wb3MgZGluw6FtaWNvcyAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnRWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBw7FhZGlyIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaWNpw7NuIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIHBlcm1pdGUgZWwgcmVnaXN0cm8gZW4gZWwgaGlzdG9yaWFsIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcXVlIGFjdHVhbGl6YSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGEgc3UgZGVmaW5pY2nDs24gYWN0dWFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmlhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NvbmZpZ3VyYXIgZWxlbWVudG8gaW1wcmVzb3JhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYXIgZWwgem9vbSBkZWwgZWxlbWVudG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdGEgZW4gw6FyYm9sIGRlIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBWZXJzacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMb3MgQ29uZmlnSXRlbXMgZGUgbGFzIHNpZ3VpZW50ZXMgY2xhc2VzIG5vIHNlIGFsbWFjZW5hcsOhbiBlbiBlbCBzZXJ2aWRvciBFbGFzdGljc2VhcmNoLiBQYXJhIGFwbGljYXIgZXN0byBhIGxvcyBDSXMgZXhpc3RlbnRlcywgbGEgbWlncmFjacOzbiBkZWwgQ0kgdGllbmUgcXVlIHNlciBlamVjdXRhZGEgYSB0cmF2w6lzIGRlIGxhIGNvbnNvbGEsIGRlc3B1w6lzIGRlIGNhbWJpYXIgZXN0YSBvcGNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMb3MgQ29uZmlnSXRlbXMgY29uIGxvcyBzaWd1aWVudGVzIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSBubyBzZSBhbG1hY2VuYXLDoW4gZW4gZWwgc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGVzdG8gYSBsb3MgQ0lzIGV4aXN0ZW50ZXMsIGxhIG1pZ3JhY2nDs24gZGVsIENJIHRpZW5lIHF1ZSBzZXIgZWplY3V0YWRhIGEgdHJhdsOpcyBkZSBsYSBjb25zb2xhLCBkZXNwdcOpcyBkZSBjYW1iaWFyIGVzdGEgb3BjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQ29uZmlndXJhY2nDs24gTMOtbWl0ZSBkZSBlbGVtZW50b3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYWNpw7NuIEzDrW1pdGUgZGUgZWxlbWVudG9zIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzZSBkZSBkYXRvcyBkZSBnZXN0acOzbiBkZSBsYSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgY29uZmlndXJhY2nDs24gZGUgZWxlbWVudG9zIGluZGl2aWR1YWxlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcXVlIGJ1c2NhIGVsIGVucnV0YW1pZW50byBiYWNrZW5kIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWFyIHkgZ2VzdGlvbmFyIGxhcyBkZWZpbmljaW9uZXMgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDb24gZXN0YSBvcGNpw7NuIGVzIHBvc2libGUgcmVsbGVuYXIgYXV0b23DoXRpY2FtZW50ZSB1biBjYW1wbyBDSSwgZGVwZW5kaWVuZG8gZGVsIHJlY3VlbnRvIGRlIENJIHZpbmN1bGFkb3MgY29uIGVsIHRpcG8gZXhpc3RlbnRlIERlcGVuZHNPbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnTG9zIGNsaWVudGVzIHB1ZWRlbiB2ZXIgbGFzIHZlcnNpb25lcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnTG9zIGNsaWVudGVzIHRpZW5lbiBsYSBwb3NpYmlsaWRhZCBkZSBjYW1iaWFyIG1hbnVhbG1lbnRlIGVudHJlIHZlcnNpb25lcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRvcyBwcmVkZXRlcm1pbmFkb3MgcXVlIHNlIHV0aWxpemFyw6FuIGVuIGVsIGF0cmlidXRvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4gRWplbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PWHDsW87SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD3Dmmx0aW1vO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEYXRvcyBwb3IgZGVmZWN0byBhIHV0aWxpemFyIGVuIGVsIGF0cmlidXRvIHBhcmEgbGEgcGFudGFsbGEgZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBjb25maWcuIEVqZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmlyIGFjY2lvbmVzIGVuIGxhcyBxdWUgdW4gYm90w7NuIGRlIGNvbmZpZ3VyYWNpw7NuIGVzdMOhIGRpc3BvbmlibGUgZW4gZWwgd2lkZ2V0IGRlIG9iamV0b3MgdmluY3VsYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBUZW5nYSBlbiBjdWVudGEgcXVlIGVzdGFzIGFjY2lvbmVzIGRlYmVuIGhhYmVyIHJlZ2lzdHJhZG8gbG9zIHNpZ3VpZW50ZXMgYXJjaGl2b3MgSlMgeSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIHkgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGVzcXVlbWEgVGVtcGxhdGU6OlRvb2xraXQgcGFyYSBjYWRlbmFzIGRlIHZlcnNpw7NuLiBTw7NsbyBzZSB1dGlsaXphIHNpIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBzZSBlc3RhYmxlY2UgZW4gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVuIGNvbmp1bnRvIGRlIGNvbmRpY2lvbmVzIGJham8gbGFzIGN1YWxlcyB1biBjbGllbnRlIHB1ZWRlIHZlciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4gTGFzIGNvbmRpY2lvbmVzIHB1ZWRlbiByZXN0cmluZ2lyc2Ugb3BjaW9uYWxtZW50ZSBhIGRldGVybWluYWRvcyBncnVwb3MgZGUgY2xpZW50ZXMuIEVsIG5vbWJyZSBlcyBlbCDDum5pY28gYXRyaWJ1dG8gb2JsaWdhdG9yaW8uIFNpIG5vIHNlIGluZGljYW4gb3RyYXMgb3BjaW9uZXMsIHRvZG9zIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc2Vyw6FuIHZpc2libGVzIGVuIGVzYSBjYXRlZ29yw61hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgZWxpbWluYXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIG1lZGlhbnRlIGxhIGludGVyZmF6IGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsb3MgcGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIG9idGVuZXIgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIHV0aWxpemFuZG8gbGEgSW50ZXJmYXogR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBwZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgYnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIHV0aWxpemFuZG8gbGEgSW50ZXJmYXogR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnVmVyc2nDs24gQ2FkZW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1biBtw7NkdWxvIGRlIHJlc3VtZW4gcGFyYSBtb3N0cmFyIGxhIHZpc3RhIHBlcXVlw7FhIGRlIHVuYSBsaXN0YSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmluZSBzaSBsYXMgZXRpcXVldGFzIGRlIHRpcG8gZGUgZW5sYWNlIGRlYmVuIG1vc3RyYXJzZSBlbiBsYXMgY29uZXhpb25lcyBkZSBsb3Mgbm9kb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEZWZpbmUgZXhwcmVzaW9uZXMgcmVndWxhcmVzIGluZGl2aWR1YWxtZW50ZSBwYXJhIGNhZGEgY2xhc2UgQ29uZmlnSXRlbSBwYXJhIGNvbXByb2JhciBlbCBub21icmUgZGUgQ29uZmlnSXRlbSB5IG1vc3RyYXIgbG9zIG1lbnNhamVzIGRlIGVycm9yIGNvcnJlc3BvbmRpZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBkaXNwb25pYmxlcyBkZSBDSXMgZW4gbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gZnVuY2nDs24gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGNvbnNpc3RpciBlbiB1biBub21icmUgZGUgY2xhc2UgeSB1biBhcnJheSBkZSBjYW1wb3MgZGlzcG9uaWJsZXMgcGFyYSBsYSBjbGFzZSBjb3JyZXNwb25kaWVudGUuIExhcyBlbnRyYWRhcyBkZSBjYW1wb3MgZGluw6FtaWNvcyBkZWJlbiByZXNwZXRhciBlbCBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gcHJlZGV0ZXJtaW5hZG8gcGFyYSBsYSBjbGFzaWZpY2FjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGF0cmlidXRvIGRlIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIHByZWRldGVybWluYWRvIHBhcmEgbGEgY2xhc2lmaWNhY2nDs24gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLiBBcnJpYmE6IGVsIG3DoXMgYW50aWd1byBhcnJpYmEuIEFiYWpvOiBlbCBtw6FzIHJlY2llbnRlIGFycmliYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBvcmRlbiBwcmVkZXRlcm1pbmFkbyBkZSBsb3MgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGVsIHJlc3VsdGFkbyBkZSBsYSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlIGNsaWVudGUuIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gcHJlZGV0ZXJtaW5hZG8gZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bHRhZG8gZGUgbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBlc3RhIG9wZXJhY2nDs24uIEFycmliYTogZWwgbcOhcyBhbnRpZ3VvIGFycmliYS4gQWJham86IGVsIG3DoXMgcmVjaWVudGUgYXJyaWJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGxhcyBjb2x1bW5hcyBtb3N0cmFkYXMgcG9yIGRlZmVjdG8gZGUgbG9zIENJcyBlbiBsYSB2aXN0YSBnZW5lcmFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZXBlbmRpZW5kbyBkZSBsYSBjbGFzZSBkZSBDSS4gQ2FkYSBlbnRyYWRhIGRlYmUgY29uc2lzdGlyIGVuIHVuIG5vbWJyZSBkZSBjbGFzZSB5IHVuIGFycmF5IGRlIGNhbXBvcyBkaXNwb25pYmxlcyBwYXJhIGxhIGNsYXNlIGNvcnJlc3BvbmRpZW50ZS4gTGFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7DoW1pY29zIGRlYmVuIHJlc3BldGFyIGVsIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lIGxhIHByb2Z1bmRpZGFkIGRlIGxhcyByZWxhY2lvbmVzIHF1ZSBzZSBtb3N0cmFyw6FuIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmUgZWwgYXRyaWJ1dG8gZGUgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBtb3N0cmFkbyBwb3IgZGVmZWN0byBwYXJhIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uIEVqZW1wbG86ICJDbGF2ZSIgZGViZSB0ZW5lciBlbCBub21icmUgZGVsIENhbXBvIERpbsOhbWljbyBlbiBlc3RlIGNhc28gXCdYXCcsICJDb250ZW5pZG8iIGRlYmUgdGVuZXIgZWwgdmFsb3IgZGVsIENhbXBvIERpbsOhbWljbyBkZXBlbmRpZW5kbyBkZWwgdGlwbyBkZSBDYW1wbyBEaW7DoW1pY28sIFRleHRvOiBcJ2EgdGV4dFwnLCBEZXNwbGVnYWJsZTogXCcxXCcsIEZlY2hhL0hvcmE6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U2Vjb25kPTU5O1wnIHkgbyBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmUgZWwgc3Vib2JqZXRvIHBvciBkZWZlY3RvIGRlIGxhIGNsYXNlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgZGlzcG9uaWJsZXMgZGUgQ0lzIGVuIGxhIHZpc3RhIGdlbmVyYWwgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGZ1bmNpw7NuIGRlIGxhIGNsYXNlIGRlIENJLiBDYWRhIGVudHJhZGEgZGViZSBjb25zaXN0aXIgZW4gdW4gbm9tYnJlIGRlIGNsYXNlIHkgdW4gYXJyYXkgZGUgY2FtcG9zIGRpc3BvbmlibGVzIHBhcmEgbGEgY2xhc2UgY29ycmVzcG9uZGllbnRlLiBMYXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOhbWljb3MgZGViZW4gcmVzcGV0YXIgZWwgZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgbGEgYWx0dXJhIGRlbCBjb21wb25lbnRlIGRlbCBlZGl0b3IgZGUgdGV4dG8gZW5yaXF1ZWNpZG8gcGFyYSBlc3RhIHBhbnRhbGxhLiBJbnRyb2R1emNhIHVuIG7Dum1lcm8gKHDDrXhlbGVzKSBvIHVuIHZhbG9yIHBvcmNlbnR1YWwgKHJlbGF0aXZvKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGVsIG7Dum1lcm8gZGUgZmlsYXMgZGVsIGVkaXRvciBkZSBkZWZpbmljaW9uZXMgQ0kgZW4gbGEgaW50ZXJmYXogZGUgYWRtaW5pc3RyYWNpw7NuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmUgZWwgb3JkZW4gZGUgbG9zIGVzdGFkb3MgZGUgaW5jaWRlbmNpYSBkZSBhbHRvIChwb3IgZWplbXBsbywgY3LDrXRpY28pIGEgYmFqbyAocG9yIGVqZW1wbG8sIGZ1bmNpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5lIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgcmVsZXZhbnRlcyBlbiBsb3MgcXVlIGxvcyB0aWNrZXRzIHZpbmN1bGFkb3MgcHVlZGVuIGFmZWN0YXIgYWwgZXN0YWRvIGRlIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIGVsIGzDrW1pdGUgZGUgYsO6c3F1ZWRhIHBhcmEgbGEgcGFudGFsbGEgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgZWwgbMOtbWl0ZSBkZSBiw7pzcXVlZGEgcGFyYSBsYSBwYW50YWxsYSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBlbCBsw61taXRlIGRlIGLDunNxdWVkYSBwYXJhIGxhIHBhbnRhbGxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgbW9zdHJhZGFzIGRlIGxvcyBDSXMgZW4gbGEgdmlzdGEgY29tcGxlamEgZGUgbGEgdGFibGEgZGUgZW5sYWNlcyBwYXJhIHRvZGFzIGxhcyBjbGFzZXMgZGUgQ0kuIFNpIG5vIGhheSBuaW5ndW5hIGVudHJhZGEsIHNlIG11ZXN0cmFuIGxhcyBjb2x1bW5hcyBwb3IgZGVmZWN0by4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBsYXMgY29sdW1uYXMgbW9zdHJhZGFzIGRlIGxvcyBDSXMgZW4gbGEgdmlzdGEgY29tcGxlamEgZGUgbGEgdGFibGEgZGUgZW5sYWNlcywgZGVwZW5kaWVuZG8gZGUgbGEgY2xhc2UgZGUgQ0kuIENhZGEgZW50cmFkYSBkZWJlIGxsZXZhciBjb21vIHByZWZpam8gZWwgbm9tYnJlIGRlIGxhIGNsYXNlIHkgZG9zIHB1bnRvcyBkb2JsZXMgKHBvciBlamVtcGxvLCBDb21wdXRlcjo6KS4gSGF5IGFsZ3Vub3MgYXRyaWJ1dG9zIENJIHF1ZSBzb24gY29tdW5lcyBhIHRvZG9zIGxvcyBDSXMgKGVqZW1wbG8gcGFyYSBsYSBjbGFzZSBDb21wdXRhZG9yOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBQYXJhIG1vc3RyYXIgbG9zIEF0cmlidXRvcy1DaSBpbmRpdmlkdWFsZXMgY29tbyBzZSBkZWZpbmVuIGVuIGxhIERlZmluaWNpw7NuLUNpLCBzZSBkZWJlIHV0aWxpemFyIGVsIHNpZ3VpZW50ZSBlc3F1ZW1hIChlamVtcGxvIHBhcmEgbGEgY2xhc2UgQ29tcHV0YWRvcik6IE9yZGVuYWRvcjo6RGlzY29EdXJvOjoxLCBDb21wdXRhZG9yOjpEaXNjb0R1cm86OjE6OkNhcGFjaWRhZDo6MSwgQ29tcHV0YWRvcjo6RGlzY29EdXJvOjoyLCBDb21wdXRhZG9yOjpEaXNjb0R1cm86OjI6OkNhcGFjaWRhZDo6MS4gU2kgbm8gaGF5IG5pbmd1bmEgZW50cmFkYSBwYXJhIHVuYSBjbGFzZSBDSSwgc2UgbXVlc3RyYW4gbGFzIGNvbHVtbmFzIHBvciBkZWZlY3RvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIGVsZW1lbnRvcyBlc3TDoW4gZGlzcG9uaWJsZXMgcGFyYSAiQWNjacOzbiIgZW4gZWwgdGVyY2VyIG5pdmVsIGRlIGxhIGVzdHJ1Y3R1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgZWxlbWVudG9zIGVzdMOhbiBkaXNwb25pYmxlcyBlbiBlbCBwcmltZXIgbml2ZWwgZGUgbGEgZXN0cnVjdHVyYSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgZWxlbWVudG9zIGVzdMOhbiBkaXNwb25pYmxlcyBlbiBlbCBzZWd1bmRvIG5pdmVsIGRlIGxhIGVzdHJ1Y3R1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdcOpIHRpcG8gZGUgZW5sYWNlIChub21icmFkbyBkZXNkZSBsYSBwZXJzcGVjdGl2YSBkZWwgdGlja2V0KSBwdWVkZSBhZmVjdGFyIGFsIGVzdGFkbyBkZSB1biBDSSB2aW5jdWxhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1w6kgdGlwbyBkZSB0aWNrZXQgcHVlZGUgYWZlY3RhciBhbCBlc3RhZG8gZGUgdW4gQ0kgdmluY3VsYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FjdHVhbGl6YWNpw7NuIGRlIGxhIGRlZmluaWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdCb3JyYXIgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb2xvciBkZWwgRXN0YWRvIGRlIERlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRlIGRlc3BsaWVndWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIGRlIGNhbXBvcyBkaW7DoW1pY29zIHF1ZSBtYXJjYSBsYXMgZGVmaW5pY2lvbmVzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBjb21vIG5vIHNpbmNyb25pemFkYXMgc2kgY2FtYmlhbiBsb3MgY2FtcG9zIGRpbsOhbWljb3MgcXVlIGNvbnRpZW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7DoW1pY29zIG1vc3RyYWRvcyBlbiBsYSBwYW50YWxsYSBkZSBjYW1wb3MgYWRpY2lvbmFsZXMgSVRTTSBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6FtaWNvcyBtb3N0cmFkb3MgZW4gbGEgcGFudGFsbGEgZGUgcmVzdW1lbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOhbWljb3MgbW9zdHJhZG9zIGVuIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWN0aXZhIGxhIGZ1bmNpw7NuIGRlIGFjY2nDs24gbWFzaXZhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBwYXJhIHF1ZSBlbCBmcm9udGVuZCBkZWwgYWdlbnRlIHRyYWJhamUgZW4gbcOhcyBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBhIGxhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FjdGl2YSBsYSBmdW5jacOzbiBkZSBhY2Npw7NuIG1hc2l2YSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gc8OzbG8gcGFyYSBsb3MgZ3J1cG9zIGRlIGxhIGxpc3RhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBY3RpdmEvZGVzYWN0aXZhIGxhIGZ1bmNpb25hbGlkYWQgZGUgY29tcHJvYmFyIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBwYXJhIG5vbWJyZXMgw7puaWNvcy4gQW50ZXMgZGUgaGFiaWxpdGFyIGVzdGEgb3BjacOzbiBkZWJlIGNvbXByb2JhciBzaSBleGlzdGVuIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBjb24gbm9tYnJlcyBkdXBsaWNhZG9zLiBQdWVkZSBoYWNlcmxvIGNvbiBlbCBjb21hbmRvIGRlIGNvbnNvbGEgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50b3MgcGFyYSBlc3RhYmxlY2VyIGVsIGVzdGFkbyBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gZWwgdGlja2V0LWNvbmZpZ2l0ZW0tZW5sYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDYW1wb3MgZGVsIMOtbmRpY2UgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuLCB1dGlsaXphZG9zIHBhcmEgbGEgYsO6c3F1ZWRhIGRlIHRleHRvIGNvbXBsZXRvLiBMb3MgY2FtcG9zIHRhbWJpw6luIHNlIGFsbWFjZW5hbiwgcGVybyBubyBzb24gb2JsaWdhdG9yaW9zIHBhcmEgbGEgZnVuY2lvbmFsaWRhZCBnZW5lcmFsLiBMYSBpbmNsdXNpw7NuIGRlIGFuZXhvcyBwdWVkZSBkZXNhY3RpdmFyc2UgcG9uaWVuZG8gbGEgZW50cmFkYSBhIDAgbyBib3Jyw6FuZG9sYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhbG1hY2VuYWRvcyBlbiBlbCDDrW5kaWNlIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgdXRpbGl6YW4gcGFyYSBvdHJhcyBjb3NhcyBhZGVtw6FzIGRlIGxhcyBiw7pzcXVlZGFzIGRlIHRleHRvIGNvbXBsZXRvLiBQYXJhIGxhIGZ1bmNpb25hbGlkYWQgY29tcGxldGEgdG9kb3MgbG9zIGNhbXBvcyBzb24gb2JsaWdhdG9yaW9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BhcmEgY2FkYSB3ZWJzZXJ2aWNlIChjbGF2ZSkgc2UgcHVlZGUgZGVmaW5pciB1biBhcnJheSBkZSBjbGFzZXMgKHZhbG9yKSBzb2JyZSBsYXMgcXVlIHNlIHJlc3RyaW5nZSBsYSBpbXBvcnRhY2nDs24uIFBhcmEgdG9kYXMgbGFzIGNsYXNlcyBlbGVnaWRhcywgbyB0b2RhcyBsYXMgY2xhc2VzIGV4aXN0ZW50ZXMsIGxvcyBhdHJpYnV0b3MgZGUgaWRlbnRpZmljYWNpw7NuIHRlbmRyw6FuIHF1ZSBzZXIgZWxlZ2lkb3MgZW4gbGEgY29uZmlndXJhY2nDs24gZGVsIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZGVsIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGxhIGNhcGEgaW52b2NhZG9yYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRlbCBtw7NkdWxvIEdlbmVyaWNJbnRlcmZhY2UgcGFyYSBsYSBjYXBhIGludm9jYWRvcmEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdSZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkb0luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV5ZSBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXllIGVzdGFkb3MgZGUgaW5jaWRlbmNpYXMgZW4gbGEgYsO6c3F1ZWRhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIHF1ZSBzZSBtb3N0cmFyw6FuIGVuIGVsIHJlc3VsdGFkbyBkZSBlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTcOzZHVsbyBwYXJhIGNvbXByb2JhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1bmEgY2xhc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIGNvbXByb2JhciBlbCBncnVwbyByZXNwb25zYWJsZSBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VuZXJhciBlc3RhZMOtc3RpY2FzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vbWJyZSBNw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNw7NkdWxvIG51bcOpcmljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgc2UgbW9zdHJhcsOhbiBlbiBjYWRhIHDDoWdpbmEgZGUgdW4gcmVzdWx0YWRvIGRlIGLDunNxdWVkYSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBxdWUgZGViZW4gbW9zdHJhcnNlIGVuIGNhZGEgcMOhZ2luYSBkZSB1biByZXN1bHRhZG8gZGUgYsO6c3F1ZWRhIGVuIGxhIGludGVyZmF6IGRlbCBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmpldG9zIGEgYnVzY2FyLCBjdcOhbnRhcyBlbnRyYWRhcyB5IHF1w6kgYXRyaWJ1dG9zIG1vc3RyYXIuIExvcyBhdHJpYnV0b3MgQ29uZmlnSXRlbSBkZWJlbiBhbG1hY2VuYXJzZSBleHBsw61jaXRhbWVudGUgYSB0cmF2w6lzIGRlIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Zpc3RhIEdlbmVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxhcyBjYXRlZ29yw61hcyBkZSBsYXMgY2xhc2VzIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBmaWx0cm9zIGRlIGNvbHVtbmEgZGUgbGEgdmlzdGEgZ2VuZXJhbCBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gcGVxdWXDsW9zLiBQb3IgZmF2b3IsIHRlbmdhIGVuIGN1ZW50YTogZXN0YWJsZWNlciBcJ0FjdGl2b1wnIGEgMCBzw7NsbyBldml0YXLDoSBxdWUgbG9zIGFnZW50ZXMgZWRpdGVuIGxvcyBhanVzdGVzIGRlIGVzdGUgZ3J1cG8gZW4gc3VzIHByZWZlcmVuY2lhcyBwZXJzb25hbGVzLCBwZXJvIHNlZ3VpcsOhIHBlcm1pdGllbmRvIGEgbG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0YXIgbG9zIGFqdXN0ZXMgZW4gbm9tYnJlIGRlIG90cm8gdXN1YXJpby4gVXRpbGljZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHBhcmEgY29udHJvbGFyIGVuIHF1w6kgw6FyZWEgZGViZW4gbW9zdHJhcnNlIGVzdG9zIGFqdXN0ZXMgZW4gbGEgaW50ZXJmYXogZGUgdXN1YXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgY29sb3IgZGUgbG9zIGVzdGFkb3MgZGUgZGVzcGxpZWd1ZSBlbiBsYSB2aXN0YSBkZSBwcmVmZXJlbmNpYXMgZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGxvcyBlc3RhZG9zIGRlIGRlc3BsaWVndWUgZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgZWplbXBsbyBkZSBwZXJtaXNvcyBkZSBncnVwbyBkZWwgY2F0w6Fsb2dvIGdlbmVyYWwgZGUgYXRyaWJ1dG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgZWwgbcOzZHVsbyBkZSBub21icmVzIGRlIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgZGVsIG3Ds2R1bG8gbnVtw6lyaWNvIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgbGFzIHDDoWdpbmFzIChlbiBsYXMgcXVlIHNlIG11ZXN0cmFuIGxvcyBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBkZWwgbcOzZHVsbyBkZSBjYWRlbmFzIGRlIHZlcnNpw7NuIHBhcmEgbGFzIGNsYXNlcyBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZW4gbGEgdmlzdGEgZGUgcHJlZmVyZW5jaWFzIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6FtZXRyb3MgcGFyYSBlbCBtw7NkdWxvIGRlbCBraXQgZGUgaGVycmFtaWVudGFzIGRlIHBsYW50aWxsYXMgZGUgY2FkZW5hcyBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDoW1ldHJvcyBwYXJhIGVsIGFjdGl2YWRvciBkZSB2ZXJzacOzbiBwYXJhIGxhcyBjbGFzZXMgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHByZWZlcmVuY2lhcyBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1JlYWxpemEgbGEgYWNjacOzbiBjb25maWd1cmFkYSBwYXJhIGNhZGEgZXZlbnRvIChjb21vIEludm9rZXIpIHBhcmEgY2FkYSBXZWJzZXJ2aWNlIGNvbmZpZ3VyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnUGVybWlzb3MgZGUgZ3J1cG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgYWNjacOzbiBkZSBhZGp1bnRhciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGLDunNxdWVkYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBiw7pzcXVlZGEgZGUgZWxlbWVudG9zIGRlIGNvbmZpZ3VyYWNpw7NuIElUU00gZW4gbGEgaW50ZXJmYXogZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgdmlzdGEgZGUgw6FyYm9sIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBhbXBsaWFjacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBhw7FhZGlyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gSVRTTSBtYXNpdmEgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgbmVjZXNhcmlvcyBwYXJhIHV0aWxpemFyIGxhIHBhbnRhbGxhIGRlIGVkaWNpw7NuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIG5lY2VzYXJpb3MgcGFyYSB1dGlsaXphciBsYSBwYW50YWxsYSBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGVsIGhpc3RvcmlhbCBkZSBJVFNNIGVuIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyBuZWNlc2FyaW9zIHBhcmEgdXRpbGl6YXIgbGEgcGFudGFsbGEgZGUgaW1wcmVzacOzbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgSVRTTSBlbiBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbGVnaW9zIG5lY2VzYXJpb3MgcGFyYSBlbGltaW5hciBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQnVzY2FyIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0VzdGFibGV6Y2EgZWwgZXN0YWRvIGRlIGxhIGluY2lkZW5jaWEgZGUgdW4gQ0kgZGUgZm9ybWEgYXV0b23DoXRpY2EgY3VhbmRvIHNlIHZpbmN1bGUgdW4gdGlja2V0IGEgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIGVsIGVzdGFkbyBkZSBkZXNwbGllZ3VlIGVuIGxhIHBhbnRhbGxhIGRlIGNvbmZpZ3VyYWNpw7NuIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBlbCBlc3RhZG8gZGUgbGEgaW5jaWRlbmNpYSBlbiBsYSBwYW50YWxsYSBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHF1ZSBwZXJtaXRlIHZpbmN1bGFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGNvbiBvdHJvIG9iamV0byBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgYWNjZWRlciBhbCBoaXN0b3JpYWwgZGUgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdW1lbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBhY2NlZGVyIGFsIGhpc3RvcmlhbCBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBsYSB2aXN0YSBkZSB6b29tIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBlbGltaW5hciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBzdSB2aXN0YSBkZSB6b29tIGRlIGxhIGludGVyZmF6IGRlbCBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIHZpc3VhbGl6YXIgbG9zIGVubGFjZXMgZGUgbG9zIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBjb21vIHVuYSB2aXN0YSBlbiDDoXJib2wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTXVlc3RyYSB1biBlbmxhY2UgZW4gZWwgbWVuw7ogcGFyYSBkdXBsaWNhciB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiBlbiBlbCByZXN1bWVuIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiBkZSBsYSBpbnRlcmZheiBkZWwgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGR1cGxpY2FyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHpvb20gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgZWRpdGFyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIGxhIHZpc3RhIGRlIHpvb20gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgdW4gZW5sYWNlIGVuIGVsIG1lbsO6IHBhcmEgdm9sdmVyIGEgbGEgdmlzdGEgZGUgem9vbSBkZWwgZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGltcHJpbWlyIHVuIGVsZW1lbnRvIGRlIGNvbmZpZ3VyYWNpw7NuIGVuIHN1IHZpc3RhIGRlIHpvb20gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNdWVzdHJhIHVuIGVubGFjZSBlbiBlbCBtZW7DuiBwYXJhIGFtcGxpYXIgdW4gZWxlbWVudG8gZGUgY29uZmlndXJhY2nDs24gZW4gZWwgcmVzdW1lbiBkZSBlbGVtZW50b3MgZGUgY29uZmlndXJhY2nDs24gZGUgbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ011ZXN0cmEgZWwgaGlzdG9yaWFsIGRlIGVsZW1lbnRvcyBkZSBjb25maWd1cmFjacOzbiAob3JkZW5hZG8gZGUgZm9ybWEgaW52ZXJzYSkgZW4gbGEgaW50ZXJmYXogZGVsIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnTGEgY2F0ZWdvcsOtYSBwb3IgZGVmZWN0byBxdWUgc2UgbXVlc3RyYSwgc2kgbm8gc2Ugc2VsZWNjaW9uYSBuaW5ndW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnRWwgaWRlbnRpZmljYWRvciBkZSB1biBlbGVtZW50byBkZSBjb25maWd1cmFjacOzbiwgcG9yIGVqZW1wbG8gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIEVsIHZhbG9yIHBvciBkZWZlY3RvIGVzIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQWN0aXZhIGF1dG9tw6F0aWNhbWVudGUgZWwgaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc2nDs24gZGUgY2FkZW5hIGRlIHZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ03Ds2R1bG8gZGUgY2FkZW5hcyBkZSB2ZXJzacOzbic7CiAgICAkU2VsZi0+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+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0Nvc3RlcyBkZSBpbnZlcnNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBmYWN0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGVjbGFkbyc7CiAgICAkU2VsZi0+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+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnQ8OhbWFyYSB3ZWInOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZhbGlnZSBzZWUga29uZmlndXJhdHNpb29uaWVsZW1lbnQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdLw6Rpdml0YSBvdHNpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnT3RzaSBrYSBlZWxtaXN0ZXMgdmVyc2lvb25pZGVzPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW1cJ2kgVHJlZVZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdTw7xnYXZ1c2UgdGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ1N1dW1pbWluZSBzaXNzZS92w6RsamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbVwnaSBtYWtzaW1hYWxuZSBsaW5raWRlIHRhc2Ugb24gc2FhdnV0YXR1ZCEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1cmVlcmltaXNvYmpla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlndXJlZXJpbWlzZWxlbWVuZGkgdGVhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnUHJhZWd1bmUga2FzdXR1c2VsZXbDtXR1IG9sdWtvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ1ByYWVndW5lIGp1aHR1bWl0ZSBvbHVrb3JkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1ZpaW1hdGkgbXV1ZGV0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVmlpbWF0aSBtdXV0aXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdUZWllIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0gb3RzaW5nJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnSW1wb3JkaXRha3NlIGrDpHJnbWlzZWQga2xhc3NpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdJbXBvcmRpdGFrc2UgasOkcmdtaXNlZCByb2xsaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnUGFuZ2UgdMOkaGVsZSwgZXQga2EgdmFzdGF2YWQgZMO8bmFhbWlsaXNlZCB2w6RsamFkIGphIEdlbmVyYWxDYXRhbG9naSBrbGFzc2lkIGx1dWFrc2UgamEgbmVpZCBlaSBlZW1hbGRhdGEgYXV0b21hYXRzZWx0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0thcyBzb292aXRlIGrDpHRrYXRhPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdWYWphZCBFeGFtcGxlQ2xhc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnTcOkw6RyYXRsdXMgZWkgb2xlIGtlaHRpdiBZQU1MLWhhc2guJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnw5xsZXZhYWRlOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdUZWlsIG9uIHZhamEgdsOkaGVtYWx0IMO8aHRlIHZhbGl0dWQga29uZmlndXJhdHNpb29uaWVsZW1lbnRpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1RlaWwgZWkgb2xlIHNlbGxlbGUga29uZmlndXJhdHNpb29uaWVsZW1lbmRpbGUga2lyanV0YW1pc8O1aWd1c3Q6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdLbGFzc2lsZSAlcyBlaSBvbGUgbcOkw6RyYXRsZXR1ZCBkZWZpbml0c2lvb25pISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnIGl0ZW0gIiVzIiBlaSBvbGUgYW5kbWViYWFzaXMgbGVpdHVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0VpIMO1bm5lc3R1bnVkIGt1c3R1dGFkYSBrb25maWd1cmF0c2lvb25pZWxlbWVudGkgSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdDb25maWdJdGVtSUQgJXMgamFva3MgZWkgbGVpdHVkIHZlcnNpb29uaSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCB2w7VpIENsYXNzSUQgZWkgb2xlIGFudHVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnSnV1cmRlcMOkw6RzdSBlaSBhbnRhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdFaSBzYWEgbsOkaWRhdGEgYWphbHVndSwgQ29uZmlnSXRlbUlEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdFaSBzYWEgbsOkaWRhdGEgYWphbHVndSwganV1cmRlcMOkw6RzdcO1aWd1c3QgZWkgb2xlIGFudHVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnVXVzIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnVXVzIHZlcnNpb29uIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfDnGxkaXN0ZSBrYXRhbG9vZ2kgYXRyaWJ1dXRpZGUgbsOkaWRpc8O1aWd1c3RlIHLDvGhtYWRlIHBhcmFtZWV0cmlkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdKdWh0dW1pdGUgc2Vpc3VuZGkgdXVlbmRhbWluZSAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGt1c3R1dGF0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMaXNhdHVkIGxpbmsgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5rICVzICh0eXBlPSVzKSBrdXN0dXRhdHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtIG3DpMOkcmF0bHVzIHV1ZW5kYXR1ZCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmltaSB1dWVuZGF0dWQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0VpIHNhYSBuw6RpZGF0YSBlbGVtZW50aSwgQ29uZmlnSXRlbWlsZSBlaSBvbGUgYW50dWQganV1cmRlcMOkw6RzdcO1aWd1c2khJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb29uICVzIGt1c3R1dGF0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEIHbDtWkgVmVyc2lvbklEIGVpIG9sZSBhbnR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnRWkgc2FhIGt1dmFkYSBrb25maWd1cmF0c2lvb25pZWxlbWVudGksIGVpIG9sZSBhbnR1ZCBqdXVyZGVww6TDpHN1w7VpZ3VzaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgZWkgbGVpdHVkIGFuZG1lYmFhc2lzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAndHLDvGtpdHVkICVzIHBvb2x0IGFhZHJlc3NpbCAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnVmlpdGVkJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnVmFsZSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NsYXNzSUQgZWkgb2xlIGFudHVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ1NlbGxlbGUga2xhc3NpbGUgZWkgb2xlIGp1dXJkZXDDpMOkc3XDtWlndXN0IGFudHVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnVHVsZW11c3QgZWkgb2xlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0NvbmZpZyBJdGVtIG90c2luZ3UgdHVsZW11c2VkJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdFaSBzYWEgbsOkaWRhdGEgZWxlbWVudGksIENvbmZpZ0l0ZW1pbGUgZWkgb2xlIGFudHVkIGp1dXJkZXDDpMOkc3XDtWlndXNpISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIGVpIGxlaXR1ZCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnw5xodGVnaSB2ZXJzaW9vbmkgZWkgbGVpdHVkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGlpdm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdob2lhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnanVodHVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxsZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkga2FzdXR1c2VsZXbDtXR1IG9sZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxsZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgaW50c2lkZW50bmUgb2xlayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0x1YmEgcHV1ZHViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciBrZWh0ZXR1ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU2VhcmNoIHBhcmFtcyBrZWh0ZXR1ISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ07DpGlkYXR1ZCBrb25maWd1cmF0c2lvb25pIGVsZW1lbmRpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdLYXN1dHVzZWxldsO1dHUgcmlpZ2kgdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1ByYWVndW5lIMO1bm5ldHVzanVodHVtaSBzZWlzdW5kaXTDvMO8cCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdCZXR3ZWVuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2kgcGlpcmFuZ3VkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBqYW9rcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVmFsaWdlIMO8a3MgdsO1aSBtaXR1IGtsYXNzaSwgZXQgcGlpcmF0YSB2YWxpdGF2YWlkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzaSBwaWlyYW5ndWQga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGphb2tzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVmFsaWdlIMO8a3MgdsO1aSBtaXR1IGtsYXNzaSwgZXQgcGlpcmF0YSB2YWxpdGF2YWlkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEw7xuYWFtaWxpbmUgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGFhdGlsaW5lICh2ZXJzaW9vbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGlua2lkZSB2aWl0YW1pc2UgdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0thcyBzZWUgbGluayBrZWh0aWIgdmlpdGF2YSBvYmpla3RpIENvbmZpZ0l0ZW1cJ2kgdsO1aSBzdGFhdGlsaXNlIHZlcnNpb29uaSBrb2h0YS4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZVwnaSBhcnZ1dGFtaW5lIHRvaW11YiBhaW51bHQgZMO8bmFhbWlsaXN0ZSBsaW5raWRlIHB1aHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1ZhbGlnZSBhdHJpYnV1dCwgbWlsbGUgasOkcmdpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50ZSBvdHNpdGFrc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0JhYXNzdHJ1a3R1dXIgZWkgb2xlIGtlaHRpdi4gUGFsdW4gZXNpdGFnZSBZQU1MLXZvcm1pbmd1cyBhbmRtZXRlIGhhc2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnWUFNTC1zdHJpbmdpIGFsdXN0YW1pbmUgc8O1bmFnYSBcJy0tLVwnIG9uIG7DtXV0YXYuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ1RhYmVsaXQgY29uZmlnaXRlbV9saW5rIGVpIMO1bm5lc3R1bnVkIHB1aGFzdGFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0FzamFrb2hhc2VpZCBkw7xuYWFtaWxpc2kgdsOkbGp1IGVpIGxlaXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0VpIMO1bm5lc3R1bnVkIHNpc2VzdGFkYSB0YWJlbGlzc2UgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdTaXNlc3RhdHVkIDAgcmlkYSB0YWJlbGlzc2UgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ8OcaGUgZWxlbWVuZGkgbWFrc2ltYWFsbmUgYXJ2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpb29uIFN0cmluZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdWaWdhIG3DpMOkcmF0bHVzdGUgc8O8bmtyb25pc2VlcmltaXNlbC4gUGFsdW4ga29udHJvbGxpZ2UgbG9naS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdUZWlsIG9uIElUU01Db25maWdJdGVtIG3DpMOkcmF0bHVzZWQsIG1pcyBlaSBvbGUgc8O8bmtyb25pc2Vlcml0dWQuIFBhbHVuIHbDtXRrZSBrYXN1dHVzZWxlIG9tYSBJVFNNQ29uZmlnSXRlbSBkw7xuYWFtaWxpc3RlIHbDpGxqYWRlIG11dWRhdHVzZWQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdBZWd1bnVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnSG9vbGR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG9vdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmVlcml0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVtb250JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaW9uaWxlIGrDpMOkbnVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ8OcbGV2YWFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw5xsZXZhYWRlIGphIGtpbm5pdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0tsYXNzaWRlL3JvbGxpZGUgamEgbmVuZGVnYSBzZW90dWQgdsOkbGphZGUgaW1wb3J0aW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdLbGFzc2kgaW1wb3J0aW1pc2VsIHRla2tpcyB2aWdhLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gcGVpZGV0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIG7DpGlkYXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVsO1aW1hbGRhYiBsYWllbmRhdHVkIG90c2luZ3V0aW5naW11c2kgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIG90c2luZ3VzLiBTZWxsZSBmdW5rdHNpb29uaWdhIHNhYXRlIG90c2lkYSBudCBjb25maWctZWxlbWVuZGkgbmltZSBzZWxsaXN0ZSB0aW5naW11c3RlZ2EgbmFndSAiKCprZXkxKiYmKmtleTIqKSIgdsO1aSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1bDtWltYWxkYWIgbGFpZW5kYXR1ZCBvdHNpbmd1dGluZ2ltdXNpIGtsaWVuZGkga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1cy4gU2VsbGUgZnVua3RzaW9vbmlnYSBzYWF0ZSBvdHNpZGEgbnQga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG5pbWUgc2VsbGlzdGUgdGluZ2ltdXN0ZWdhIG5hZ3UgIigqa2V5MSomJiprZXkyKikiIHbDtWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdNw6TDpHJhdHVkIGVsdXTDpGh0c2FkIGluZnJhc3RydWt0dXVyaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+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+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmVlcmltaXNlbGVtZW5kaSBvdHNpbmcgYWdlbnRpZGUgbGlpZGVzZSB0YWdhc2lzaWRlIG1hcnNydXV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0x1dWEgamEgaGFsbGF0YSBrb25maWd1cmF0c2lvb25pb2JqZWt0aWRlIG3DpMOkcmF0bHVzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdMb29iIENvbmZpZ0l0ZW1zXCdpIHBpbGV0aWQgdGVhdHVkIGFqYWhldGtlZGVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLbGllbmRpZCBzYWF2YWQgbsOkaGEgYWphbG9vbGlzaSBDSS12ZXJzaW9vbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0tsaWVudGlkZWwgb24gdsO1aW1hbHVzIGvDpHNpdHNpIHZhaGV0YWRhIHZhcmFzZW1hdGUgQ0ktdmVyc2lvb25pZGUgdmFoZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnVmFpa2ltaXNpIGFuZG1lZCwgbWlkYSBrYXN1dGF0YWtzZSBhdHJpYnV1dGlkZSBwdWh1bCBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pbC4gTsOkaWRlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1ZhaWtpbWlzaSBhbmRtZWQsIG1pZGEga2FzdXRhdGFrc2UgYXRyaWJ1dXRpZGUgcHVodWwga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaWwuIE7DpGlkZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ03DpMOkcmFrZSB0b2ltaW5ndWQsIG1pbGxlIHB1aHVsIG9uIHNlb3R1ZCBvYmpla3RpZGUgdmlkaW5hIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4Iikgc2FhZGF2YWwgc2VhZGV0ZSBudXBwIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBhbmdlIHTDpGhlbGUsIGV0IG5lZWQgdG9pbWluZ3VkIHBlYXZhZCBvbGVtYSByZWdpc3RyZWVyaXR1ZCBqw6RyZ21pc2VkIEpTLSBqYSBDU1MtZmFpbGlkOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBqYSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdNw6TDpHJha2UgbWFsbGk6OlRvb2xraXQgc2tlZW0gdmVyc2lvb25pIHN0cmluZ2lkZSBqYW9rcy4gS2FzdXRhdGFrc2UgYWludWx0IHNpaXMsIGt1aSBWZXJzaW9uIFN0cmluZyBNb2R1bGVcJ2lsZSBvbiBtw6TDpHJhdHVkIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ03DpMOkcmFrZSB0aW5naW11c2VkLCBtaWxsZSBhbHVzZWwga2xpZW5kaWwgb24gbHViYXR1ZCBrb25maWd1cmF0c2lvb25pZWxlbWVudGkgbsOkaGEuIFRpbmdpbXVzaSBzYWFiIHZhbGlrdWxpc2VsdCBwaWlyYXRhIHRlYXR1ZCBrbGllbmRpcsO8aG1hZGVsZS4gTmltaSBvbiBhaW51cyBrb2h1c3R1c2xpayBhdHJpYnV1dC4gS3VpIG11aWQgdmFsaWt1aWQgZWkgb2xlIGFudHVkLCBvbiBrw7VpayBrb25maWd1cmF0c2lvb25pZWxlbWVuZGlkIHNlbGxlIGthdGVnb29yaWEgYWxsIG7DpGh0YXZhZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIG7DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pb2JqZWt0aWRlIGt1c3R1dGFtaXNla3Mgw7xsZGlzZSBsaWlkZXNlIGFiaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBuw7V1dGF2YWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgc2FhbWlzZWtzIMO8bGRpc2UgbGlpZGVzZSBhYmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgbsO1dXRhdmFkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmlvYmpla3RpZGUgb3RzaW1pc2VrcyDDvGxkaXNlIGxpaWRlc2UgYWJpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIG7DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBzZWFkaXN0YW1pc2VrcyDDvGxkaXNlIGxpaWRlc2UgYWJpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgw7xsZXZhYXRlbW9vZHVsaSwgbWlzIG7DpGl0YWIga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgbG9lbmRpIHbDpGlrZXN0IHZhYWRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnTcOkw6RyYWIsIGthcyBsaW5naXTDvMO8Ymkgc2lsZGlkIHBlYXZhZCBvbGVtYSBrdXZhdHVkIHPDtWxtZcO8aGVuZHVzdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgaWdhIENvbmZpZ0l0ZW0ta2xhc3NpIGphb2tzIGVyYWxkaSByZWd1bGFhcmF2YWxkaXNlZCBDb25maWdJdGVtLW5pbWUga29udHJvbGxpbWlzZWtzIGphIHZhc3RhdmF0ZSB2ZWF0ZWFkZXRlIGt1dmFtaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgQ0lkZSBvbGVtYXNvbGV2YWQgdmVlcnVkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGVzIHPDtWx0dXZhbHQgQ0kta2xhc3Npc3QuIElnYSBraXJqZSBwZWFiIGtvb3NuZW1hIGtsYXNzaSBuaW1lc3QgamEgdmFzdGF2YSBrbGFzc2kgamFva3Mga8OkdHRlc2FhZGF2YXRlIHbDpGxqYWRlIG1hc3NpaXZpLiBEw7xuYWFtaWxpc3RlIHbDpGxqYWRlIGtpcmplZCBwZWF2YWQgasOkcmdpbWEgc2tlZW1pIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiB2YWlraW1pc2kga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGF0cmlidXVkaSwgbWlzIG9uIHZhamFsaWsgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1dHVsZW11c2Ugc29ydGVlcmltaXNla3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJhYiB2YWlraW1pc2kga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGF0cmlidXVkaSBrbGllbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXR1bGVtdXNlIHNvcnRlZXJpbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ03DpMOkcmFiIHZhaWtpbWlzaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgYXRyaWJ1dWRpIHNlbGxlIG9wZXJhdHNpb29uaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXR1bGVtdXNlIHNvcnRlZXJpbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcOkw6RyYWIgdmFpa2ltaXNpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBqw6RyamVrb3JyYSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3V0dWxlbXVzZXMuIMOcbGVzOiB2YW5pbSBvbiDDvGxldmFsLiBBbGxhOiB1dXNpbSDDvGxldmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcOkw6RyYWIgdmFpa2ltaXNpIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBqw6RyamVrb3JyYSBrbGllbmRpIGthc3V0YWphbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXR1bGVtdXNlcy4gw5xsZXM6IHZhbmltIG9uIMO8bGV2YWwuIEFsbGE6IHV1c2ltIMO8bGV2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DpMOkcmFiIHZhaWtpbWlzaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgasOkcmpla29ycmEgc2VsbGUgb3BlcmF0c2lvb25pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1dHVsZW11c2VzLiDDnGxlczogdmFuaW0gcGVhbC4gQWxsYTogdXVzaW0gw7xsZXZhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIENJZGUgdmFpa2ltaXNpIGt1dmF0YXZhZCB2ZWVydWQga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZXMgc8O1bHR1dmFsdCBDSS1rbGFzc2lzdC4gSWdhIGtpcmplIHBlYWIga29vc25lbWEga2xhc3NpIG5pbWVzdCBqYSB2YXN0YXZhIGtsYXNzaSBqYW9rcyBrw6R0dGVzYWFkYXZhdGUgdsOkbGphZGUgbWFzc2lpdmkuIETDvG5hYW1pbGlzdGUgdsOkbGphZGUga2lyamVkIHBlYXZhZCBqw6RyZ2ltYSBza2VlbWkgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnTcOkw6RyYWIgdmFpa2ltaXNpIGt1dmF0YXZhdGUgc3VoZXRlIHPDvGdhdnVzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgdmFpa2ltaXNpIGt1dmF0YXZhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGF0cmlidXVkaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIHZhaWtpbWlzaSBrdXZhdGF2YSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBhdHJpYnV1ZGkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaWwuIE7DpGlkZTogIktleSIgcGVhYiBvbGVtYSBkw7xuYWFtaWxpc2UgdsOkbGphIG5pbWksIGFudHVkIGp1aHVsIFwnWFwnLCAiQ29udGVudCIgcGVhYiBvbGVtYSBkw7xuYWFtaWxpc2UgdsOkbGphIHbDpMOkcnR1cyBzw7VsdHV2YWx0IGTDvG5hYW1pbGlzZSB2w6RsamEgdMO8w7xiaXN0LCBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBqYSB2w7VpIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGtsYXNzaSBcJ0lUU01Db25maWdJdGVtXCcgdmFpa2ltaXNpIGFsYW1vYmpla3RpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgQ0lkZSBvbGVtYXNvbGV2YWQgdmVlcnVkIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGVzIHPDtWx0dXZhbHQgQ0kta2xhc3Npc3QuIElnYSBraXJqZSBwZWFiIGtvb3NuZW1hIGtsYXNzaSBuaW1lc3QgamEgdmFzdGF2YSBrbGFzc2kgamFva3Mga8OkdHRlc2FhZGF2YXRlIHbDpGxqYWRlIG1hc3NpaXZpLiBEw7xuYWFtaWxpc3RlIHbDpGxqYWRlIGtpcmplZCBwZWF2YWQgasOkcmdpbWEgc2tlZW1pIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ03DpMOkcmFiIHNlbGxlIGVrcmFhbmkgcmlra2FsaWt1IHRla3N0aXJlZGFrdG9yaSBrb21wb25lbmRpIGvDtXJndXNlLiBTaXNlc3RhZ2UgYXJ2IChwaWtzbGlkKSB2w7VpIHByb3RzZW50dWFhbG5lIHbDpMOkcnR1cyAoc3VodGVsaW5lKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgQ0kgbcOkw6RyYXRsdXNlIHJlZGFrdG9yaSByaWRhZGUgYXJ2dSBoYWxkdXNsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIganVodHVtaSBzZWlzdW5kaXRlIGrDpHJqZWtvcnJhIGvDtXJnZXN0IChudCBrcml0c2lhYWxuZSkga3VuaSBtYWRhbGFuaSAobnQgZnVua3RzaW9uYWFsbmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGFzamFvbWFzZWQga2FzdXR1c2VsZXbDtXR1IG9sZWt1ZCwgbWlsbGUgcHVodWwgc2VvdHVkIHBpbGV0aWQgdsO1aXZhZCBtw7VqdXRhZGEgQ0kgb2xla3V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGFnZW50SVRTTUNvbmZpZ0l0ZW0gZWtyYWFuaSBvdHNpbmd1cGlpcmFuZ3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyYXRsZWIgb3RzaW5ndXBpaXJhbmd1IGVrcmFhbmkgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBqYW9rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJhYiBvdHNpbmd1cGlpcmFuZ3UgZWtyYWFuaSBDdXN0b21lcklUU01Db25maWdJdGVtIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcmFiIG90c2luZ3VwaWlyYW5ndSBla3JhYW5pbCBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNw6TDpHJhdGxlYiBrw7Vpa2lkZSBDSS1rbGFzc2lkZSBqYW9rcyBsaW5naXRhYmVsaXMga29tcGxla3N2YWF0ZXMgbsOkaWRhdHVkIENJZGUgdmVlcnVkLiBLdWkga2FubmUgcHV1ZHViLCBrdXZhdGFrc2UgdmFpa2ltaXNpIHZlZXJ1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ03DpMOkcmF0bGViIGxpbmdpdGFiZWxpcyBrb21wbGVrc3ZhYXRlcyBuw6RpZGF0dWQgQ0lkZSB2ZWVydWQgc8O1bHR1dmFsdCBDSS1rbGFzc2lzdC4gSWdhIGtpcmplIGVlcyBwZWFiIG9sZW1hIGtsYXNzaSBuaW1pIGphIGtha3Mga29vbG9uaXQgKG50IENvbXB1dGVyOjopLiBPbiBvbGVtYXMgbcO1bmVkIENJLUF0dHJpYnV1ZGlkLCBtaXMgb24ga8O1aWdpbGUgQ0lkZWxlIMO8aGlzZWQgKG7DpGl0ZWtzIGtsYXNzaSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gw5xrc2lrdXRlIENJLUF0dHJpYnV1dGlkZSBuw6RpdGFtaXNla3MsIG5hZ3Ugb24gbcOkw6RyYXRsZXR1ZCBDSS1EZWZpbml0c2lvb25pcywgdHVsZWIga2FzdXRhZGEgasOkcmdtaXN0IHNrZWVtaSAobsOkaWRlIGtsYXNzaSBDb21wdXRlciBwdWh1bCk6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBLdWkgQ0kta2xhc3NpIGtvaHRhIHB1dWR1YiBrYW5uZSwga3V2YXRha3NlIHZhaWtpbWlzaSB2ZWVydWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTcOkw6RyYWIsIG1pbGxpc2VkIGVsZW1lbmRpZCBvbiBzYWFkYXZhbCAiQWN0aW9uIiBqYW9rcyBJVFNNIENvbmZpZyBJdGVtIEFDTGkgc3RydWt0dXVyaSBrb2xtYW5kYWwgdGFzYW5kaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTcOkw6RyYWIsIG1pbGxpc2VkIGVsZW1lbmRpZCBvbiBzYWFkYXZhbCBJVFNNIENvbmZpZyBJdGVtIEFDTGkgc3RydWt0dXVyaSBlc2ltZXNlbCB0YXNhbmRpbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTcOkw6RyYWIsIG1pbGxpc2VkIGVsZW1lbmRpZCBvbiBzYWFkYXZhbCBJVFNNIENvbmZpZyBJdGVtIEFDTGkgc3RydWt0dXVyaSB0ZWlzZWwgdGFzYW5kaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ03DpMOkcmFiLCBtaWxsaXN0IHTDvMO8cGkgbGluayAobmltZWdhIHBpbGV0aSB2YWF0ZW51cmdhc3QpIHbDtWliIG3DtWp1dGFkYSBzZW90dWQgQ0kgc3RhYXR1c3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTcOkw6RyYWIsIG1pbGxpc3QgdMO8w7xwaSBwaWxldGlkIHbDtWl2YWQgbcO1anV0YWRhIHNlb3R1ZCBDSSBzdGFhdHVzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdNw6TDpHJhdGx1c2UgYWpha29oYXN0YW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0t1c3R1dGEga29uZmlndXJhdHNpb29uaWVsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdLYXN1dHVzZWxldsO1dHUgb2xlayBWw6Rydic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrYWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRMO8bmFhbWlsaXN0ZSB2w6RsamFkZSBzw7xuZG11c3RlIG1vb2R1bCwgbWlzIG3DpHJnaWIga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG3DpMOkcmF0bHVzZWQgc8O8bmtyb29uaXN0IHbDpGxqYXMgb2xldmFrcywga3VpIGTDvG5hYW1pbGlzaSB2w6RsanUgc2lzYWxkYXZhZCBkw7xuYWFtaWxpc2VkIHbDpGxqYWQgbXV1dHV2YWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw7xuYWFtaWxpc2VkIHbDpGxqYWQsIG1pcyBrdXZhdGFrc2UgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIHTDpGllbmRhdmF0ZSBJVFNNLXbDpGxqYWRlIGVrcmFhbmlsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw7xuYWFtaWxpc2VkIHbDpGxqYWQsIG1pcyBrdXZhdGFrc2Uga2xpZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZSBla3JhYW5pbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMO8bmFhbWlsaXNlZCB2w6RsamFkLCBtaXMga3V2YXRha3NlIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG90c2luZ3UgZWtyYWFuaWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ1bDtWltYWxkYWIga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIG1hc3NpdGVnZXZ1c2UgZnVua3RzaW9vbmksIGV0IGFnZW50aWRlIGZyb250ZW5kIHNhYWtzIHTDtsO2dGFkYSBrb3JyYWdhIHJvaGtlbSBrdWkgw7xoZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGlnYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1NlbGxlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBrYXN1dHVzZWxldsO1dHUgb2xlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWw7VpbWFsZGFiL3bDpGxqYSBsw7xsaXRhYiBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBrb250cm9sbGltaXNlIGZ1bmt0c2lvb25pIHVuaWthYWxzZXRlIG5pbWVkZSBvc2FzLiBFbm5lIHNlbGxlIHN1dmFuZGkgbHViYW1pc3QgcGVha3NpdGUga29udHJvbGxpbWEgb21hIHPDvHN0ZWVtaSBqdWJhIG9sZW1hc29sZXZhdGUgZHVibGVlcml2YXRlIG5pbWVkZWdhIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIHN1aHRlcy4gU2VkYSBzYWF0ZSB0ZWhhIGtvbnNvb2xpIGvDpHN1Z2EgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdTw7xuZG11c2UgbW9vZHVsLCBldCBtw6TDpHJhdGEgY29uZmlnaXRlbS1zdGF0dXMgdGlja2V0LWNvbmZpZ2l0ZW0tbGlua2lsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnS29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGluZGVrc2kgdsOkbGphZCwgbWlkYSBrYXN1dGF0YWtzZSB0w6Rpc3Rla3N0aW90c2luZ3Vrcy4gVsOkbGphZCBvbiBzYW11dGkgc2FsdmVzdGF0dWQsIGt1aWQgZWkgb2xlIMO8bGRpc2UgZnVua3RzaW9uYWFsc3VzZSBqYW9rcyBrb2h1c3R1c2xpa3VkLiBNYW51c3RlIGxpc2FtaXNlIHNhYWIga2VlbGF0YSwga3VpIG3DpMOkcmF0YSBraXJqZSB2w6TDpHJ0dXNla3MgMCB2w7VpIGt1c3R1dGFkYSBzZWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdLb25maWd1cmF0c2lvb25pZWxlbWVuZGkgaW5kZWtzaXNzZSBzYWx2ZXN0YXR1ZCB2w6RsamFkLCBtaWRhIGthc3V0YXRha3NlIGxpc2FrcyB0w6Rpc3Rla3N0b3RzaW5ndXRlbGUga2EgbXV1ZGVrcyBhc2phZGVrcy4gVMOkaWVsaWt1IGZ1bmt0c2lvbmFhbHN1c2UgdGFnYW1pc2VrcyBvbiBrw7VpayB2w6RsamFkIGtvaHVzdHVzbGlrdWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnSWdhIHZlZWJpdGVlbnVzZSAodsO1dGkpIGphb2tzIHNhYWIgbcOkw6RyYXRsZWRhIGtsYXNzaWRlIG1hc3NpaXZpICh2w6TDpHJ0dXMpLCBtaWxsZSBwdWh1bCBvbiBpbXBvcnQgcGlpcmF0dWQuIEvDtWlnaSB2YWxpdHVkIGtsYXNzaWRlIHbDtWkga8O1aWdpIG9sZW1hc29sZXZhdGUga2xhc3NpZGUgamFva3MgdHVsZWIgaW52b2tlclwnaSBrb25maWd1cmF0c2lvb25pcyB2YWxpZGEgaWRlbnRpZml0c2Vlcml2YWQgYXRyaWJ1dWRpZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZVwnaSBtb29kdWxpIHJlZ2lzdHJlZXJpbWluZSBDb25maWdJdGVtRmV0Y2gga3V0c3V2YSBraWhpIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2VcJ2kgbW9vZHVsaSByZWdpc3RyZWVyaW1pbmUgQ29uZmlnSXRlbUZldGNoIGt1dHN1dmEga2loaSBqYW9rcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZVwnaSBtb29kdWxpIHJlZ2lzdHJlZXJpbWluZSBDb25maWdJdGVtRmV0Y2gga3V0c3V2YSBraWhpIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgw7xsZXZhYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Npc2FsZGFiIGtsaWVuZGkga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1c3NlIGthc3V0dXNlbGV2w7V0dSBvbGVrdWlkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaXNhbGRhYiBrbGllbmRpbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndXNzZSBpbnRzaWRlbnRpZGUgb2xla3VkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdTZWxsZSBvcGVyYXRzaW9vbmkgdHVsZW11c2VsIGt1dmF0YXZhdGUga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUgbWFrc2ltYWFsbmUgYXJ2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vb2R1bCwgZXQga29udHJvbGxpZGEga2xhc3NpIGVlc3QgdmFzdHV0YXZhdCByw7xobWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9vZHVsLCBldCBrb250cm9sbGlkYSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgZWVzdCB2YXN0dXRhdmF0IHLDvGhtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb29kdWwgSVRTTS1pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW50aWRlIHN0YXRpc3Rpa2EgZ2VuZXJlZXJpbWlzZWtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05pbWkgTW9vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW1icmltb29kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJlZXJpbWlzb2JqZWt0aWRlIGFydiwgbWlzIGt1dmF0YWtzZSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcyBpZ2FsIG90c2luZ3V0dWxlbXVzZSBsZWhlbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS2xpZW50aWRlIGthc3V0YWphbGlpZGVzZXMgaWdhbCBvdHNpbmd1dHVsZW11c2UgbGVoZWwga3V2YXRhdmF0ZSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBhcnYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ29iamVrdGlkLCBtaWRhIG90c2lkYSwga3VpIHBhbGp1IGtpcmplaWQgamEgbWlsbGlzZWlkIGF0cmlidXV0ZSBuw6RpZGF0YS4gQ29uZmlnSXRlbSBhdHJpYnV1ZGlkIHR1bGViIHNlbGdlc8O1bmFsaXNlbHQgc2FsdmVzdGFkYSBFbGFzdGljc2VhcmNoaSBrYXVkdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnw5xsZXZhYWRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGtsYXNzaWRlIGthdGVnb29yaWF0ZSBqYW9rcyBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2UgZWVsaXN0dXN0ZSB2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgdsOkaWtlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZSB2ZWVyZ3VkZSBmaWx0cml0ZSBqYW9rcy4gUGFuZ2UgdMOkaGVsZToga3VpIG3DpMOkcmF0YSBcJ0FjdGl2ZVwnIHbDpMOkcnR1c2VrcyAwLCB0YWtpc3RhYiBzZWUgYWludWx0IGFnZW50aWRlbCBzZWxsZSBncnVwaSBzZWFkZXRlIG11dXRtaXN0IG9tYSBpc2lrbGlrZXMgZWVsaXN0dXN0ZXMsIGt1aWQgbHViYWIgYWRtaW5pc3RyYWF0b3JpdGVsIHNpaXNraSB0ZWlzZSBrYXN1dGFqYSBuaW1lbCBzZWFkZXRlIG11dXRtaXN0LiBLYXN1dGFnZSBcJ1ByZWZlcmVuY2VHcm91cFwnLCBldCBrb250cm9sbGlkYSwgbWlsbGlzZXMgcGlpcmtvbm5hcyBuZWlkIHNlYWRlaWQga2FzdXRhamFsaWlkZXNlcyBuw6RpZGF0YWtzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0thc3V0dXNlbGV2w7V0dSBvbGVrdXRlIHBhcmFtZWV0cml0ZSB2w6RydiBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2UgZWVsaXN0dXN0ZSB2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAna2FzdXR1c2VsZXbDtXR1IG9sZWt1dGUgcGFyYW1lZXRyaWQgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfDnGxkaXN0ZSBrYXRhbG9vZ2kgYXRyaWJ1dXRpZGUgbsOkaWRpc8O1aWd1c3RlIHLDvGhtYWRlIHBhcmFtZWV0cmlkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05pbWVtb29kdWxpIHBhcmFtZWV0cmlkIGtvbmZpZ3VyZWVyaXR1ZCBlbGVtZW5kaWtsYXNzaWRlIGphb2tzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZWV0cmlkIG51bWJyaW1vb2R1bGkgamFva3Mga29uZmlndXJlZXJpdHVkIGVsZW1lbmRpa2xhc3NpZGUgamFva3MgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdMZWhla8O8bGdlZGUgcGFyYW1lZXRyaWQgKGt1cyBrdXZhdGFrc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbnRlKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgdmVyc2lvb25pIHN0cmluZ2kgbW9vZHVsaSBqYW9rcyBjb25maWcgZWxlbWVudGlkZSBrbGFzc2lkZSBqYW9rcyBhZ2VudGlkZSBsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZWV0cmlkIHZlcnNpb29uaSBzdHJpbmdpIG1hbGxpIHTDtsO2cmlpc3Rha29tcGxla3RpIG1vb2R1bGkgamFva3Mga29uZmlndXJlZXJpdHVkIGVsZW1lbmRpa2xhc3NpZGUgamFva3MgYWdlbnRpZGUgbGlpZGVzZSBlZWxpc3R1c3RlIHZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1lZXRyaWQgdmVyc2lvb25pIGvDpGl2aXRhbWlzZWtzIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBrbGFzc2lkZSBqYW9rcyBhZ2VudGlkZSBsaWlkZXNlIGVlbGlzdHVzdGUgdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1Rlb3N0YWIgc2VhZGlzdGF0dWQgdG9pbWluZ3UgaWdhIHPDvG5kbXVzZSBqYW9rcyAoa3VpIGt1dHN1amEpIGlnYSBrb25maWd1cmVlcml0dWQgdmVlYml0ZWVudXNlIGphb2tzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnTG9hIGdydXBwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO1dXRhdmFkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBraW5uaXRhbWlzZSB0b2ltaW5ndSBrYXN1dGFtaXNla3MgYWdlbmRpIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWYWphbGlrdWQgw7VpZ3VzZWQgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGVrcmFhbmkga2FzdXRhbWlzZWtzIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBvdHNpbmd1IGVrcmFhbmkga2FzdXRhbWlzZWtzIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DtXV0YXZhZCDDtWlndXNlZCBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgb3RzaW5ndSBla3JhYW5pIGthc3V0YW1pc2VrcyBrbGllbmRpIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBwdXUgdmFhdGUgZWtyYWFuaSBrYXN1dGFtaXNla3MgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBzdXVtaW1pc2VrcmFhbmkga2FzdXRhbWlzZWtzIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCwgZXQga2FzdXRhZGEgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGxpc2FtaXNlIGVrcmFhbmkgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkLCBldCBrYXN1dGFkYSBJVFNNaSBtYXNza29uZmlndXJhdHNpb29uaSBlbGVtZW5kaSBla3JhYW5pIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZhamFsaWt1ZCDDtWlndXNlZCwgZXQga2FzdXRhZGEgSVRTTWkga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIHJlZGlnZWVyaW1pc2UgZWtyYWFuaSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWYWphbGlrdWQgw7VpZ3VzZWQsIGV0IGthc3V0YWRhIElUU01pIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBhamFsb28gZWtyYWFuaSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmFqYWxpa3VkIMO1aWd1c2VkLCBldCBrYXN1dGFkYSBJVFNNaSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgZWtyYWFuaSBwcmludGltaW5lIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdOw7V1dGF2YWQgw7VpZ3VzZWQga29uZmlndXJhdHNpb29uaWVsZW1lbnRpZGUga3VzdHV0YW1pc2Vrcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdPdHNpIGtvbmZpZ3VyZWVyaXR1ZCBlbGVtZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1NlYWRpc3RhZ2UgQ0kgaW50c2lkZW5kaSBzdGFhdHVzIGF1dG9tYWF0c2VsdCwga3VpIHBpbGV0IG9uIHNlb3R1ZCBDSWdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmFiIGthc3V0dXNlbGV2w7V0dSBvbGVrdSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGh1bGdpYWtuYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcmFiIGludHNpZGVuZGkgb2xla3UgYWdlbnRpZGUgbGlpZGVzZSBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgaHVsZ2lha25hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdwcmVwcm9kdWt0aWl2bmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLdXZhYiBtZW7DvMO8cyBsaW5naSwgbWlsbGUgYWJpbCBww6TDpHNlYiBrb25maWd1cmF0c2lvb25pZWxlbWVuZGkgYWphbHVra3UgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSDDvGxldmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLdXZhYiBtZW7DvMO8cyBsaW5naSwgbWlsbGUgYWJpbCBzYWFiIGp1dXJkZXDDpMOkc3Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIGFqYWxvb2xlIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2Ugc3V1bWl2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBrdXN0dXRhZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIG9tYSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlIHN1dW1pdmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIGV0IGt1dmFkYSBrb25maWd1cmF0c2lvb25pZWxlbWVudGlkZSBsaW5naWQgcHV1dmFhdGVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLdXZhYiBtZW7DvMO8cyBsaW5naSwgbWlsbGUgYWJpbCBzYWFiIGtvbmZpZ3VyZWVyaW1pc29iamVrdGkgZHVibGVlcmlkYSBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2Uga29uZmlndXJhdHNpb29uaW9iamVrdGlkZSDDvGxldmFhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLdXZhYiBtZW7DvMO8cyBsaW5naSwgbWlsbGUgYWJpbCBzYWFiIGtvbmZpZ3VyZWVyaW1pc29iamVrdGkgZHVibGVlcmlkYSBzZWxsZSBzdXVtaXZhYXRlcyBhZ2VudGlkZSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS3V2YWIgbWVuw7zDvHMgbGluZ2ksIG1pbGxlIGFiaWwgc2FhYiBzZWFkaXN0dXNvYmpla3RpIHJlZGlnZWVyaWRhIGFnZW50aWRlIGthc3V0YWphbGlpZGVzZSBzdXVtaXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpGl0YWIgbWVuw7zDvHMgbGlua2ksIG1pbGxlIGFiaWwgc2FhYiBtaW5uYSB0YWdhc2kgYWdlbnRpZGUga2FzdXRhamFsaWlkZXNlIGtvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBzdXVtaXZhYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLdXZhYiBtZW7DvMO8cyBsaW5naSwgZXQgcHJpbnRpZGEga29uZmlndXJhdHNpb29uaWVsZW1lbnRpIHNlbGxlIHN1dW1pdmFhdGVzIGFnZW5kaSBrYXN1dGFqYWxpaWRlc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpGl0YWIgbWVuw7zDvHMgbGlua2ksIG1pbGxlIGFiaWwgc2FhYiBrb25maWd1cmF0c2lvb25pZWxlbWVudGkgc3V1cmVuZGFtYSBhc2phbmR1c2xpaWRlc2Uga29uZmlndXJhdHNpb29uaWVsZW1lbmRpIMO8bGV2YWF0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6RpdGFiIGtvbmZpZ3VyZWVyaXR1ZCBlbGVtZW5kaSBhamFsdWd1ICh2YXN0dXBpZGlzZXMgasOkcmpla29ycmFzKSBhZ2VuZGkga2FzdXRhamFsaWlkZXNlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnVmFpa2ltaXNpIGthdGVnb29yaWEsIG1pcyBrdXZhdGFrc2UsIGt1aSDDvGtza2kga2F0ZWdvb3JpYSBlaSBvbGUgdmFsaXR1ZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYXRzaW9vbmllbGVtZW5kaSBpZGVudGlmaWthYXRvciwgbnQgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFZhaWtpbWlzaSBvbiBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0vDpGl2aXRhYiBDb25maWdJdGVtRmV0Y2gtaSBrdXRzdWphIGF1dG9tYWF0c2VsdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpb29uIFN0cmluZyBWw6RsamVuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9vbmkgc3RyaW5nIG1vb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaW9vbmkgdmFsbGFuZGFqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnS2FzIENvbmZpZ0l0ZW1BQ0xpIHTDpGl0bWlzdCBzYWFiIHbDpGx0aWRhLCBrb250cm9sbGlkZXMgdmFoZW3DpGx1IHbDpGxqYWxpc3RlIHPDtWx0dXZ1c2kuIFNlZSB2w7VpYiBwYXJhbmRhZGEgdm9ybWlkZSBsYWFkaW1pc2FlZ2EsIGt1aWQgdHVsZWIga2VlbGF0YSwga3VpIEFDTE1vZHVsZXNcJ2kga2FzdXRhdGFrc2UgSVRTTUNvbmZpZ0l0ZW0tIGphIEZvcm0tUmV0dXJuVHlwZXNcJ2kgcHVodWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdNaWxsaXNlZCDDvGxkYW5kbWVkIG9uIGVzaXRhdHVkIHDDpGlzZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFhbG5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a3RpaXZuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlcHJvZHVrdGlpdm5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0aWl2bmUnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgdG9sbGkgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSB0b2xsaSAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IHRvbGxpICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHRvbGxpICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTktdG9sbGluZSByaWl1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgdG9sbGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgdG9sbGkgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLXRvbGxpbmUgcmlpdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHRvbGxpICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtdG9sbGluZSByaWl1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgdG9sbGkgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHRvbGxpICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSB0b2xsaSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHRvbGxpICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHRvbGxpICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSB0b2xsaSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgdG9sbGkgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHRvbGxpICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiAxNjAsMDIgY20gKDYzIHRvbGxpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IHRvbGxpICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgdG9sbGkgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgdG9sbGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgdG9sbGkgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgdG9sbGkgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSB0b2xsaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiB0b2xsaSAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IHRvbGxpICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgdG9sbGkgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IHRvbGxpICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgdG9sbGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSB0b2xsaSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCB0b2xsaSAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSB0b2xsaSAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnUmFhbWF0dXBpZGFtaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWFkcmVzc2kgZXJhbGRhbWluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYWF0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbG9vZ3RlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdTZWFkbWUgdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQWt1IG1haHV0YXZ1cyAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0FrdSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdIb29uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzc2lsaWlkZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUga2xhc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ01haHQgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ1bDtWltc3VzIMO8aGUgZ3JhYWZpa2FrYWFyZGkga29odGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLYWFyZGkgbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS2FhcmRpbHVnZWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0thYXJkaSB0w7zDvHAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsaWVudGlkZSBzZXJ0aWZpa2FhZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0tsaWVuZGl0YXJrdmFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLbGllbmRpa2F0ZWdvb3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICdLZWxsYWFlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29vZGkgYWxsa2lyamFzdGFtaXNlIHNlcnRpZmlrYWFkaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbnZlcmVudHNpdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bHRhdHNpb29uaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnS29udGFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnVsO1dGtlIMO8aGVuZHVzdCBlZGFzaW3DvMO8amFnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0tvbnRlaW5lcml0ZSBoYWxkYW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdMZXBpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ0xlcGluZ3UgdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnTGVwaW5ndXBlcmlvb2QgYWxhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0xlcGluZ3Uga2VzdHVzIGt1bmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnSnVodG1ldGEgdGVsZWZvbiAoREVDVC10ZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLdWx1w7xoaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdMaXRzZW50c2lkZSBhcnYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0xvb21pc2Uga3V1cMOkZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0tvaGFuZGF0dWQgcmlpdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2ZWVyaXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLXNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnQXJ2ZSBrdXVww6Rldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnVGVsbGltdXNlIGt1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdHYXJhbnRpaSBrdXVww6Rldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdWw6RsamFsYXNrbWlzZSBrdXVww6Rldic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnVMO2w7ZsYXVhYXJ2dXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2t1bWVuZGkgYWxsa2lyamFzdGFtaXNlIHNlcnRpZmlrYWFkaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIHJpaXVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLXBvc3RpIHNlcnRpZmlrYWFkaWQgKFMvTUlNRSBzZXJ0aWZpa2FhZGlkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdUw7bDtmxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0zDtXBwLUlQLWFhZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdUb2V0dXNlIGzDtXBwZW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdLZWh0aXZ1c2t1dXDDpGV2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdWw6RsaW5lIGvDtXZha2V0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdUdWxlbcO8w7xyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdOw7VnYXJhdHRhIGVuZXJnaWFzYWx2ZXN0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdWb3JtaWZha3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbnRzaWlzaWxlcGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ1Rhc3V0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfDnGxkaW5lIHRlYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhYWZpa2FrYWFyZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFhZmlrYWthYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnUmlpc3R2YXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnUmlpc3R2YXJhIG11ZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1JpaXN0dmFyYSBrYWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdQZWFrb21wbGVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQLXByb3Rva29sbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZWVkaSBqYSBqdXVyZGVww6TDpHN1IGhhbGRhbWluZSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJpbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdG1lbnRpIGt1bHVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnQXJ2ZSBudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbGF2aWF0dXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCBtb25pdG9yICh2ZWRlbGtyaXN0YWxsa3V2YXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQgbW9uaXRvciAodmFsZ3VzZGlvb2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ0xhdWF0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1PDvGxlYXJ2dXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGFpdXNrcmFhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0tpaHQgMTogZsO8w7xzaWxpbmUga2lodCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdLaWh0IDI6IGFuZG1lc2lkZWtpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0tpaHQgMzogdsO1cmd1a2loaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdLaWh0IDM6IHbDtXJndWtpaGkgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdLaWh0IDQ6IFRyYW5zcG9yZGlraWh0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdLaWh0IDU6IFNlYW5zaWtpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnS2lodCA2OiBFc2l0bHVza2loaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0tpaHQgNzogUmFrZW5kdXNraWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ1JlbmRpbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGl0c2VudHNpbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaXRzZW50c2kgdsO1dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGl0c2VudHNpdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaXRzZW50c2kga2VodGl2dXNhZWcgYWxhdGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGl0c2VudHNpIGtlaHRpdnVzYWVnIGt1bmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0xpaXRpdW1yYXVkZm9zZmFhdCAoTGlGZVBPNCkgYWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMaWl0aXVtLWlvb24gYWt1IChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnTGFlbnVsZXBpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0FzdWInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnUGlra3Vza3JhYWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdUb290amEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01ha3NpbWFhbG5lIGthbmRldsO1aW1lIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNw6RsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ03DpGx1IHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpaWxpbnVtYmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlpbG5lL2ludGVncmVlcml0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNdWRlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ011ZGVsaSBraXJqZWxkdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTW9uaXRvcmkgcmVzb2x1dHNpb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ01vbml0b3JpIHN1dXJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ0hpaXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1bDtXJrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ1bDtXJndWluZm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ1bDtXJndXRlYXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdWw7VyZ3Vrb3JyYWxkdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtrZWwta2FhZG1pdW0gKE5pQ2QpIGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2tlbC1tZXRhbGxow7xkcmlpZCAoTmlNSCkgYWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ01pdHRlYXZhbGRhbWlzZSBsZXBpbmcgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdNw6Rya21payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ1Byb3RzZXNzb3JpdGUgYXJ2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ1JBTS1tb29kdWxpdGUgYXJ2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0dyYWFmaWtha2FhcnRpZGUgYXJ2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIG1vbml0b3IgKG9yZ2FhbmlsaW5lIHZhbGd1c2Rpb29kKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdUZWdldnVza3VsdWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnVGVsbGltdXNlIG51bWJlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ011dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1bDpGxqdW5kaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOLUtPT0QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVybHVzbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbmludW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb25pIHTDvMO8cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0bDvMO8c2lsaXNlZCBzw7xkYW1pa3VkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnVG9pdGV2YXJ1c3R1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ09zdGV0dWQgYWFkcmVzc2lsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdSaWl1bGkgc8O8Z2F2dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSaWl1bGnDvGtzdXNlZCAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1R1YmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta2FhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIHNlcnRpZmlrYWFkaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdNw7zDvGdpbGVwaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGlpdHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnU3VsZXR1ZCBwbGlpLXNvb2xoYXBwZSBha3UgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZWVyaWFudW1iZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyaSB0YXJrdmFyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1RlZW51c2VsZXBpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdUZWVudXNlIHNpbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnUGlzdGlrdXBlc2EgdMO8w7xwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnVGFya3ZhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdLw7VuZWxlamFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAtYWFkcmVzcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnTGFkdXN0YW1pbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdTYWx2ZXN0dXNydXVtaSBlcmFsZGlzZWlzdW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnVMO8dGFyZXR0ZXbDtXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdLb2trdXbDtXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnw5VodWtlIGtsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnTmlpZGlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0dyYWFmaWtha2FhcmRpIFJBTSBrb2trdSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnUkFNIGtva2t1IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ1B1dXRlZWtyYWFuaWdhIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIHBlc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBwZWFrb21wbGVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1ZlZWJpa2FhbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</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+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ9in2KzYsdinINis2LPYqtis2YgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn2K/YsSDZiNuM2LHYp9uM2LTigIzZh9in24wg2YLYqNmE24wg2YfZhSDYrNiz2KrYrNmIINin2YbYrNin2YUg2LTZiNiv2J8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn2KLbjNiq2YUg2b7bjNqp2LHYqNmG2K/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+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9mF2YbZgti224wg2LTYr9mHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn2b7YtNiq24zYqNin2YbbjCDZiCDZhtqv2YfYr9in2LHbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9mG2YXZiNmG2Ycg2KLYstmF2KfbjNi024wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9io2LHZhtin2YXZhyDYsduM2LLbjCDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn2KrYudmF24zYsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn2KjYp9iy2YbYtNiz2KrZhyDYtNiv2YcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn2KjYp9iy2KjbjNmG24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ9iq2LPYqi/Yqti22YXbjNmGINqp24zZgduM2KonOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn2KfYrNin2LLZhyDZhduMINiv2YfYryDYqtinINi02LHYp9uM2Lcg2KzYs9iq2KzZiCDYtNiv2Ycg2K/YsSDYrNiz2KrYrNmI24wg2KjZhNuM2Lcg2KfYsiDYsdin2KjYtyDYudin2YXZhCDYudmF2YjZhduMINin2LPYqi4g2KjYpyDYp9uM2YYg2YjbjNqY2q/bjCDYtNmF2Kcg2YXbjCDYqtmI2KfZhtuM2K8g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEINi52YbZiNin2YYg2KjZhNuM2Lcg2KjYpyDYp9uM2YYg2YbZiNi5INin2LIg2LTYsdin24zYtyDZhdin2YbZhtivIFwg2KzYs9iq2KzZiCAiKCoga2V5MSAqICYmICoga2V5MiAqKSAiINuM2KcgXCAiKCoga2V5MSAqIHx8ICoga2V5MiAqKSAiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfYp9is2KfYstmHINmF24wg2K/Zh9ivINiq2Kcg2LTYsdin24zYtyDYrNiz2KrYrNmIINi02K/ZhyDYr9ixINis2LPYqtis2YjbjCDYqNmE24zYtyDYp9iyINix2KfYqNi3INi52KfZhdmEINi52YXZiNmF24wg2KfYs9iqLiDYqNinINin24zZhiDZiNuM2pjar9uMINi02YXYpyDZhduMINiq2YjYp9mG24zYryDYqNmHINi52YbZiNin2YYg2YXYq9in2YQg2LnZhtmI2KfZhiDYqNmE24zYtyDYqNinINin24zZhiDZhtmI2Lkg2KfYsiDYtNix2KfbjNi3INmF2KfZhtmG2K8gXCDYrNiz2KrYrNmIICIoKiBrZXkxICogJiYgKiBrZXkyICopICIg24zYpyBcICIoKiBrZXkxICogfHwgKiBrZXkyICopICIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9mF2KfamNmI2YQg2LHZiNuM2K/Yp9ivINii24zYqtmFINm+24zaqdix2KjZhtiv24wg2qnZhyDYq9io2Kog2YjZgtin24zYuSDYr9ixINiq2KfYsduM2K7ahtmHINix2Kcg2K/YsSDZiNin2LPYtyDaqdin2LHYqNix24wg2qnYp9ix2LTZhtin2LMg2YHYudin2YQg2YXbjOKAjNiz2KfYstivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ9mF2K3Yr9mI2K/bjNiqINii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KrYutuM24zYsSDZhdiz24zYsduM2KfYqCDYrNiz2KrYrNmIINiv2LEg2LHYp9io2Lcg2qnYp9ix2KjYsduMINqp2KfYsdi02YbYp9izJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9iz2KfYrtiqINmIINmF2K/bjNix24zYqiDYqti52KfYsduM2YEg2KLbjNiq2YXigIzZh9in24wg2b7bjNqp2LHYqNmG2K/bjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn2K/Yp9iv2Ycg2YfYp9uMINm+24zYtCDZgdix2LYg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KjYsSDYsdmI24wg2YjbjNqY2q/bjCDYqNix2KfbjCDYtdmB2K3ZhyDZhtmF2KfbjNi0INis2LPYqtis2Ygg2KjZhNuM2LcuINio2Ycg2LnZhtmI2KfZhiDZhdir2KfZhDogXCAiVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0ID0g2LPYp9mE2JsgVGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQgPSDYotiu2LHbjNmGLiBUaWNrZXRDcmVhdGVUaW1lUG9pbnQgPSAy2JsgIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfYr9in2K/ZhyDZh9in24wg2b7bjNi0INmB2LHYtiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYqNixINix2YjbjCDZiNuM2pjar9uMINio2LHYp9uMINi12YHYrdmHINmG2YXYp9uM2LQg2KzYs9iq2KzZiCDYqNmE24zYty4g2KjZhyDYudmG2YjYp9mGINmF2KvYp9mEOiBcICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyID0gMjAxMNibIFRpY2tldENyZWF0ZVRpbWVTdGFydE1vbnRoID0gMTDYmyBUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXkgPSA02JsgVGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyID0gMjAxMNibIFRpY2tldENyZWF0ZVRpbWVTdG9wTW9udGggPSAxMdibIFRpY2tldENyZWF0ZVRpbWVTdG9wRGF5ID0gM9ibICIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfYqti52LHbjNmBINi52YXZhNuM2KfYqiDaqdmHINiv2LEg2KLZhiDbjNqpINiv2qnZhdmHINiq2YbYuNuM2YXYp9iqINiv2LEg2K/Ys9iq2LHYsyDYp9iz2Kog2K/YsSDYp9i024zYp9ihINmF2LHYqtio2Lcg2YjbjNis2KogKExpbmtPYmplY3QgOjogVmlld01vZGUgPSBcICLZvtuM2obbjNiv2YcgIikuINmE2LfZgdinINiq2YjYrNmHINiv2KfYtNiq2Ycg2KjYp9i024zYryDaqdmHINin24zZhiDYp9mC2K/Yp9mF2KfYqiDYqNin24zYryDYr9ixINio2LEg2K/Yp9i02Kog2LLbjNixIEpTINmIIENTUyDZgdin24zZhCDZh9in24wg2KvYqNiqINmG2KfZhSDaqdix2K/ZhyDYp9mG2K86IENvcmUuQWxsb2NhdGlvbkxpc3QuY3Nz2IwgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc9iMIENvcmUuVUkuVGFibGUuU29ydC5qc9iMIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2KrZiNis2Ycg2K/Yp9i02KrZhyDYqNin2LTbjNivINio2YTbjNi3INiv2LEg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfYr9iz2KrYsdiz24wg2YXZiNix2K8g2YbbjNin2LIg2KjYsdin24wg2KfYs9iq2YHYp9iv2Ycg2KfYsiDYtdmB2K3ZhyDZhtmF2KfbjNi0INiq2YjYrNmHINiv2KfYtNiq2Ycg2KjYp9i024zYryDYqNmE24zYtyDYr9ixINix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn2K/Ys9iq2LHYs9uMINmF2YjYsdivINmG24zYp9iyINio2LHYp9uMINin2LPYqtmB2KfYr9mHINin2LIg2LXZgdit2Ycg2YbZhdin24zYtCDYqtmI2KzZhyDYr9in2LTYqtmHINio2KfYtNuM2K8g2KjZhNuM2Lcg2K/YsSDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iv2LPYqtix2LPbjCDZhdmI2LHYryDZhtuM2KfYsiDYqNix2KfbjCDYp9iz2KrZgdin2K/ZhyDYp9iyINi12YHYrdmHINmG2YXYp9uM2LQg2KrZiNis2Ycg2K/Yp9i02KrZhyDYqNin2LTbjNivINio2YTbjNi3INiv2LEg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXYp9qY2YjZhCDZhtmF2KfbjCDaqdmE24wg2KjYsdin24wg2YbZhdin24zYtCDZhtmF2KfbjCDaqdmI2obaqSDYp9iyINmB2YfYsdiz2Kog2KrYutuM24zYsdin2KonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INmI24zamNqv24wg2KjZhNuM2Lcg2KjYsdin24wg2YXYsdiq2Kgg2LPYp9iy24wg2KjZhNuM2Lcg2KfYsiDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KjZhyDYt9mI2LEg2b7bjNi0INmB2LHYtiDZiNuM2pjar9uMINio2YTbjNi3INio2LHYp9uMINmF2LHYqtioINiz2KfYstuMINio2YTbjNi3INin2LIg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINio2YTbjNi3INix2KfYqNi3INi52KfZhdmELic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INmI24zamNqv24wg2KjZhNuM2Lcg2KjYsdin24wg2YXYsdiq2Kgg2LPYp9iy24wg2KjZhNuM2Lcg2KfYsiDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2KfbjNmGINi52YXZhNuM2KfYqi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INiz2YHYp9ix2LQg2KjZhNuM2Lcg2K/YsSDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuINiq2Kc6INmC2K/bjNmF24wg2KrYsduM2YYg2K/YsSDYqNin2YTYp9uMINi12YHYrdmHLiDZvtin24zbjNmGOiDYtNiv2YYg2K/YsSDYqNin2YTYp9uMINi12YHYrdmHLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2LPZgdin2LHYtCDYqNmE24zYtyDYp9iyINuM2qkg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINiv2LEg2LHYp9io2Lcg2YXYtNiq2LHbjC4g2KrYpzog2YLYr9uM2YXbjCDYqtix24zZhiDYr9ixINio2KfZhNin24wg2LXZgdit2YcuINm+2KfbjNuM2YY6INi02K/ZhiDYr9ixINio2KfZhNin24wg2LXZgdit2YcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INiz2YHYp9ix2LQg2KjZhNuM2Lcg2K/YsSDZhtiq24zYrNmHINis2LPYqtis2Ygg2KjZhNuM2Lcg2KfYsiDYp9uM2YYg2LnZhdmE24zYp9iqLiDYqtinOiDZgtiv24zZhduMINiq2LHbjNmGINiv2LEg2KjYp9mE2KfbjCDYtdmB2K3Zhy4g2b7Yp9uM24zZhjog2LTYr9mGINiv2LEg2KjYp9mE2KfbjCDYtdmB2K3Zhy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINio2Ycg2LfZiNixINm+24zYtCDZgdix2LYg2YbYtNin2YYg2K/Yp9iv2Ycg2KjZhNuM2Lcg2YjbjNqY2q/bjCDYrNiz2KrYrNmIINio2LHYp9uMINi12YHYrdmHINmG2YXYp9uM2LQg2KzYs9iq2KzZiCDYqNmE24zYty4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ9iq2LnYsduM2YEg2YXbjCDaqdmG2K8g2qnZhyDYqNmHINi32YjYsSDZvtuM2LQg2YHYsdi2INmG2LTYp9mGINiv2KfYr9mHINio2YTbjNi3INmI24zamNqv24wg2KzYs9iq2KzZiCDYqNix2KfbjCDYtdmB2K3ZhyDZhtmF2KfbjNi0INis2LPYqtis2Ygg2KjZhNuM2LcuINio2Ycg2LnZhtmI2KfZhiDZhdir2KfZhDogXCAi2qnZhNuM2K8gIiDYqNin24zYryDZhtin2YUg2LLZhduM2YbZhyDZvtmI24zYpyDYr9ixINin24zZhiDZhdmI2LHYryBcJ1hcJ9iMIFwgItmF2K3YqtmI2KcgItiMINio2KfbjNivINin2LHYsti0INiv2LHYs9iqINm+2YjbjNinINio2LPYqtmHINio2Ycg2YbZiNi5INm+2YjbjNinINiv2LHYs9iq2Iwg2YXYqtmGINix2Kcg2K/Yp9i02KrZhyDYqNin2LTYrzog24zaqSDZhdiq2YbYjCDaqdix2qnYsdmHIDogXCcxXCfYjCDYqtin2LHbjNiuIC8g2LLZhdin2YY6IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyID0gMTk3NNibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aCA9IDAx2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheSA9IDI22JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXIgPSAwMNibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGUgPSAwMNibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQgPSAwMNibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXIgPSAyMDEz2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGggPSAwMdibIFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheSA9IDI22JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91ciA9IDIz2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlID0gNTnYmyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQgPSA1OdibIFwnINmIINuM2KcgIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdCA9INmH2YHYqtmH2JsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQgPSDZgtio2YQg2KfYsi4gU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWUgPSA3IFwn2JsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KfYsdiq2YHYp9i5INio2LHYp9uMINi62YbbjCDYrNiy2KEg2YjbjNix2KfbjNi02q/YsSDZhdiq2YYg2KjYsdin24wg2KfbjNmGINi12YHYrdmHINmG2YXYp9uM2LQuINiq2LnYr9in2K8gKNm+24zaqdiz2YQpINuM2Kcg2KfYsdiy2LQg2K/Ysdi12K8gKNmG2LPYqNuMKSDYsdinINmI2KfYsdivINqp2YbbjNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn2KrYudix24zZgSDZhduMINqp2YbYryDaqdmHINin2YLZhNin2YUg2KjYsdin24wgXCfYudmF2YRcJyDYr9ixINiz2LfYrSDYs9mI2YUg2LPYp9iu2KrYp9ixIEFDTCDYr9ixINiv2LPYqtix2LMg2YfYs9iq2YbYry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KfZgtmE2KfZhSDYr9ixINiz2LfYrSDYp9mI2YQg2KfYsiDYs9in2K7Yqtin2LEgQUNMINiv2LEg2K/Ys9iq2LHYsyDZh9iz2KrZhtivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfYqti52LHbjNmBINmF24wg2qnZhtivINqp2Ycg2KfZgtmE2KfZhSDYr9ixINiz2LfYrSDYr9mI2YUg2KfYsiDYs9in2K7Yqtin2LEgQUNMINiv2LEg2K/Ys9iq2LHYsyDZh9iz2KrZhtivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9ii24zYqtmFINm+24zaqdix2KjZhtiv24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfZiNi22LnbjNiqINmG2LXYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICfZiNi22LnbjNiqINmG2LXYqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICfYqtqp2KvbjNixJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfYrdis2YUg2K/Ysdiu2YjYp9iz2Kog2KfYsiDZiNuM2pjar9uMINmH2KfbjCDYudmF2YQg2KjYsdin24wg2LjYp9mH2LEg2LnYp9mF2YQg2KjZhyDaqdin2LEg2KjYsSDYsdmI24wg2KjbjNi0INin2LIg2K/Ysdiu2YjYp9iz2Kog2K/YsSDbjNqpINiy2YXYp9mGINmC2KfYr9ixINmF24wg2LPYp9iy2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfZiNuM2pjar9uMINmH2KfbjCDYudmF2YQg2K3YrNmFINiv2LHYrtmI2KfYs9iqINiq2YbZh9inINio2LHYp9uMINqv2LHZiNmHINmH2KfbjCDYsNqp2LEg2LTYr9mHINix2Kcg2YLYp9iv2LEg2YXbjCDYs9in2LLYryAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSDYq9io2Kog2YbYp9mFINmF2KfamNmI2YQg2KjYsdin24wg2YTYp9uM2YcgaW52b2tlciDYp9iz2KouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSDYq9io2Kog2YbYp9mFINmF2KfamNmI2YQg2KjYsdin24wg2YTYp9uM2YcgaW52b2tlciDYp9iz2KouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2Ug2KvYqNiqINmG2KfZhSDZhdin2pjZiNmEINio2LHYp9uMINmE2KfbjNmHIGludm9rZXIg2KfYs9iqLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICfYotuM2KrZhSDZvtuM2qnYsdio2YbYr9uMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ9mI2LbYuduM2Kog2LHYrtiv2KfYryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn2YjYtti524zYqiDYsdiu2K/Yp9ivJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ9it2K/Yp9qp2KvYsSDYqti52K/Yp9ivINiv2LHYrtmI2KfYs9iqINiv2LEg2YbYqtuM2KzZhyDYp9uM2YYg2qnYp9ixINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2YXbjCDYtNmI2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2KrYudiv2KfYryDYqNmE24zYtyDYr9ixINmH2LEg2LXZgdit2Ycg2KfYsiDbjNqpINmG2KrbjNis2Ycg2KzYs9iq2KzZiCDYr9ixINix2KfYqNi3INi52KfZhdmEINmG2YXYp9uM2LQg2K/Yp9iv2Ycg2LTZiNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfYqti52K/Yp9ivINio2YTbjNi3INiv2LEg2YfYsSDYtdmB2K3ZhyDYp9iyINuM2qkg2YbYqtuM2KzZhyDYrNiz2KrYrNmIINiv2LEg2LHYp9io2Lcg2YXYtNiq2LHbjCDZhtmF2KfbjNi0INiv2KfYr9mHINmF24wg2LTZiNivLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn2b7bjNi0INmG2YXYp9uM2LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9m+2KfYsdin2YXYqtix2YfYp9uM24wg2KjYsdin24wg2q/YsdmI2YfigIzZh9in24wg2K/Ys9iq2LHYs9uMINmG2YXZiNmG2Ycg2YXYsdio2YjYtyDYqNmHINmI24zamNqv24zigIzZh9in24wg2YHZh9ix2LPYqiDYudmF2YjZhduMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICfYp9mG2KzYp9mFINi52YXZhCDZvtuM2qnYsdio2YbYr9uMINio2LHYp9uMINmH2LEg2LHZiNuM2K/Yp9ivICjYqNmHINi52YbZiNin2YYg24zaqSBJbnZva2VyKSDYqNix2KfbjCDZh9ixINin2LIgd2Vic2VydmljZSDZvtuM2qnYsdio2YbYr9uMINi02K/ZhyDYp9iz2KouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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/YsSDZhdmG2YjbjCDYq9io2Kog2YbYp9mFINuM2qkg2KjZhNuM2Lcg2KjZhyDbjNqpINmB2LHYp9uM2YbYryDYr9ixINmG2LjYsSDYstmI2YUg2KjZhNuM2Lcg2LHYp9io2Lcg2LnYp9mF2YQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn2YbYtNin2YYg2YXbjCDYr9mH2K8g24zaqSDZhNuM2YbaqSDYr9ixINmF2YbZiNuMINir2KjYqiDZhtin2YUg24zaqSDYqNmE24zYtyDYqNmHINuM2qkg2YHYsdin24zZhtivINiv2LEg2YbYuNixINiy2YjZhSDYqNmE24zYtyDYsdin2KjYtyDYudin2YXZhC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9iq2KfYsduM2K4g2KjZhNuM2LcgKNmF2LnaqdmI2LMg2K/Ys9iq2YjYsSDYr9in2K8pINiv2LEg2LHYp9io2Lcg2LnYp9mF2YQg2YbYtNin2YYg2YXbjCDYr9mH2K8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9qp2YTYp9izJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+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+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn2LPYp9iu2KrZhdin2YYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9mI2KfYs9i3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ9iz24zigIzZvtuM4oCM24zZiCc7CiAgICAkU2VsZi0+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+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfYsdmI2YXbjNiy24wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn2YbYsdmFINin2YHYstin2LEg2YXYrNin2YbbjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn2LXZgdit2Ycg2qnZhNuM2K8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9qp24zZgduMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+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+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZhbGl0c2UgdMOkbcOkIGtvbmZpZ3Vyb2ludGlrb2h0YSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1N1b3JpdGEgaGFrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdNecO2cyBoYWt1IGFpZW1taXNzYSB2ZXJzaW9pc3NhPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+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+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpbyBtZXJra2lqb25vJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ1ZpcmhlIG3DpMOkcml0ZWxtaWVuIHN5bmtyb25vaW5uaXNzYS4gVGFya2lzdGEgbG9raS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdTaW51bGxhIG9uIElUU01Db25maWdJdGVtLW3DpMOkcml0eWtzacOkLCBqb2l0YSBlaSBvbGUgc3lua3Jvbm9pdHUuIE90YSBrw6R5dHTDtsO2biBJVFNNQ29uZmlnSXRlbS1keW5hYW1pc3RlbiBrZW50dGllbiBtdXV0b2tzZXQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdWYW5oZW50dW51dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0h1b2x0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1N1dW5uaXRlbHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ0tvcmphdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ0Vsw6Rra2VlbGzDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdBcnZvc3RlbHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RpL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdZbGVpc2thdHNhdXMgamEgdmFodmlzdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0x1b2traWVuL3Jvb2xpZW4gamEgbmlpaGluIGxpaXR0eXZpZW4ga2VudHRpZW4gdHVvbWluZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdMdW9rYW4gdHVvbm5pbiBhaWthbmEgdGFwYWh0dWkgdmlyaGUuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBQaWlsb3RldHR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBLdXZhc3NhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNYWhkb2xsaXN0YWEgbGFhamVubmV0dXQgaGFrdWVoZG90IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2hkZWhhdXNzYS4gVMOkbcOkbiBvbWluYWlzdXVkZW4gYXZ1bGxhIHZvaXQgaGFrZWEgZXNpbS4ga29uZmlndXJhYXRpb2VsZW1lbnRpbiBuaW1lw6QgdMOkbGxhaXNpbGxhIGVoZG9pbGxhIGt1dGVuICIoKmtleTEqJiYqa2V5MiopIiB0YWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNYWhkb2xsaXN0YWEgbGFhamVubmV0dXQgaGFrdWVoZG90IGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpG4ga29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYXVzc2EuIFTDpG3DpG4gb21pbmFpc3V1ZGVuIGF2dWxsYSB2b2l0IGhha2VhIGVzaW0uIGtvbmZpZ3VyYWF0aW9lbGVtZW50aW4gbmltZcOkIHTDpGxsYWlzaWxsYSBlaGRvaWxsYSBrdXRlbiAiKCprZXkxKiYmKmtleTIqKSIgdGFpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnTXnDtm5uZXR5dCBDSTp0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdBc2lha2FzeXJpdHlrc2VsbGUgb3NvaXRldHV0IENJOnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdBc2lha2Fza8OkeXR0w6Rqw6RsbGUgbcOkw6RyaXRldHl0IENJOnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREItYXNldHVrc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdUYXJraXN0YSwgZXR0w6QgbmltaSBvbiB5a3NpbMO2bGxpbmVuIHZhaW4gc2FtYW4gQ29uZmlnSXRlbS1sdW9rYW4gKFwnY2xhc3NcJykgc2lzw6RsbMOkIHRhaSBnbG9iYWFsaXN0aSAoXCdnbG9iYWxcJyksIG1pa8OkIHRhcmtvaXR0YWEsIGV0dMOkIGpva2FpbmVuIG9sZW1hc3NhIG9sZXZhIENvbmZpZ0l0ZW0gb3RldGFhbiBodW9taW9vbiwga3VuIGV0c2l0w6TDpG4ga2Frc29pc2thcHBhbGVpdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWYWxpdHNlIG1vZHV1bGkgbmltZcOkbWlzc3V1bm5pdGVsbWFuIGvDpHl0dMO2w7Zub3R0b2EgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnVmFsaXRzZSBtb2R1dWxpIG51bWVyb2rDpHJqZXN0ZWxtw6RuIGvDpHl0dMO2w7Zub3R0b2EgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWYWxpdHNlIG1vZHV1bGksIGpva2Egb3R0YWEga8OkeXR0w7bDtm4gdmVyc2lvam9ub2rDpHJqZXN0ZWxtw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1ZhbGl0c2UgYXR0cmlidXV0aXQsIGpvdGthIGvDpHlubmlzdMOkdsOkdCB1dWRlbiB2ZXJzaW9uIGx1b21pc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdWYWxpdHNlIGx1b2thdCwgam90a2Egb3NvaXRldGFhbiB0w6RsbGUgbcOkw6RyaXR5c2tvaGRlbHVva2FsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnU2FyYWtrZWVuIENvbmZpZ0l0ZW0ta29odGVlbiBzdW9kYXR0aW1ldCBDb25maWdJdGVtIE92ZXJ2aWV3IC1rb2h0ZWVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdTYXJha2tlZXQsIGpvaXRhIHZvaWRhYW4gc3VvZGF0dGFhIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWlkZW4geWxlaXNrYXRzYXVrc2Vzc2EuIEh1b21hdXR1czogVmFpbiBDb25maWcgSXRlbSAtYXR0cmlidXV0aXQgamEgZHluYWFtaXNldCBrZW50w6R0IChEeW5hbWljRmllbGRfTmFtZVgpIG92YXQgc2FsbGl0dHVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnTcOkw6RyaXR5c2tvaHRlZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ03DpMOkcml0eXNrb2h0ZWVuIGxpc8Okw6RtaW5lbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdNw6TDpHJpdHlza29odGVlbiBtdW9ra2F1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdMOkIGtvaHRlZW4gdGFwYWh0dW1hbW9kdXVsaSwgam9rYSBtYWhkb2xsaXN0YWEga2lyamFhbWlzZW4gaGlzdG9yaWFhbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnS29uZmlnLWtvaHRlZW4gdGFwYWh0dW1hbW9kdXVsaSwgam9rYSBww6Rpdml0dMOkw6Qga29uZmlnLWtvaHRlZXQgbmlpZGVuIG55a3lpc2VlbiBtw6TDpHJpdGVsbcOkw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ03DpMOkcml0w6Qga29odGVlbiBoaXN0b3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnTcOkw6RyaXR5c2tvaHRlZW4gdHVsb3N0dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnTcOkw6RyaXTDpCBrb2h0ZWVuIHpvb21hdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbS1wdXVuw6RreW3DpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnU2V1cmFhdmllbiBsdW9ra2llbiBDb25maWdJdGVtcy1lbGVtZW50dGVqw6QgZWkgdGFsbGVubmV0YSBFbGFzdGljc2VhcmNoLXBhbHZlbGltZWxsZS4gSm90dGEgdMOkdMOkIHZvaWRhYW4gc292ZWx0YWEgb2xlbWFzc2Egb2xldmlpbiBDSTpoaW4sIENJLXNpaXJ0byBvbiBzdW9yaXRldHRhdmEga29uc29saW4ga2F1dHRhIHTDpG3DpG4gdmFpaHRvZWhkb24gbXV1dHRhbWlzZW4gasOkbGtlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zLWtvaHRlaXRhLCBqb2lsbGEgb24gc2V1cmFhdmF0IGvDpHl0dMO2w7Zub3R0b3RpbGF0LCBlaSB0YWxsZW5uZXRhIEVsYXN0aWNzZWFyY2gtcGFsdmVsaW1lbGxlLiBKb3R0YSB0w6R0w6Qgdm9pZGFhbiBzb3ZlbHRhYSBvbGVtYXNzYSBvbGV2aWluIENJOmhpbiwgQ0ktc2lpcnRvIG9uIHN1b3JpdGV0dGF2YSBrb25zb2xpbiBrYXV0dGEgdMOkbcOkbiB2YWlodG9laGRvbiBtdXV0dGFtaXNlbiBqw6Rsa2Vlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXJvaW50aSBLb2h0ZWVuIHJhamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3Vyb2ludGkgS29odGVlbiByYWphIHNpdnVhIGtvaHRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlndXJhYXRpb25oYWxsaW5uYW4gdGlldG9rYW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03DpMOkcml0eXNrb2h0ZWVuIGlydG90YXZhcmFtb2R1dWxpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHlza29odGVlbiBoYWt1IGFnZW50dGlsaWl0dHltw6RuIHRhdXN0YXJlaXRpdHRpbWVlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnTHVvIGphIGhhbGxpdHNlIG3DpMOkcml0dGVseWrDpCBtw6TDpHJpdHlza29odGVpbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0x1byBsaXBwdWphIENvbmZpZ0l0ZW1zLWtvaHRlaWxsZSB0aWV0dHlpbsOkIGFqYW5rb2h0aW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdBc2lha2thYXQgdm9pdmF0IG7DpGhkw6QgaGlzdG9yaWFsbGlzZXQgQ0ktdmVyc2lvdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQXNpYWtrYWlsbGEgb24gbWFoZG9sbGlzdXVzIHZhaWh0YWEgbWFudWFhbGlzZXN0aSBoaXN0b3JpYWxsaXN0ZW4gQ0ktdmVyc2lvaWRlbiB2w6RsaWxsw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnT2xldHVzYXJ2b2lzZXQgdGllZG90LCBqb2l0YSBrw6R5dGV0w6TDpG4gbcOkw6RyaXR0ZWVuIG3DpMOkcml0dGVseWtvaHRlZW4gaGFrdW7DpHl0w7Zzc8OkLiBFc2ltZXJra2k6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnT2xldHVzYXJ2b2lzZXQgdGllZG90LCBqb2l0YSBrw6R5dGV0w6TDpG4gbcOkw6RyaXR0ZWVuIG3DpMOkcml0dGVseWtvaHRlZW4gaGFrdW7DpHl0w7Zzc8OkLiBFc2ltZXJra2k6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdNw6TDpHJpdMOkIHRvaW1pbm5vdCwgam9pc3NhIGFzZXR1c3BhaW5pa2Ugb24ga8OkeXRldHTDpHZpc3PDpCBsaW5raXRldHR5amVuIG9iamVrdGllbiB3aWRnZXRpc3PDpCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBIdW9tYWEsIGV0dMOkIG7DpGlsbMOkIHRvaW1pbm5vaWxsYSBvbiBvbHRhdmEgcmVraXN0ZXLDtmlkeXQgc2V1cmFhdmF0IEpTLSBqYSBDU1MtdGllZG9zdG90OiBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGphIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ03DpMOkcml0w6QgVGVtcGxhdGU6OlRvb2xraXQtc2tlZW1hIHZlcnNpb2pvbm9qYSB2YXJ0ZW4uIEvDpHl0ZXTDpMOkbiB2YWluLCBqb3MgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIC1tb2R1dWxpbiBhcnZva3NpIG9uIGFzZXRldHR1IFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ03DpMOkcml0w6Qgam91a2tvIGVodG9qYSwgam9pZGVuIG11a2Fpc2VzdGkgYXNpYWthcyBzYWEgbsOkaGTDpCBrb25maWd1cm9pbnRpa29odGVlbi4gRWhkb3Qgdm9pZGFhbiB2YWxpbm5haXNlc3RpIHJham9pdHRhYSB0aWV0dHlpaGluIGFzaWFrYXNyeWhtaWluLiBOaW1pIG9uIGFpbm9hIHBha29sbGluZW4gbcOkw6RyaXRlLiBKb3MgbXVpdGEgdmFpaHRvZWh0b2phIGVpIGFubmV0YSwga2Fpa2tpIGtvbmZpZ3Vyb2ludGlrb2h0ZWV0IG7DpGt5dsOkdCBreXNlaXNlc3PDpCBsdW9rYXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdmFhZGl0dXQgb2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVpZGVuIHBvaXN0YW1pc2VlbiB5bGVpc2VuIGvDpHl0dMO2bGlpdHR5bcOkbiBhdnVsbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHZhYWRpdHV0IG9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiBoYWtlbWlzZWVuIHlsZWlzZW4ga8OkeXR0w7ZsaWl0dHltw6RuIGF2dWxsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgdmFhZGl0dXQgb2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVpZGVuIGhha3V1biB5bGVpc2VuIGvDpHl0dMO2bGlpdHR5bcOkbiBhdnVsbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHZhYWRpdHV0IG9pa2V1ZGV0IElUU00ta29rb29ucGFub2tvaHRlaWRlbiBtw6TDpHJpdHTDpG1pc2VlbiB5bGVpc2VuIGvDpHl0dMO2bGlpdHR5bcOkbiBhdnVsbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgeWxlaXNrYXRzYXVzbW9kdXVsaW4sIGpva2EgbsOkeXR0w6TDpCBrb2tvb25wYW5va29oZGVsdWV0dGVsb24gcGllbmVuIG7DpGt5bcOkbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCwgb25rbyBsaW5raW4gdHl5cGluIG1lcmtpbm7DpHQgbsOkeXRldHTDpHbDpCBzb2xtdWplbiB5aHRleWtzaXNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHPDpMOkbm7DtmxsaXNldCBsYXVzZWtrZWV0IGVyaWtzZWVuIGt1bGxla2luIENvbmZpZ0l0ZW0tbHVva2FsbGUgQ29uZmlnSXRlbS1uaW1lbiB0YXJraXN0YW1pc2Vrc2kgamEgdmFzdGFhdmllbiB2aXJoZWlsbW9pdHVzdGVuIG7DpHl0dMOkbWlzZWtzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGvDpHl0ZXR0w6R2aXNzw6Qgb2xldmF0IENJLXNhcmFra2VldCBrb25maWd1cm9pbnRpa29odGVlbiB5bGVpc2thdHNhdWtzZXNzYSBDSS1sdW9rYW4gbXVrYWFuLiBKb2thaXNlbiBtZXJraW5uw6RuIG9uIGtvb3N0dXR0YXZhIGx1b2thbiBuaW1lc3TDpCBqYSBreXNlaXNlbiBsdW9rYW4ga8OkeXRldHTDpHZpc3PDpCBvbGV2aWVuIGtlbnR0aWVuIGpvdWtvc3RhLiBEeW5hYW1pc3RlbiBrZW50dGllbiBtZXJraW50w7ZqZW4gb24gbm91ZGF0ZXR0YXZhIGthYXZhYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlbiBrb25maWd1cm9pbnRpa29oZGV0dGEga29za2V2YW4gYXR0cmlidXV0aW4gYWdlbnR0aWxpaXR0eW3DpG4ga29uZmlndXJvaW50aWtvaGRlaGFrdXR1bG9rc2VuIGxhaml0dGVsdWEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlbiBrb25maWd1cmFhdGlva29oZGVhdHRyaWJ1dXRpbiBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGFrdXR1bG9rc2VuIGxhaml0dGVsdWEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qgb2xldHVzYXJ2b2lzZW4ga29uZmlndXJhYXRpb2tvaHRlZW4gYXR0cmlidXV0aW4ga29uZmlndXJhYXRpb2tvaHRlZW4gbGFqaXR0ZWx1YSB2YXJ0ZW4gdMOkbcOkbiB0b2ltaW5ub24ga29uZmlndXJhYXRpb2tvaHRlZW4gaGFrdXR1bG9rc2Vzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gb2xldHVzasOkcmplc3R5a3NlbiBhZ2VudHRpbGlpdHR5bcOkbiBrb25maWd1cmFhdGlva29odGVpZGVuIGhha3V0dWxva3Npc3NhLiBZbMO2czogdmFuaGluIHDDpMOkbGxpbW3DpGlzZW7DpC4gQWxhczogdXVzaW4gb24gcMOkw6RsbGltbcOkaXNlbsOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBrb25maWd1cmFhdGlva29odGVpZGVuIG9sZXR1c2rDpHJqZXN0eWtzZW4gYXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cmFhdGlva29odGVpZGVuIGhha3V0dWxva3Npc3NhLiBZbMO2czogdmFuaGluIHDDpMOkbGxpbW3DpGlzZW7DpC4gQWxhczogdXVzaW4gb24geWxow6TDpGxsw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qga29uZmlndXJhYXRpb2tvaHRlaWRlbiBvbGV0dXNqw6RyamVzdHlrc2VuIHTDpG3DpG4gdG9pbWlubm9uIGtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGFrdXR1bG9rc2Vzc2EuIFlsw7ZzOiBWYW5oaW4gb24geWxow6TDpGxsw6QuIEFsYXM6IHV1c2luIG9uIHlsaMOkw6RsbMOkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBDSTppZGVuIG9sZXR1c3NhcmFra2VldCwgam90a2EgbsOka3l2w6R0IGtvbmZpZ3Vyb2ludGlrb2h0ZWVuIHlsZWlza2F0c2F1a3Nlc3NhIENJLWx1b2thc3RhIHJpaXBwdWVuLiBKb2thaXNlbiBtZXJraW5uw6RuIG9uIGtvb3N0dXR0YXZhIGx1b2thbiBuaW1lc3TDpCBqYSBreXNlaXNlbiBsdW9rYW4ga8OkeXRldHTDpHZpc3PDpCBvbGV2aWVuIGtlbnR0aWVuIGpvdWtvc3RhLiBEeW5hYW1pc3RlbiBrZW50dGllbiBtZXJraW50w7ZqZW4gb24gbm91ZGF0ZXR0YXZhIGthYXZhYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdNw6TDpHJpdHTDpMOkIG7DpHl0ZXR0w6R2aWVuIHN1aHRlaWRlbiBvbGV0dXNzeXZ5eWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBvbGV0dXNhcnZvaXNlc3RpIG7DpHl0ZXR0w6R2w6RuIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIGhha3VhdHRyaWJ1dXRpbiBrb25maWd1cmFhdGlva29odGVlbiBoYWt1bsOkeXTDtmxsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6Qgb2xldHVzYXJ2b2lzZXN0aSBuw6R5dGV0dMOkdsOkbiBrb25maWd1cmFhdGlva29odGVlbiBoYWt1YXR0cmlidXV0aW4ga29uZmlndXJhYXRpb2tvaHRlZW4gaGFrdW7DpHl0w7ZsbGUuIEVzaW1lcmtraTogIkF2YWluIiBvbiBvbHRhdmEgZHluYWFtaXNlbiBrZW50w6RuIG5pbWkgdMOkc3PDpCB0YXBhdWtzZXNzYSBcJ1hcJywgIlNpc8OkbHTDtiIgb24gb2x0YXZhIGR5bmFhbWlzZW4ga2VudMOkbiBhcnZvIGR5bmFhbWlzZW4ga2VudMOkbiB0eXlwaXN0w6QgcmlpcHB1ZW4sIFRla3N0aTogXCd0ZWtzdGlcJywgUHVkb3R1c3ZhbGlra286IFwnMVwnLCBQw6RpdsOkbcOkw6Ryw6QvQWlrYTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGphIHRhaSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGx1b2thbiBcJ0lUU01Db25maWdJdGVtXCcgb2xldHVzYXJ2b2lzZW4gYWxpb2JqZWt0aW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIGvDpHl0ZXR0w6R2aXNzw6Qgb2xldmF0IENJLXNhcmFra2VldCBrb25maWd1cm9pbnRpa29odGVlbiB5bGVpc2thdHNhdWtzZXNzYSBDSS1sdW9rYW4gbXVrYWFuLiBKb2thaXNlbiBtZXJraW5uw6RuIG9uIGtvb3N0dXR0YXZhIGx1b2thbiBuaW1lc3TDpCBqYSBreXNlaXNlbiBsdW9rYW4ga8OkeXRldHTDpHZpc3PDpCBvbGV2aWVuIGtlbnR0aWVuIGpvdWtvc3RhLiBEeW5hYW1pc3RlbiBrZW50dGllbiBtZXJraW50w7ZqZW4gb24gbm91ZGF0ZXR0YXZhIGthYXZhYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIHTDpG3DpG4gbsOkeXTDtm4gdGVrc3RpZWRpdG9yaWtvbXBvbmVudGluIGtvcmtldWRlbi4gU3nDtnTDpCBudW1lcm8gKHBpa3NlbGnDpCkgdGFpIHByb3NlbnR0aWx1a3UgKHN1aHRlZWxsaW5lbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgaGFsbGludGFrw6R5dHTDtmxpaXR0eW3DpG4gQ0ktbcOkw6RyaXR0ZWx5ZWRpdG9yaW4gcml2aWVuIG3DpMOkcsOkbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCB0YXBhaHR1bWF0aWxvamVuIGrDpHJqZXN0eWtzZW4ga29ya2Vhc3RhIChlc2ltLiBzeWTDpG5rb2h0YXVzKSBtYXRhbGFhbiAoZXNpbS4gdG9pbWlubmFsbGluZW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgYXNpYWFua3V1bHV2YXQga8OkeXR0w7bDtm5vdHRvdGlsYXQsIGpvaXNzYSBsaW5raXRldHl0IGxpcHV0IHZvaXZhdCB2YWlrdXR0YWEgQ0k6biB0aWxhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBBZ2VudElUU01Db25maWdJdGVtLW7DpHl0w7ZuIGhha3VyYWphbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gtbsOkeXTDtm4gaGFrdXJhamFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS1uw6R5dMO2biBoYWt1cmFqYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLW7DpHl0w7ZuIGhha3VyYWphbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBrYWlra2llbiBDSS1sdW9ra2llbiB5aHRleXN0aWV0b3RhdWx1a29uIG1vbml0YWhvaXNlc3NhIG7DpGt5bcOkc3PDpCBuw6RreXbDpHQgQ0ktc2FyYWtrZWV0LiBKb3MgbWVya2ludMOkw6QgZWkgb2xlLCBuw6R5dGV0w6TDpG4gb2xldHVzc2FyYWtrZWV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCBsaW5ra2l0YXVsdWtvbiBtb25pdGFob2lzZXNzYSBuw6RreW3DpHNzw6QgbsOka3l2w6R0IENJLXNhcmFra2VldCBDSS1sdW9rYXN0YSByaWlwcHVlbi4gSm9rYWlzZW4gbWVya2lubsOkbiBldHVsaWl0dGVlbsOkIG9uIG9sdGF2YSBsdW9rYW4gbmltaSBqYSBrYWtzb2lzcGlzdGUgKGVzaW0uIENvbXB1dGVyOjopLiBPbiBvbGVtYXNzYSBtdXV0YW1pYSBDSS1hdHRyaWJ1dXR0ZWphLCBqb3RrYSBvdmF0IHlodGVpc2nDpCBrYWlraWxsZSBDSTppbGxlIChlc2ltZXJra2kgbHVva2FuIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBZa3NpdHTDpGlzdGVuIENJLWF0dHJpYnV1dHRpZW4gbsOkeXR0w6RtaXNla3NpIENJLW3DpMOkcml0dGVseXNzw6QgbcOkw6RyaXRlbGx5bGzDpCB0YXZhbGxhIG9uIGvDpHl0ZXR0w6R2w6Qgc2V1cmFhdmFhIGthYXZhYSAoZXNpbWVya2tpIGx1b2thbiBDb21wdXRlciBvc2FsdGEpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSm9zIENJLWx1b2thbGxlIGVpIG9sZSBtZXJraW50w6TDpCwgbsOkeXRldMOkw6RuIG9sZXR1c3NhcmFra2VldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkLCBtaXRrw6Qga29odGVldCBvdmF0IGvDpHl0ZXR0w6R2aXNzw6QgIkFjdGlvbiIgLXRvaW1pbnRvYSB2YXJ0ZW4gSVRTTSBDb25maWcgSXRlbSBBQ0wgLXJha2VudGVlbiBrb2xtYW5uZWxsYSB0YXNvbGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ03DpMOkcml0dMOkw6QsIG1pdGvDpCBrb2h0ZWV0IG92YXQga8OkeXRldHTDpHZpc3PDpCBJVFNNIENvbmZpZyBJdGVtIEFDTCAtcmFrZW50ZWVuIGVuc2ltbcOkaXNlbGzDpCB0YXNvbGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkLCBtaXRrw6Qga29odGVldCBvdmF0IGvDpHl0ZXR0w6R2aXNzw6QgSVRTTSBDb25maWcgSXRlbSBBQ0wgLXJha2VudGVlbiB0b2lzZWxsYSB0YXNvbGxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNw6TDpHJpdHTDpMOkLCBtaW5rw6QgdHl5cHBpbmVuIGxpbmtraSAobmltZXR0eSB0aWtldGluIG7DpGvDtmt1bG1hc3RhKSB2b2kgdmFpa3V0dGFhIGxpbmtpdGV0eW4gQ0k6biB0aWxhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTcOkw6RyaXR0w6TDpCwgbWlua8OkIHR5eXBwaW5lbiBsaXBwdSB2b2kgdmFpa3V0dGFhIGxpbmtpdGV0eW4gQ0k6biB0aWxhYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnTcOkw6RyaXRlbG3DpG4gcMOkaXZpdHlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdQb2lzdGEga29uZmlndXJhYXRpb2VsZW1lbnR0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0vDpHl0dMO2w7Zub3RvbiB0aWxhIFbDpHJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdLYWtzb2lza2FwcGFsZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYWFtaXN0ZW4ga2VudHRpZW4gdGFwYWh0dW1hbW9kdXVsaSwgam9rYSBtZXJraXRzZWUga29uZmlndXJhYXRpb2tvaHRlZW4gbcOkw6RyaXRlbG3DpHQgZXDDpHN5bmtyb25pc2lrc2ksIGpvcyBkeW5hYW1pc2lhIGtlbnR0acOkIHNpc8OkbHTDpHbDpHQga2VudMOkdCBtdXV0dHV2YXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hYW1pc2V0IGtlbnTDpHQsIGpvdGthIG7DpGt5dsOkdCBhc2lhbWllaGVuIGvDpHl0dMO2bGlpdHR5bcOkbiBJVFNNLWxpc8Oka2VudHTDpG7DpHl0w7Zzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hYW1pc2V0IGtlbnTDpHQsIGpvdGthIG7DpGt5dsOkdCBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2h0ZWVuIHlsZWlza2F0c2F1c27DpHl0w7Zzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hYW1pc2V0IGtlbnTDpHQsIGpvdGthIG7DpGt5dsOkdCBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVlbiBoYWt1bsOkeXTDtnNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ090dGFhIGvDpHl0dMO2w7ZuIGtvbmZpZ3VyYWF0aW9rb2h0ZWVuIG1hc3NhdG9pbWludG8tb21pbmFpc3V1ZGVuLCBqb25rYSBhdnVsbGEgYWdlbnRpbiBldHVzaXZ1IHZvaSBrw6RzaXRlbGzDpCB1c2VhbXBhYSBrdWluIHlodMOkIGtvbmZpZ3VyYWF0aW9rb2hkZXR0YSBrZXJyYWxsYWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnT3R0YWEga8OkeXR0w7bDtm4gbcOkw6RyaXR5c2tvaHRlaWRlbiBtYXNzYXRvaW1pbnRhdG9pbWlubm9uIHZhaW4gbHVldGVsbHVpbGxlIHJ5aG1pbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdPdHRhYSBrw6R5dHTDtsO2biB0YWkgcG9pc3RhYSBrw6R5dMO2c3TDpCB0b2ltaW5ub24sIGpvbGxhIHRhcmtpc3RldGFhbiBJVFNNIG9uZmlndXJhdGlvbiAta29odGVpZGVuIHlrc2lsw7ZsbGlzZXQgbmltZXQuIEVubmVuIHTDpG3DpG4gdmFpaHRvZWhkb24gb3R0YW1pc3RhIGvDpHl0dMO2w7ZuIHNpbnVuIHR1bGlzaSB0YXJraXN0YWEgasOkcmplc3RlbG3DpHNpIGpvIG9sZW1hc3NhIG9sZXZpZW4ga29uZmlndXJvaW50aWVsZW1lbnR0aWVuIGtha3NvaXNrYXBwYWxlaWRlbiBuaW1ldC4gVm9pdCB0ZWhkw6QgdMOkbcOkbiBrb25zb2xpbiBrb21lbm5vbGxhIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnVGFwYWh0dW1hbW9kdXVsaSwgam9rYSBhc2V0dGFhIGtvbmZpZ2l0ZW0tdGlsYW4gdGlja2V0LWNvbmZpZ2l0ZW0tbGlua2lsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0tva290ZWtzdGloYXVzc2Ega8OkeXRldHTDpHbDpHQga29uZmlndXJhYXRpb2tvaHRlZW4gaW5kZWtzaW4ga2VudMOkdC4gS2VudMOkdCB0YWxsZW5uZXRhYW4gbXnDtnMsIG11dHRhIG5lIGVpdsOkdCBvbGUgcGFrb2xsaXNpYSB5bGVpc2VuIHRvaW1pbm5hbGxpc3V1ZGVuIGthbm5hbHRhLiBMaWl0ZXRpZWRvc3RvamVuIHNpc8OkbGx5dHTDpG1pbmVuIHZvaWRhYW4gZXN0w6TDpCBhc2V0dGFtYWxsYSBtZXJraW5uw6RuIGFydm9rc2kgMCB0YWkgcG9pc3RhbWFsbGEgc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdNw6TDpHJpdHlza29oZGVpbmRla3NpaW4gdGFsbGVubmV0dXQga2VudMOkdCwgam9pdGEga8OkeXRldMOkw6RuIG11dWh1biBrdWluIGtva290ZWtzdGloYWt1dW4uIFTDpHlkZWxsaXNlbiB0b2ltaW5uYWxsaXN1dWRlbiBrYW5uYWx0YSBrYWlra2kga2VudMOkdCBvdmF0IHBha29sbGlzaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnSm9rYWlzZWxsZSB2ZXJra29wYWx2ZWx1bGxlIChhdmFpbikgdm9pZGFhbiBtw6TDpHJpdGVsbMOkIGpvdWtrbyBsdW9ra2lhIChhcnZvKSwgam9paGluIHR1b250aSBvbiByYWpvaXRldHR1LiBLYWlraWxsZSB2YWxpdHVpbGxlIGx1b2tpbGxlIHRhaSBrYWlraWxsZSBvbGVtYXNzYSBvbGV2aWxsZSBsdW9raWxsZSBvbiB2YWxpdHRhdmEgdHVubmlzdGF2YXQgYXR0cmlidXV0aXQga3V0c3VqYW4ga29uZmlndXJhYXRpb3NzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZS1tb2R1dWxpbiByZWtpc3RlcsO2aW50aSBDb25maWdJdGVtRmV0Y2gta3V0c3VrZXJyb3N0YSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZS1tb2R1dWxpbiByZWtpc3RlcsO2aW50aSBDb25maWdJdGVtRmV0Y2gta3V0c3VrZXJyb3N0YSB2YXJ0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UtbW9kdXVsaW4gcmVraXN0ZXLDtmludGkgQ29uZmlnSXRlbUZldGNoLWt1dHN1a2Vycm9zdGEgdmFydGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNLW3DpMOkcml0eXNrb2h0ZWVuIHlsZWlza2F0c2F1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTaXPDpGx0w6TDpCBrw6R5dHTDtsO2bm90dG90aWxhdCBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2hkZWhhdXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2lzw6RsdMOkw6QgdmFhcmF0aWxhbnRlaWRlbiB0aWxhdCBhc2lha2thYW4ga8OkeXR0w7ZsaWl0dHltw6RuIGtvbmZpZ3Vyb2ludGlrb2hkZWhhdXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnVMOkbcOkbiB0b2ltaW5ub24gdHVsb2tzZW5hIG7DpHl0ZXR0w6R2aWVuIGtvbmZpZ3Vyb2ludGllbGVtZW50dGllbiBlbmltbcOkaXNtw6TDpHLDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1dWxpIGx1b2thc3RhIHZhc3RhYXZhbiByeWhtw6RuIHRhcmtpc3RhbWlzZWtzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1dWxpLCBqb2xsYSB2b2l0IHRhcmtpc3RhYSBrb25maWd1cmFhdGlvZWxlbWVudGlzdMOkIHZhc3RhYXZhbiByeWhtw6RuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHV1bGkgSVRTTS1rb25maWd1cmFhdGlvdGlsYXN0b2plbiB0dW90dGFtaXNlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmltaSBNb2R1dWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW1lcm9tb2R1dWxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkIGt1bGxha2luIGhha3V0dWxvc3NpdnVsbGEgbsOkeXRldHTDpHZpZW4gbcOkw6RyaXR5c2tvaHRlaWRlbiBtw6TDpHLDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXNpYWtrYWFuIGvDpHl0dMO2bGlpdHR5bcOkc3PDpCBrdWxsYWtpbiBoYWt1dHVsb3NzaXZ1bGxhIG7DpHl0ZXR0w6R2aWVuIG3DpMOkcml0eXNrb2h0ZWlkZW4gbcOkw6Ryw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ0V0c2l0dMOkdsOkdCBrb2h0ZWV0LCBrdWlua2EgbW9udGEgbWVya2ludMOkw6QgamEgbWl0a8OkIG9taW5haXN1dWRldCBuw6R5dGV0w6TDpG4uIENvbmZpZ0l0ZW0tYXR0cmlidXV0aXQgb24gdGFsbGVubmV0dGF2YSBuaW1lbm9tYWlzZXN0aSBFbGFzdGljc2VhcmNoaW4ga2F1dHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdZbGVpc2thdHNhdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6RuIHByZWZlcmVuY2VzLW7DpGt5bcOkbiBrb25maWd1cm9pbnRpa29oZGVsdW9ra2llbiBsdW9ra2llbiBwYXJhbWV0cml0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaXQgcGllbnRlbiBrb25maWd1cm9pbnRpa29odGVpZGVuIHlsZWlza2F0c2F1a3NlbiBzYXJha2VzdW9kYXR0aW1pYSB2YXJ0ZW4uIEh1b21hYTogXCdBa3RpaXZpbmVuXCctYXNldHVrc2VuIGFzZXR0YW1pbmVuIGFydm9vbiAwIGVzdMOkw6QgdmFpbiBhZ2VudHRlamEgbXVva2thYW1hc3RhIHTDpG3DpG4gcnlobcOkbiBhc2V0dWtzaWEgaGVua2lsw7Zrb2h0YWlzaXNzYSBhc2V0dWtzaXNzYWFuLCBtdXR0YSBzYWxsaWkgc2lsdGkgasOkcmplc3RlbG3DpG52YWx2b2ppZW4gbXVva2F0YSB0b2lzZW4ga8OkeXR0w6Rqw6RuIGFzZXR1a3NpYS4gS8OkeXTDpCBcJ1ByZWZlcmVuY2VHcm91cFwnLWtvaHRhYSwga3VuIGhhbHVhdCBoYWxsaXRhLCBtaWxsw6QgYWx1ZWVsbGEgbsOkbcOkIGFzZXR1a3NldCBuw6R5dGV0w6TDpG4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS8OkeXR0w7bDtm5vdHRvdGlsb2plbiB2w6RyaW4gcGFyYW1ldHJpdCBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBwcmVmZXJlbmNlcy1uw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS8OkeXR0w7bDtm5vdHRvdGlsb2plbiBwYXJhbWV0cml0IGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHByZWZlcmVuY2VzLW7DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnWWxlaXNlbiBsdWV0dGVsb24gYXR0cmlidXV0dGllbiBlc2ltZXJra2lvaWtldXNyeWhtaWVuIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWtvaGRlbHVva2tpZW4gbmltaW1vZHV1bGluIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6RuIHByZWZlcmVuY2VzLW7DpGt5bcOkc3PDpCBvbGV2aWVuIGtvbmZpZ3Vyb2ludGlrb2hkZWx1b2traWVuIG51bWVyb21vZHV1bGluIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1NpdnVqZW4gcGFyYW1ldHJpdCAoam9pc3NhIGFzZXR1c2tvaHRlZXQgbsOkeXRldMOkw6RuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWx1b2traWVuIHZlcnNpb24gbWVya2tpam9ub21vZHV1bGluIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWtvaGRlbHVva2tpZW4gdmVyc2lvbiBtZXJra2lqb25vbWFsbGktdHnDtmthbHVwYWtraW1vZHV1bGluIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gcHJlZmVyZW5jZXMtbsOka3ltw6Rzc8OkIG9sZXZpZW4ga29uZmlndXJvaW50aWx1b2traWVuIHZlcnNpb2xhdWthaXNpbWVuIHBhcmFtZXRyaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnU3Vvcml0dGFhIG3DpMOkcml0ZXR5biB0b2ltaW5ub24ga3VsbGVraW4gdGFwYWh0dW1hbGxlIChrdXRzdWphbmEpIGt1bmtpbiBtw6TDpHJpdGV0eW4gdmVya2tvcGFsdmVsdW4gb3NhbHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnTHVwYXJ5aG3DpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVlbiBraWlubml0eXN0b2ltaW5ub24ga8OkeXR0w6RtaXNlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBvaWtldWRldCBJVFNNLWtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUYXJ2aXR0YXZhdCBrw6R5dHTDtm9pa2V1ZGV0IElUU00ta29uZmlndXJhYXRpb2tvaHRlaWRlbiBoYWt1bsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtvbmZpZ3VyYWF0aW9rb2h0ZWlkZW4gaGFrdW7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFzaWFra2FhbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWlkZW4gcHV1bsOka3ltw6RuIG7DpHl0dMO2w7ZuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb25maWd1cmFhdGlva29odGVlbiB6b29tYXVzbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6RuIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSAtbsOkeXTDtm4ga8OkeXR0w6RtaXNlZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTTpuIG3DpMOkcml0eXNrb2h0ZWlkZW4gaXJ0b3RhdmFyYW7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb2tvb25wYW5va29odGVlbiBtdW9ra2F1c27DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RhcnZpdHRhdmF0IGvDpHl0dMO2b2lrZXVkZXQgSVRTTS1rb25maWd1cmFhdGlva29odGVpZGVuIGhpc3RvcmlhLW7DpHl0w7ZuIGvDpHl0dMOkbWlzZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGFydml0dGF2YXQga8OkeXR0w7ZvaWtldWRldCBJVFNNLWtva29vbnBhbm9rb2h0ZWlkZW4gdHVsb3N0YW1pbmVuIC1uw6R5dMO2biBrw6R5dHTDpG1pc2VlbiBhZ2VudHRpa8OkeXR0w7ZsaWl0dHltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnTcOkw6RyaXR5c2tvaHRlaWRlbiBwb2lzdGFtaXNlZW4gdGFydml0dGF2YXQgb2lrZXVkZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnSGFrdSBrb25maWd1cm9pbnRpZWxlbWVudGl0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXNldGEgQ0k6biB0YXBhaHR1bWF0aWxhIGF1dG9tYWF0dGlzZXN0aSwga3VuIGxpcHB1IGxpbmtpdGV0w6TDpG4gQ0k6aGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FzZXR0YWEga8OkeXR0w7bDtm5vdG9uIHRpbGFuIGFnZW50dGlsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWVuIGJ1bGstbsOkeXTDtnNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FzZXR0YWEgdGFwYWh0dW1hdGlsYW4gYWdlbnR0aWxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlZW4gYnVsay1uw6R5dMO2c3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSBrb25maWd1cm9pbnRpa29oZGUgdm9pZGFhbiB5aGRpc3TDpMOkIHRvaXNlZW4ga29odGVlc2VlbiBhZ2VudGluIGvDpHl0dMO2bGlpdHR5bcOkbiBrb25maWd1cm9pbnRpa29odGVlbiB6b29tYXVzbsOka3ltw6Rzc8OkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHDDpMOkc2VlIG3DpMOkcml0eXNrb2h0ZWVuIGhpc3RvcmlhYW4gYWdlbnR0aWvDpHl0dMO2bGlpdHR5bcOkbiBtw6TDpHJpdHlza29odGVpZGVuIHlsZWlza2F0c2F1a3Nlc3NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSBww6TDpHNlZSBtw6TDpHJpdHlza29odGVlbiBoaXN0b3JpYWFuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHpvb21hdXNuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgdm9pdCBwb2lzdGFhIG3DpMOkcml0eXNrb2h0ZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHpvb21hdXNuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpva2EgbsOkeXR0w6TDpCBtw6TDpHJpdHlza29odGVpZGVuIGxpbmtpdCBwdXVuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb2xsYSB2b2l0IGtvcGlvaWRhIG3DpMOkcml0eXNrb2h0ZWVuIGFnZW50dGlsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWlkZW4geWxlaXNrYXRzYXVrc2Vzc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHZvaXQga29waW9pZGEgbcOkw6RyaXR5c2tvaHRlZW4gYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgbGlua2luIHZhbGlra29vbiwgam9ua2EgYXZ1bGxhIHZvaXQgbXVva2F0YSBtw6TDpHJpdHlza29oZGV0dGEgYWdlbnRpbiBrw6R5dHTDtmxpaXR0eW3DpG4gem9vbWF1c27DpGt5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgdmFsaWtvc3NhIGxpbmtpbiwgam9ua2EgYXZ1bGxhIHZvaXQgcGFsYXRhIHRha2Fpc2luIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIG3DpMOkcml0eXNrb2h0ZWVuIHpvb21hdXNuw6RreW3DpMOkbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw6R5dHTDpMOkIHZhbGlrb3NzYSBsaW5raW4sIGpvbmthIGF2dWxsYSB2b2l0IHR1bG9zdGFhIG3DpMOkcml0eXNrb2h0ZWVuIGFnZW50aW4ga8OkeXR0w7ZsaWl0dHltw6RuIHpvb21hdXNuw6RreW3DpHNzw6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsOkeXR0w6TDpCB2YWxpa29zc2EgbGlua2luLCBqb25rYSBhdnVsbGEgdm9pdCB6b29tYXRhIG3DpMOkcml0eXNrb2h0ZWVzZWVuIGFnZW50dGlrw6R5dHTDtmxpaXR0eW3DpG4gbcOkw6RyaXR5c2tvaHRlaWRlbiB5bGVpc2thdHNhdWtzZXNzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DpHl0dMOkw6QgbcOkw6RyaXR5c2tvaHRlaWRlbiBoaXN0b3JpYW4gKGvDpMOkbnRlaXNlc3PDpCBqw6RyamVzdHlrc2Vzc8OkKSBhZ2VudHRpbGlpdHR5bcOkc3PDpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnT2xldHVzbHVva2thLCBqb2thIG7DpHl0ZXTDpMOkbiwgam9zIG1pdMOkw6RuIGVpIG9sZSB2YWxpdHR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnS29uZmlndXJhYXRpb2VsZW1lbnRpbiB0dW5uaXN0ZSwgZXNpbS4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIE9sZXR1c2Fydm8gb24gQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdLw6R5bm5pc3TDpMOkIENvbmZpZ0l0ZW1GZXRjaC1rdXRzdWFqYW4gYXV0b21hYXR0aXNlc3RpLic7CiAgICAkU2VsZi0+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+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0ZWV0aW4tIGphIHDDpMOkc3luaGFsbGludGEgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ1ZhcmFzdG9udW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0b2ludGlrdXN0YW5udWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdMYXNrdW4gbnVtZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnTsOkcHDDpGltaXN0w7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELW7DpHl0dMO2IChuZXN0ZWtpZGVuw6R5dHTDtiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRC1tb25pdG9yaSAodmFsb2Rpb2RpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdMYW5rYXB1aGVsaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnS2FubmV0dGF2YSB0aWV0b2tvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdMZXZleXNhc3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnS2Vycm9zIDE6IEZ5eXNpbmVuIGtlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICdLZXJyb3MgMjogVGllZG9uc2lpcnRva2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdLZXJyb3MgMzogVmVya2tva2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0tlcnJvcyAzOiBWZXJra29rZXJyb3MgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdLZXJyb3MgNDogS3VsamV0dXNrZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0tlcnJvcyA1OiBJc3R1bnRva2Vycm9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0tlcnJvcyA2OiBFc2l0eXNrZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdLZXJyb3MgNzogU292ZWxsdXNrZXJyb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnVnVva3Jhc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpc2Vuc3Npc29waW11cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGlzZW5zc2lhdmFpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaXNlbnNzaW4gdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaXNlbnNzaWFpa2EgYWxrYWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGlzZW5zc2lhaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRpdW0tcmF1dGFmb3NmYWF0dGlha2t1IChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aXVtLWlvbmlha2t1IChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnTGFpbmFzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdTaWphaXRzZWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnUGl0dXVzYXN0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1ZhbG1pc3RhamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ1N1dXJpbiBrdW9ybWl0dXNrYXBhc2l0ZWV0dGkgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ011aXN0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ011aXN0aXR5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNYXRrYXB1aGVsaW5udW1lcm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWlsaS9zaXPDpMOkbnJha2VubmV0dHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNYWxsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01hbGxpbiBrdXZhdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnTsOkeXTDtm4gdGFya2t1dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTsOkeXTDtm4ga29rbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ0hpaXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdWZXJra28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnVmVya2tvdGllZG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdWZXJra290aWVkb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ1Zlcmtrb2tlcnJvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ05pa2tlbGkta2FkbWl1bS1ha2t1IChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2tlbGktbWV0YWxsaWh5ZHJpZGkgKE5pTUgpIC1ha2t1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1NhbGFzc2FwaXRvc29waW11cyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ011aXN0aWtpcmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnU3Vvcml0aW55a3Npa8O2aWRlbiBtw6TDpHLDpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdSQU0tbW9kdXVsaWVuIG3DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ07DpHl0w7Zub2hqYWludGVuIG3DpMOkcsOkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELW1vbml0b3JpIChvcmdhYW5pbmVuIHZhbG9kaW9kaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnVG9pbWludGFrdXN0YW5udWtzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnVGlsYXVzbnVtZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnTXV1dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnTMOkaGTDtnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnS3VtcHBhbnV1c3NvcGltdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdQdWhlbGlubnVtZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdQdWhlbGltZW4gdHl5cHBpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRnl5c2lzZXQgeXRpbWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnVmlycmFuamFrZWx1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnT3N0ZXR0dSBvc29pdHRlZXN0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnVGVsaW5lZW4gc3l2eXlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnVGVsaW5leWtzaWvDtnQgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdIdW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1rb3J0dGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTLXNlcnRpZmlrYWF0aXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICdNeXludGlzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsbGlpdHRpcHVoZWxpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdTdWxqZXR0dSBseWlqeWhhcHBvYWtrdSAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1NhcmphbnVtZXJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1BhbHZlbGlub2hqZWxtaXN0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1BhbHZlbHVzb3BpbXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnUGFsdmVsdW1lcmtraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdQaXN0b3Jhc2lhIHR5eXBwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ09oamVsbWlzdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdQdWh1amF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1Zha2lvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdBbG9pdGEgSVAtb3NvaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdWYXJhc3RvaW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1RhbGxlbm51c29zaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdUeXTDpHJ5aHRpw7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1lodGVlbnZldG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdPaHV0IGFzaWFrYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0tpZXJ0ZWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ07DpHl0w7Zub2hqYWltZW4gUkFNLW11aXN0aSB5aHRlZW5zw6QgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTS1tdWlzdGlhIHlodGVlbnPDpCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdLb3NrZXR1c27DpHl0w7ZuIG7DpHl0dMO2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ybmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQi1rZXNraXRpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIEhlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWFsTGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC1wdWhlbGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdDb25maWcgw4lsw6ltZW50cyBwYXIgcGFnZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnQXVjdW5lIGRvbm7DqWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gblwnYSDDqXTDqSB0cm91dsOpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTw6lsZWN0aW9ubmVyIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1JlY2hlcmNoZSBkXCdleMOpY3V0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1JlY2hlcmNoZSDDqWdhbGVtZW50IGRhbnMgbGVzIHZlcnNpb25zIHByw6ljw6lkZW50ZXMgPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHBvdXIgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVhdSBkZSBwcm9mb25kZXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBhdmFudC9hcnJpw6hyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdOaXZlYXUgZGUgbGllbnMgbWF4aW11bSBhdHRlaW50IHBvdXIgQ29uZmlnSXRlbSAhJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXRpb25zIHN1ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OJdGF0IGFjdHVlbCBkdSBkw6lwbG9pZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ8OJdGF0IGFjdHVlbCBkZSBsXCdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdEZXJuacOocmUgbW9kaWZpY2F0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ0Rlcm5pw6hyZSBtb2RpZmljYXRpb24gcGFyJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVm9zIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdSZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnTGVzIGNsYXNzZXMgc3VpdmFudGVzIHNlcm9udCBpbXBvcnTDqWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0xlcyByw7RsZXMgc3VpdmFudHMgc2Vyb250IGltcG9ydMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOb3RleiBxdWUgbGVzIGNoYW1wcyBkeW5hbWlxdWVzIGV0IGxlcyBjbGFzc2VzIEdlbmVyYWxDYXRhbG9nIGNvcnJlc3BvbmRhbnRzIHNlcm9udCDDqWdhbGVtZW50IGNyw6nDqXMgZXQgcXVcJ2lsIG5cJ3kgYSBwYXMgZGUgc3VwcHJlc3Npb24gYXV0b21hdGlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnVm91bGV6LXZvdXMgY29udGludWVyID8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnQmVzb2luIGRlIGNsYXNzZXMgZFwnZXhlbXBsZXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdMYSBkw6lmaW5pdGlvbiBuXCdlc3QgcGFzIHVuIGhhY2hhZ2UgWUFNTCB2YWxpZGUuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnVnVlIGRcJ2Vuc2VtYmxlIDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIENvbmZpZ0l0ZW1JRCBuXCdlc3QgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdWb3VzIGF2ZXogYmVzb2luIGRcJ2F1IG1vaW5zIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHPDqWxlY3Rpb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ1ZvdXMgblwnYXZleiBwYXMgZFwnYWNjw6hzIGVuIMOpY3JpdHVyZSDDoCBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnQXVjdW5lIGTDqWZpbml0aW9uIG5cJ2Egw6l0w6kgZMOpZmluaWUgcG91ciBsYSBjbGFzc2UgJXMgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnTFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gIiVzIiBuXCdhIHBhcyDDqXTDqSB0cm91dsOpIGRhbnMgbGEgYmFzZSBkZSBkb25uw6llcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnSWwgblwnYSBwYXMgw6l0w6kgcG9zc2libGUgZGUgc3VwcHJpbWVyIGxlIGNvbmZpZ2l0ZW0gSUQgJXMgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQXVjdW5lIHZlcnNpb24gdHJvdXbDqWUgcG91ciBDb25maWdJdGVtSUQgJXMgISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG91IENsYXNzSUQgblwnZXN0IGRvbm7DqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdBdWN1biBhY2PDqHMgblwnZXN0IGRvbm7DqSAhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnaGlzdG9yaXF1ZSwgYXVjdW4gQ29uZmlnSXRlbUlEIG5cJ2VzdCBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0ltcG9zc2libGUgZFwnYWZmaWNoZXIgbFwnaGlzdG9yaXF1ZSwgYXVjdW4gZHJvaXQgZFwnYWNjw6hzIG5cJ2Egw6l0w6kgYWNjb3Jkw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm91dmVhdSBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vdXZlbGxlIHZlcnNpb24gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ01pc2Ugw6Agam91ciBkZSBsXCfDqXRhdCBkdSBkw6lwbG9pZW1lbnQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdNaXNlIMOgIGpvdXIgZGUgbFwnw6l0YXQgZGUgbFwnaW5jaWRlbnQgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBzdXBwcmltw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdBam91dCBkXCd1biBsaWVuIHZlcnMgJXMgKHR5cGU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaWVuIHZlcnMgJXMgKHR5cGU9JXMpIHN1cHByaW3DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnTWlzZSDDoCBqb3VyIGRlIGxhIGTDqWZpbml0aW9uIGRlIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbSBtaXMgw6Agam91ciAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXQgJXMgbWlzIMOgIGpvdXIgZGUgIiVzIiDDoCAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpb24gJXMgc3VwcHJpbcOpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdBdWN1biBDb25maWdJdGVtSUQgb3UgVmVyc2lvbklEIG5cJ2VzdCBkb25uw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLCBhdWN1biBkcm9pdCBkXCdhY2PDqHMgblwnYSDDqXTDqSBhY2NvcmTDqSAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGludHJvdXZhYmxlIGRhbnMgbGEgYmFzZSBkZSBkb25uw6llcyAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnaW1wcmltw6kgcGFyICVzIMOgICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSw6lmw6lyZW5jZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgaW52YWxpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0F1Y3VuIGlkZW50aWZpYW50IGRlIGNsYXNzZSBuXCdlc3QgZG9ubsOpICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdBdWN1biBkcm9pdCBkXCdhY2PDqHMgw6AgY2V0dGUgY2xhc3NlIG5cJ2Egw6l0w6kgYWNjb3Jkw6kgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnUGFzIGRlIHLDqXN1bHRhdCAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUsOpc3VsdGF0cyBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdJbXBvc3NpYmxlIGRcJ2FmZmljaGVyIGxcJ8OpbMOpbWVudCwgYXVjdW4gZHJvaXQgZFwnYWNjw6hzIG5cJ2VzdCBhY2NvcmTDqSBwb3VyIENvbmZpZ0l0ZW0gISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIGludHJvdXZhYmxlICEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnQXVjdW5lIHZlcnNpb24gdHJvdXbDqWUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29ww6lyYXRpb25uZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2F2ZXJ0aXNzZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50IGRlIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xcJ8OpdGF0IGRlIGxcJ2luY2lkZW50IGRlIGNldCDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1BhcyBkXCdhdXRvcmlzYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJlIG5vbiB2YWxpZGUgISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnUGFyYW3DqHRyZXMgZGUgcmVjaGVyY2hlIG5vbiB2YWxpZGVzICEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYWZmaWNow6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cGUgZFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cGUgZFwnaW5jaWRlbnQgYWN0dWVsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ2VudHJlIGxlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljdGlvbnMgZGUgY2xhc3NlIHBvdXIgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1PDqWxlY3Rpb25uZXIgdW5lIG91IHBsdXNpZXVycyBjbGFzc2VzIHBvdXIgcmVzdHJlaW5kcmUgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzw6lsZWN0aW9ubmFibGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljdGlvbnMgZGUgY2xhc3NlIHBvdXIgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTw6lsZWN0aW9ubmVyIHVuZSBvdSBwbHVzaWV1cnMgY2xhc3NlcyBwb3VyIHJlc3RyZWluZHJlIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc8OpbGVjdGlvbm5hYmxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0R5bmFtaXF1ZSAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAoVmVyc2lvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnVHlwZSBkZSByw6lmw6lyZW5jZW1lbnQgZGVzIGxpZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1NpIGNlIGxpZW4gc1wnYXBwbGlxdWUgw6AgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gb3Ugw6AgbGEgdmVyc2lvbiBzdGF0aXF1ZSBkZSBsXCdvYmpldCBkZSByw6lmw6lyZW5jZS4gTGUgY2FsY3VsIGRlIGxcJ8OpdGF0IGFjdHVlbCBkZSBsXCdpbmNpZGVudCBuXCdlc3QgZWZmZWN0dcOpIHF1ZSBwb3VyIGxlcyBsaWVucyBkeW5hbWlxdWVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1PDqWxlY3Rpb25uZXogbFwnYXR0cmlidXQgcGFyIGxlcXVlbCBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHNlcm9udCByZWNoZXJjaMOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0xhIHN0cnVjdHVyZSBkZSBiYXNlIG5cJ2VzdCBwYXMgdmFsaWRlLiBWZXVpbGxleiBmb3VybmlyIHVuIGhhY2hhZ2UgYXZlYyBkZXMgZG9ubsOpZXMgYXUgZm9ybWF0IFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnSWwgZXN0IG7DqWNlc3NhaXJlIGRlIGNvbW1lbmNlciBsYSBjaGHDrm5lIFlBTUwgcGFyICItLS0iLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdJbXBvc3NpYmxlIGRlIHB1cmdlciBsYSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdBdWN1biBjaGFtcCBkeW5hbWlxdWUgcGVydGluZW50IG5cJ2Egw6l0w6kgdHJvdXbDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0ltcG9zc2libGUgZFwnaW5zw6lyZXIgZGFucyBsYSB0YWJsZSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc8OpcsOpIDAgbGlnbmVzIGRhbnMgbGEgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ05vbWJyZSBtYXhpbWFsIGRcJ3VuIMOpbMOpbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdDaGHDrm5lIGRlIHZlcnNpb24nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyZXVyIGRlIHN5bmNocm9uaXNhdGlvbiBkZXMgZMOpZmluaXRpb25zLiBWZXVpbGxleiB2w6lyaWZpZXIgbGUgam91cm5hbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdWb3VzIGF2ZXogZGVzIGTDqWZpbml0aW9ucyBJVFNNQ29uZmlnSXRlbSBxdWkgbmUgc29udCBwYXMgc3luY2hyb25pc8OpZXMuIFZldWlsbGV6IGTDqXBsb3llciB2b3MgY2hhbmdlbWVudHMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnTWFpbnRlbmFuY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1Byw6l2dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSw6lwYXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0cmFpdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1LDqXZpc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnVnVlIGRcJ2Vuc2VtYmxlIGV0IGNvbmZpcm1hdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRhdGlvbiBkZSBjbGFzc2VzL3LDtGxlcyBldCBkZSBsZXVycyBjaGFtcHMgY29ubmV4ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdVbmUgZXJyZXVyIHNcJ2VzdCBwcm9kdWl0ZSBsb3JzIGRlIGxcJ2ltcG9ydGF0aW9uIGRlIGxhIGNsYXNzZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIENhY2jDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9udHLDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWV0IGRcJ8OpdGVuZHJlIGxlcyBjb25kaXRpb25zIGRlIHJlY2hlcmNoZSBkYW5zIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50LiBHcsOiY2Ugw6AgY2V0dGUgZm9uY3Rpb25uYWxpdMOpLCB2b3VzIHBvdXZleiByZWNoZXJjaGVyLCBwYXIgZXhlbXBsZSwgbGUgbm9tIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGF2ZWMgZGVzIGNvbmRpdGlvbnMgdGVsbGVzIHF1ZSAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtZXQgZFwnw6l0ZW5kcmUgbGVzIGNvbmRpdGlvbnMgZGUgcmVjaGVyY2hlIGRhbnMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50LiBBdmVjIGNldHRlIGZvbmN0aW9ubmFsaXTDqSwgdm91cyBwb3V2ZXogcmVjaGVyY2hlciBwYXIgZXhlbXBsZSBsZSBub20gZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYXZlYyBkZXMgY29uZGl0aW9ucyB0ZWxsZXMgcXVlICIoKmtleTEqJiYqa2V5MiopIiBvdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0lDIGFzc2lnbsOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0kgYWZmZWN0w6lzIMOgIGxcJ2VudHJlcHJpc2UgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIGF0dHJpYnXDqXMgw6AgbFwndXRpbGlzYXRldXIgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdQYXJhbcOodHJlcyBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWw6lyaWZpZXIgbGEgcHLDqXNlbmNlIGRcJ3VuIG5vbSB1bmlxdWUgdW5pcXVlbWVudCBkYW5zIGxhIG3Dqm1lIGNsYXNzZSBkZSBDb25maWdJdGVtICgiY2xhc3MiKSBvdSBnbG9iYWxlbWVudCAoImdsb2JhbCIpLCBjZSBxdWkgc2lnbmlmaWUgcXVlIGNoYXF1ZSBDb25maWdJdGVtIGV4aXN0YW50IGVzdCBwcmlzIGVuIGNvbXB0ZSBsb3JzIGRlIGxhIHJlY2hlcmNoZSBkZSBkb3VibG9ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0Nob2lzaXNzZXogdW4gbW9kdWxlIHBvdXIgYXBwbGlxdWVyIHVuIHNjaMOpbWEgZGUgZMOpbm9taW5hdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0Nob2lzaXNzZXogdW4gbW9kdWxlIHBvdXIgYXBwbGlxdWVyIHVuIHN5c3TDqG1lIGRlIG51bcOpcm90YXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0Nob2lzaXNzZXogdW4gbW9kdWxlIHBvdXIgYXBwbGlxdWVyIHVuIHNjaMOpbWEgZGUgY2hhw65uZSBkZSB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1PDqWxlY3Rpb25uZXogbGVzIGF0dHJpYnV0cyBxdWkgZMOpY2xlbmNoZW50IGxhIGNyw6lhdGlvbiBkXCd1bmUgbm91dmVsbGUgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnU8OpbGVjdGlvbm5leiBsZXMgY2F0w6lnb3JpZXMgw6AgYWZmZWN0ZXIgw6AgY2V0dGUgY2xhc3NlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmVzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBjb2xvbm5lIHBvdXIgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sb25uZXMgcG91dmFudCDDqnRyZSBmaWx0csOpZXMgZGFucyBsYSB2dWUgZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuIFJlbWFycXVlIDogc2V1bHMgbGVzIGF0dHJpYnV0cyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGV0IGxlcyBjaGFtcHMgZHluYW1pcXVlcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBzb250IGF1dG9yaXPDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ8OJbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQWpvdXQgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnw4lkaXRpb24gZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHF1aSBwZXJtZXQgbFwnZW5yZWdpc3RyZW1lbnQgZGFucyBsXCdoaXN0b3JpcXVlIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgcG91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHF1aSBtZXQgw6Agam91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxldXIgZMOpZmluaXRpb24gYWN0dWVsbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaXF1ZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdJbXByZXNzaW9uIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnQ29uZmlnIGl0ZW0gem9vbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdBcmJvcmVzY2VuY2UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTGVzIENvbmZpZ0l0ZW1zIGRlcyBjbGFzc2VzIHN1aXZhbnRlcyBuZSBzZXJvbnQgcGFzIHN0b2Nrw6lzIHN1ciBsZSBzZXJ2ZXVyIEVsYXN0aWNzZWFyY2guIFBvdXIgYXBwbGlxdWVyIGNlbGEgYXV4IENJIGV4aXN0YW50cywgbGEgbWlncmF0aW9uIGRlcyBDSSBkb2l0IMOqdHJlIGV4w6ljdXTDqWUgdmlhIGxhIGNvbnNvbGUsIGFwcsOocyBhdm9pciBjaGFuZ8OpIGNldHRlIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnTGVzIENvbmZpZ0l0ZW1zIGF2ZWMgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgc3VpdmFudHMgbmUgc2Vyb250IHBhcyBzdG9ja8OpcyBzdXIgbGUgc2VydmV1ciBFbGFzdGljc2VhcmNoLiBQb3VyIGFwcGxpcXVlciBjZWxhIGF1eCBDSSBleGlzdGFudHMsIGxhIG1pZ3JhdGlvbiBkZXMgQ0kgZG9pdCDDqnRyZSBleMOpY3V0w6llIHZpYSBsYSBjb25zb2xlLCBhcHLDqHMgYXZvaXIgY2hhbmfDqSBjZXR0ZSBvcHRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0xpbWl0ZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnQ29uZmlndXJhdGlvbiBMaW1pdGUgZFwnw6lsw6ltZW50cyBwYXIgcGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZG9ubsOpZXMgZGUgZ2VzdGlvbiBkZSBsYSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnw4lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gbW9kdWxlIGVuIHZyYWMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHJlY2hlcmNoZSByb3V0ZXVyIGJhY2tlbmQgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDcsOpZXIgZXQgZ8OpcmVyIGxlcyBkw6lmaW5pdGlvbnMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcsOpZSBkZXMgdGlja2V0cyBwb3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgZGVzIG1vbWVudHMgcHLDqWNpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnTGVzIGNsaWVudHMgcGV1dmVudCBjb25zdWx0ZXIgbFwnaGlzdG9yaXF1ZSBkZXMgdmVyc2lvbnMgZGUgbFwnSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0xlcyBjbGllbnRzIG9udCBsYSBwb3NzaWJpbGl0w6kgZGUgcGFzc2VyIG1hbnVlbGxlbWVudCBkXCd1bmUgdmVyc2lvbiBoaXN0b3JpcXVlIGRlIENJIMOgIGxcJ2F1dHJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0Rvbm7DqWVzIHBhciBkw6lmYXV0IMOgIHV0aWxpc2VyIHN1ciBsXCdhdHRyaWJ1dCBkZSBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uIEV4ZW1wbGUgOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MiA7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdEb25uw6llcyBwYXIgZMOpZmF1dCDDoCB1dGlsaXNlciBzdXIgbFwnYXR0cmlidXQgZGUgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBFeGVtcGxlIDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTMgOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEw6lmaW5pciBsZXMgYWN0aW9ucyBwb3VyIGxlc3F1ZWxsZXMgdW4gYm91dG9uIGRlIGNvbmZpZ3VyYXRpb24gZXN0IGRpc3BvbmlibGUgZGFucyBsZSB3aWRnZXQgZGVzIG9iamV0cyBsacOpcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBWZXVpbGxleiBub3RlciBxdWUgY2VzIGFjdGlvbnMgZG9pdmVudCBhdm9pciBlbnJlZ2lzdHLDqSBsZXMgZmljaGllcnMgSlMgZXQgQ1NTIHN1aXZhbnRzIDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZXQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRMOpZmluaXIgdW4gc2Now6ltYSBUZW1wbGF0ZTo6VG9vbGtpdCBwb3VyIGxlcyBjaGHDrm5lcyBkZSB2ZXJzaW9uLiBVdGlsaXPDqSB1bmlxdWVtZW50IHNpIGxlIG1vZHVsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gZXN0IGTDqWZpbmkgc3VyIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIHVuIGVuc2VtYmxlIGRlIGNvbmRpdGlvbnMgc291cyBsZXNxdWVsbGVzIHVuIGNsaWVudCBlc3QgYXV0b3Jpc8OpIMOgIHZvaXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uIExlcyBjb25kaXRpb25zIHBldXZlbnQgw6l2ZW50dWVsbGVtZW50IMOqdHJlIGxpbWl0w6llcyDDoCBjZXJ0YWlucyBncm91cGVzIGRlIGNsaWVudHMuIExlIG5vbSBlc3QgbGUgc2V1bCBhdHRyaWJ1dCBvYmxpZ2F0b2lyZS4gU2kgYXVjdW5lIGF1dHJlIG9wdGlvbiBuXCdlc3QgZG9ubsOpZSwgdG91cyBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHNlcm9udCB2aXNpYmxlcyBkYW5zIGNldHRlIGNhdMOpZ29yaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHN1cHByaW1lciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIG9idGVuaXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciByZWNoZXJjaGVyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgZMOpZmluaXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEw6lmaW5pdCB1biBtb2R1bGUgZGUgdnVlIGRcJ2Vuc2VtYmxlIHBvdXIgYWZmaWNoZXIgbGEgcGV0aXRlIHZ1ZSBkXCd1bmUgbGlzdGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEw6lmaW5pdCBzaSBsZXMgw6l0aXF1ZXR0ZXMgZGUgdHlwZSBkZSBsaWVuIGRvaXZlbnQgw6p0cmUgYWZmaWNow6llcyBkYW5zIGxlcyBjb25uZXhpb25zIGRlIG7Fk3Vkcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGRlcyBleHByZXNzaW9ucyByw6lndWxpw6hyZXMgaW5kaXZpZHVlbGxlbWVudCBwb3VyIGNoYXF1ZSBjbGFzc2UgQ29uZmlnSXRlbSBhZmluIGRlIHbDqXJpZmllciBsZSBub20gZHUgQ29uZmlnSXRlbSBldCBkXCdhZmZpY2hlciBsZXMgbWVzc2FnZXMgZFwnZXJyZXVyIGNvcnJlc3BvbmRhbnRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBkaXNwb25pYmxlcyBwb3VyIGxlcyBDSSBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsYSBjbGFzc2UgZHUgQ0kuIENoYXF1ZSBlbnRyw6llIGRvaXQgw6p0cmUgY29uc3RpdHXDqWUgZFwndW4gbm9tIGRlIGNsYXNzZSBldCBkXCd1biB0YWJsZWF1IGRlIGNoYW1wcyBkaXNwb25pYmxlcyBwb3VyIGxhIGNsYXNzZSBjb3JyZXNwb25kYW50ZS4gTGVzIGVudHLDqWVzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIGRvaXZlbnQgcmVzcGVjdGVyIGxlIHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHBhciBkw6lmYXV0IHBvdXIgbGUgdHJpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBwYXIgZMOpZmF1dCBwb3VyIGxlIHRyaSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBwYXIgZMOpZmF1dCBwb3VyIGxlIHRyaSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgY2V0dGUgb3DDqXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIHBhciBkw6lmYXV0IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuIFVwIDogbGUgcGx1cyBhbmNpZW4gZXN0IGVuIGhhdXQuIEVuIGJhcyA6IGxlIHBsdXMgcsOpY2VudCBlbiBoYXV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnb3JkcmUgcGFyIGTDqWZhdXQgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuIEVuIGhhdXQgOiBsZSBwbHVzIGFuY2llbiBlc3QgZW4gaGF1dC4gRW4gYmFzIDogbGUgcGx1cyByw6ljZW50IGVuIGhhdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIHBhciBkw6lmYXV0IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBjZXR0ZSBvcMOpcmF0aW9uLiBFbiBoYXV0IDogbGUgcGx1cyBhbmNpZW4gZW4gaGF1dC4gVmVycyBsZSBiYXMgOiBsZSBwbHVzIHLDqWNlbnQgZW4gaGF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBhZmZpY2jDqWVzIHBhciBkw6lmYXV0IGRlcyBDSSBkYW5zIGxhIHZ1ZSBkXCdlbnNlbWJsZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEw6lmaW5pdCBsYSBwcm9mb25kZXVyIHBhciBkw6lmYXV0IGRlcyByZWxhdGlvbnMgw6AgYWZmaWNoZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYWZmaWNow6kgcGFyIGTDqWZhdXQgcG91ciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ2F0dHJpYnV0IGRlIHJlY2hlcmNoZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhZmZpY2jDqSBwYXIgZMOpZmF1dCBwb3VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uIEV4ZW1wbGUgOiAiS2V5IiBkb2l0IGNvbnRlbmlyIGxlIG5vbSBkdSBjaGFtcCBkeW5hbWlxdWUsIGRhbnMgY2UgY2FzICJYIiwgIkNvbnRlbnQiIGRvaXQgY29udGVuaXIgbGEgdmFsZXVyIGR1IGNoYW1wIGR5bmFtaXF1ZSBlbiBmb25jdGlvbiBkdSB0eXBlIGRlIGNoYW1wIGR5bmFtaXF1ZSwgVGV4dCA6ICJ1biB0ZXh0ZSIsIERyb3Bkb3duIDogIjEiLCBEYXRlL1RpbWUgOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQiIDogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNiA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDAgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTMgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNiA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjMgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTkgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTkgO2V0IG91ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlayA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTciIDsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZSBzb3VzLW9iamV0IHBhciBkw6lmYXV0IGRlIGxhIGNsYXNzZSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGNvbG9ubmVzIGRpc3BvbmlibGVzIHBvdXIgbGVzIENJIGRhbnMgbFwnYXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGVuIGZvbmN0aW9uIGRlIGxhIGNsYXNzZSBkdSBDSS4gQ2hhcXVlIGVudHLDqWUgZG9pdCDDqnRyZSBjb25zdGl0dcOpZSBkXCd1biBub20gZGUgY2xhc3NlIGV0IGRcJ3VuIHRhYmxlYXUgZGUgY2hhbXBzIGRpc3BvbmlibGVzIHBvdXIgbGEgY2xhc3NlIGNvcnJlc3BvbmRhbnRlLiBMZXMgZW50csOpZXMgZGUgY2hhbXBzIGR5bmFtaXF1ZXMgZG9pdmVudCByZXNwZWN0ZXIgbGUgc2Now6ltYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBoYXV0ZXVyIGR1IGNvbXBvc2FudCBkZSBsXCfDqWRpdGV1ciBkZSB0ZXh0ZSBlbnJpY2hpIHBvdXIgY2V0IMOpY3Jhbi4gRW50cmV6IHVuIG5vbWJyZSAocGl4ZWxzKSBvdSB1bmUgdmFsZXVyIGVuIHBvdXJjZW50YWdlIChyZWxhdGl2ZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlIG5vbWJyZSBkZSBsaWduZXMgcG91ciBsXCfDqWRpdGV1ciBkZSBkw6lmaW5pdGlvbiBkZSBDSSBkYW5zIGxcJ2ludGVyZmFjZSBkXCdhZG1pbmlzdHJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnb3JkcmUgZGVzIMOpdGF0cyBpbmNpZGVudHMsIGRlIGhhdXQgKHBhciBleGVtcGxlLCBjcmljaXRhbCkgw6AgYmFzIChwYXIgZXhlbXBsZSwgZm9uY3Rpb25uZWwpLic7CiAgICAkU2VsZi0+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+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBY3RpdmUvZMOpc2FjdGl2ZSBsYSBmb25jdGlvbm5hbGl0w6kgZGUgdsOpcmlmaWNhdGlvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gcG91ciBsZXMgbm9tcyB1bmlxdWVzLiBBdmFudCBkXCdhY3RpdmVyIGNldHRlIG9wdGlvbiwgdm91cyBkZXZleiB2w6lyaWZpZXIgc2kgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBleGlzdGFudHMgb250IGRlcyBub21zIGVuIGRvdWJsZS4gVm91cyBwb3V2ZXogbGUgZmFpcmUgYXZlYyBsYSBjb21tYW5kZSBkZSBsYSBjb25zb2xlIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IHBvdXIgZMOpZmluaXIgbGUgc3RhdHV0IGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIHN1ciBsZSBsaWVuIHRpY2tldC1jb25maWdpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDaGFtcHMgZGUgbFwnaW5kZXggZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiwgdXRpbGlzw6lzIHBvdXIgbGEgcmVjaGVyY2hlIGVuIHRleHRlIGludMOpZ3JhbC4gTGVzIGNoYW1wcyBzb250IMOpZ2FsZW1lbnQgc3RvY2vDqXMsIG1haXMgbmUgc29udCBwYXMgb2JsaWdhdG9pcmVzIHBvdXIgbGEgZm9uY3Rpb25uYWxpdMOpIGdsb2JhbGUuIExcJ2luY2x1c2lvbiBkZXMgcGnDqGNlcyBqb2ludGVzIHBldXQgw6p0cmUgZMOpc2FjdGl2w6llIGVuIG1ldHRhbnQgbFwnZW50csOpZSDDoCAwIG91IGVuIGxhIHN1cHByaW1hbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdDaGFtcHMgc3RvY2vDqXMgZGFucyBsXCdpbmRleCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHF1aSBzb250IHV0aWxpc8OpcyBwb3VyIGRcJ2F1dHJlcyBjaG9zZXMgcXVlIGxlcyByZWNoZXJjaGVzIGVuIHRleHRlIGludMOpZ3JhbC4gUG91ciB1bmUgZm9uY3Rpb25uYWxpdMOpIGNvbXBsw6h0ZSwgdG91cyBsZXMgY2hhbXBzIHNvbnQgb2JsaWdhdG9pcmVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BvdXIgY2hhcXVlIHNlcnZpY2Ugd2ViIChjbMOpKSwgdW4gdGFibGVhdSBkZSBjbGFzc2VzICh2YWxldXIpIHBldXQgw6p0cmUgZMOpZmluaSBzdXIgbGVxdWVsIGxcJ2ltcG9ydGF0aW9uIGVzdCByZXN0cmVpbnRlLiBQb3VyIHRvdXRlcyBsZXMgY2xhc3NlcyBjaG9pc2llcywgb3UgcG91ciB0b3V0ZXMgbGVzIGNsYXNzZXMgZXhpc3RhbnRlcywgbGVzIGF0dHJpYnV0cyBkXCdpZGVudGlmaWNhdGlvbiBkZXZyb250IMOqdHJlIGNob2lzaXMgZGFucyBsYSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludm9jYXRldXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0VucmVnaXN0cmVtZW50IGR1IG1vZHVsZSBHZW5lcmljSW50ZXJmYWNlIHBvdXIgbGEgY291Y2hlIGRcJ2ludm9jYXRpb24gQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0VucmVnaXN0cmVtZW50IGR1IG1vZHVsZSBHZW5lcmljSW50ZXJmYWNlIHBvdXIgbGEgY291Y2hlIGRcJ2ludm9jYXRpb24gQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnQXBlcsOndSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnw4l0YXQgZGUgbFwnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1dCBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5jbHV0IGxlcyDDqXRhdHMgZFwnaW5jaWRlbnRzIGRhbnMgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOb21icmUgbWF4aW11bSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgYWZmaWNoZXIgZGFucyBsZSByw6lzdWx0YXQgZGUgY2V0dGUgb3DDqXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bGUgcGVybWV0dGFudCBkZSB2w6lyaWZpZXIgbGUgZ3JvdXBlIHJlc3BvbnNhYmxlIGRcJ3VuZSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWxlIHBlcm1ldHRhbnQgZGUgdsOpcmlmaWVyIGxlIGdyb3VwZSByZXNwb25zYWJsZSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bGUgcGVybWV0dGFudCBkZSBnw6luw6lyZXIgZGVzIHN0YXRpc3RpcXVlcyBzdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05vbSBkdSBtb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bcOpcm8gTW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vbWJyZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6AgYWZmaWNoZXIgZGFucyBjaGFxdWUgcGFnZSBkXCd1biByw6lzdWx0YXQgZGUgcmVjaGVyY2hlIGRhbnMgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOb21icmUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGFmZmljaGVyIGRhbnMgY2hhcXVlIHBhZ2UgZFwndW4gcsOpc3VsdGF0IGRlIHJlY2hlcmNoZSBkYW5zIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ0xlcyBvYmpldHMgw6AgcmVjaGVyY2hlciwgbGUgbm9tYnJlIGRcJ2VudHLDqWVzIGV0IGxlcyBhdHRyaWJ1dHMgw6AgYWZmaWNoZXIuIExlcyBhdHRyaWJ1dHMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkb2l2ZW50IMOqdHJlIGV4cGxpY2l0ZW1lbnQgc3RvY2vDqXMgdmlhIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1Z1ZSBkXCdlbnNlbWJsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGVzIGNhdMOpZ29yaWVzIGRlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZXMgZmlsdHJlcyBkZSBjb2xvbm5lIGRlIGxcJ2FwZXLDp3UgZGVzIHBldGl0cyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uIFJlbWFycXVlIDogc2kgbGEgdmFsZXVyICJBY3RpZiIgZXN0IGZpeMOpZSDDoCAwLCBsZXMgYWdlbnRzIG5lIHBvdXJyb250IHBhcyBtb2RpZmllciBsZXMgcGFyYW3DqHRyZXMgZGUgY2UgZ3JvdXBlIGRhbnMgbGV1cnMgcHLDqWbDqXJlbmNlcyBwZXJzb25uZWxsZXMsIG1haXMgbGVzIGFkbWluaXN0cmF0ZXVycyBwb3Vycm9udCB0b3Vqb3VycyBtb2RpZmllciBsZXMgcGFyYW3DqHRyZXMgYXUgbm9tIGRcJ3VuIGF1dHJlIHV0aWxpc2F0ZXVyLiBVdGlsaXNleiBcJ1ByZWZlcmVuY2VHcm91cFwnIHBvdXIgY29udHLDtGxlciBkYW5zIHF1ZWxsZSB6b25lIGNlcyBwYXJhbcOodHJlcyBkb2l2ZW50IMOqdHJlIGFmZmljaMOpcyBkYW5zIGxcJ2ludGVyZmFjZSB1dGlsaXNhdGV1ci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGEgY291bGV1ciBkZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgcG91ciBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbFwnZXhlbXBsZSBkZSBncm91cGVzIGRlIHBlcm1pc3Npb24gZGVzIGF0dHJpYnV0cyBnw6luw6lyYXV4IGR1IGNhdGFsb2d1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbm9tcyBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbnVtw6lyb3RhdGlvbiBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiB1bmlxdWVtZW50IHBvdXIgbGVzIGdyb3VwZXMgcsOpcGVydG9yacOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqHRyZXMgZHUgbW9kdWxlIGRlIGxhIGJvw650ZSDDoCBvdXRpbHMgZHUgbW9kw6hsZSBkZSBjaGHDrm5lIGRlIHZlcnNpb24gcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlIGTDqWNsZW5jaGV1ciBkZSB2ZXJzaW9uIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdFeMOpY3V0ZSBsXCdhY3Rpb24gY29uZmlndXLDqWUgcG91ciBjaGFxdWUgw6l2w6huZW1lbnQgKMOgIHRpdHJlIGRlIGRlbWFuZGV1cikgcG91ciBsZXMgc2VydmljZXMgV2ViIGNvbmZpZ3Vyw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnR3JvdXBlIGRlIHBlcm1pc3Npb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnYWN0aW9uIGRcJ2F0dGFjaGVtZW50IGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRcJ2FyYm9yZXNjZW5jZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGUgem9vbSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkXCdham91dCBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZW4gdnJhYyBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSBtb2RpZmljYXRpb24gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdHRyaWJ1dCAlcyBtaXMgw6Agam91ciBkZSAiJXMiIMOgICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZFwnaW1wcmVzc2lvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWzDqGdlcyByZXF1aXMgcG91ciBzdXBwcmltZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdSZWNoZXJjaGVyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pciBhdXRvbWF0aXF1ZW1lbnQgbFwnw6l0YXQgZFwnaW5jaWRlbnQgZFwndW4gQ0kgbG9yc3F1XCd1biB0aWNrZXQgZXN0IGxpw6kgw6AgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50IGRhbnMgbFwnw6ljcmFuIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCfDqXRhdCBkZSBsXCdpbmNpZGVudCBkYW5zIGxcJ8OpY3JhbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHF1aSBwZXJtZXQgZGUgbGllciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiDDoCB1biBhdXRyZSBvYmpldCBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgYWNjw6lkZXIgw6AgbFwnaGlzdG9yaXF1ZSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhY2PDqWRlciDDoCBsXCdoaXN0b3JpcXVlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIHpvb20gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBzdXBwcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBzYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgYWZmaWNoZXIgbGVzIGxpZW5zIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc291cyBmb3JtZSBkXCdhcmJvcmVzY2VuY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGR1cGxpcXVlciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBkdXBsaXF1ZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgbW9kaWZpZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgcmV2ZW5pciDDoCBsYSB2dWUgem9vbSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgaW1wcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwZXJtZXR0YW50IGRlIHpvb21lciBzdXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSBsXCdoaXN0b3JpcXVlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gKG9yZHJlIGludmVyc2UpIGRhbnMgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXTDqWdvcmllIHBhciBkw6lmYXV0IHF1aSBlc3QgYWZmaWNow6llIHNpIGF1Y3VuZSBuXCdlc3Qgc8OpbGVjdGlvbm7DqWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdMXCdpZGVudGlmaWFudCBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiwgcGFyIGV4ZW1wbGUgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIExhIHZhbGV1ciBwYXIgZMOpZmF1dCBlc3QgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdEw6ljbGVuY2hlIGF1dG9tYXRpcXVlbWVudCBsXCdpbnZva2VyIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc3Npb24gZGUgbGEgY2hhw65uZSBkZSBsYSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gQ2hhw65uZSBkZSBjYXJhY3TDqHJlcyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnRMOpY2xlbmNoZXVyIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIGxcJ2V4w6ljdXRpb24gZGUgQ29uZmlnSXRlbUFDTCBwZXV0IMOqdHJlIMOpdml0w6llIGVuIHbDqXJpZmlhbnQgbGVzIGTDqXBlbmRhbmNlcyBkZXMgY2hhbXBzIG1pcyBlbiBjYWNoZS4gQ2VsYSBwZXV0IGFtw6lsaW9yZXIgbGVzIHRlbXBzIGRlIGNoYXJnZW1lbnQgZGVzIGZvcm11bGFpcmVzLCBtYWlzIGRvaXQgw6p0cmUgZMOpc2FjdGl2w6kgc2kgbGVzIG1vZHVsZXMgQUNMTSBkb2l2ZW50IMOqdHJlIHV0aWxpc8OpcyBwb3VyIGxlcyB0eXBlcyBJVFNNQ29uZmlnSXRlbSBldCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+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+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTnVtw6lybyBkXCdpbnZlbnRhaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnQ2/Du3RzIGRcJ2ludmVzdGlzc2VtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBsYSBmYWN0dXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnQ2xhdmllcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdGV1ciBMQ0QgKMOpY3JhbiDDoCBjcmlzdGF1eCBsaXF1aWRlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0ZXVyIMOgIExFRCAoZGlvZGUgw6lsZWN0cm9sdW1pbmVzY2VudGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIGZpeGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnT3JkaW5hdGV1ciBwb3J0YWJsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnQ291Y2hlIDEgOiBDb3VjaGUgcGh5c2lxdWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnQ291Y2hlIDIgOiBDb3VjaGUgbGlhaXNvbiBkZSBkb25uw6llcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnQ291Y2hlIDMgOiBDb3VjaGUgcsOpc2VhdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdDb3VjaGUgMyA6IENvdWNoZSByw6lzZWF1IChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnQ291Y2hlIDQgOiBDb3VjaGUgdHJhbnNwb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdDb3VjaGUgNSA6IGNvdWNoZSBzZXNzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0NvdWNoZSA2IDogY291Y2hlIGRlIHByw6lzZW50YXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdDb3VjaGUgNyA6IENvdWNoZSBhcHBsaWNhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0IGRlIGJhaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnQ2zDqSBkZSBsaWNlbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1R5cGUgZGUgbGljZW5jZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnUMOpcmlvZGUgZGUgbGljZW5jZSBkdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ1DDqXJpb2RlIGRlIGxpY2VuY2UganVzcXVcJ8OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBhdSBwaG9zcGhhdGUgZGUgZmVyIGxpdGhpw6kgKExpRmVQTzQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdCYXR0ZXJpZSBhdSBsaXRoaXVtLWlvbiAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0NvbnRyYXQgZGUgcHLDqnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ1NpdHXDqSDDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWNhbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ0NhcGFjaXTDqSBkZSBjaGFyZ2UgbWF4aW1hbGUgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ03DqW1vaXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVHlwZSBkZSBtw6ltb2lyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHTDqWzDqXBob25lIG1vYmlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbGUvRW1iZWRkZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2TDqGxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnRGVzY3JpcHRpb24gZHUgbW9kw6hsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSw6lzb2x1dGlvbiBkdSBtb25pdGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdUYWlsbGUgZHUgbW9uaXRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdTb3VyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1LDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYXRpb25zIHN1ciBsZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hdGlvbnMgc3VyIGxlIHLDqXNlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0NvdWNoZSByw6lzZWF1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgbmlja2VsLWNhZG1pdW0gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWUgbmlja2VsLWh5ZHJ1cmUgbcOpdGFsbGlxdWUgKE5pTUgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0FjY29yZCBkZSBub24tZGl2dWxnYXRpb24gKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdDYXJuZXQgZGUgbm90ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdOb21icmUgZGUgQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ05vbWJyZSBkZSBtb2R1bGVzIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOb21icmUgZGUgY2FydGVzIGdyYXBoaXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0ZXVyIE9MRUQgKGRpb2RlIMOpbGVjdHJvbHVtaW5lc2NlbnRlIG9yZ2FuaXF1ZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnRnJhaXMgZGUgZm9uY3Rpb25uZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSBjb21tYW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0F1dHJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU29ydGllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY2NvcmQgZGUgcGFydGVuYXJpYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIHTDqWzDqXBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUeXBlIGRlIHTDqWzDqXBob25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnQ8WTdXJzIHBoeXNpcXVlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0ZvdXJuaXR1cmUgZFwnw6luZXJnaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdBY2hldMOpIMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mb25kZXVyIGR1IHJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbml0w6lzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdDaGFtYnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnQ2FydGUgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXQgZGUgdmVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgc2F0ZWxsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIHBsb21iLWFjaWRlIHNjZWxsw6llIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTnVtw6lybyBkZSBzw6lyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnTG9naWNpZWwgc2VydmV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBzZXJ2aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnw4l0aXF1ZXR0ZSBkZSBzZXJ2aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cGUgZGUgcHJpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdMb2dpY2llbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0ludGVydmVuYW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnQWRyZXNzZSBJUCBkZSBkw6lwYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTdG9ja2FnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpdGlvbiBkZSBzdG9ja2FnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0ZpbGlhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1LDqXN1bcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50IGzDqWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRmlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gZGUgbGEgY2FydGUgZ3JhcGhpcXVlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRldXIgw6Agw6ljcmFuIHRhY3RpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQ2FzcXVlIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/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+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ0F1Y3VuZSBkb25uw6llIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG5cJ2Egw6l0w6kgdHJvdXbDqWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU8OpbGVjdGlvbm5lciBjZXQgw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdMYW5jZXIgbGEgcmVjaGVyY2hlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0NoZXJjaGVyIMOpZ2FsZW1lbnQgZGFucyBsZXMgdmVyc2lvbnMgcHLDqWPDqWRlbnRlcyA/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcG91ciBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTml2ZWF1IGRlIHByb2ZvbmRldXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGF2YW50L2FycmnDqHJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ05pdmVhdSBkZSBsaWVucyBtYXhpbXVtIGF0dGVpbnQgcG91ciBDb25maWdJdGVtICEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+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+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnQXVjdW4gY2hhbXAgZHluYW1pcXVlIHBlcnRpbmVudCBuXCdhIMOpdMOpIHRyb3V2w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbXBvc3NpYmxlIGRcJ2luc8OpcmVyIGRhbnMgbGEgdGFibGUgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnPDqXLDqSAwIGxpZ25lcyBkYW5zIGxhIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdRdWFudGl0w6kgbWF4aW1hbGUgcG91ciB1biDDqWzDqW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnQ2hhw65uZSBkZSB2ZXJzaW9uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0VycmV1ciBkZSBzeW5jaHJvbmlzYXRpb24gZGVzIGTDqWZpbml0aW9ucy4gVmV1aWxsZXogdsOpcmlmaWVyIGxlIGpvdXJuYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVm91cyBhdmV6IGRlcyBkw6lmaW5pdGlvbnMgSVRTTUNvbmZpZ0l0ZW0gcXVpIG5lIHNvbnQgcGFzIHN5bmNocm9uaXPDqWVzLiBWZXVpbGxleiBkw6lwbG95ZXIgdm9zIGNoYW5nZW1lbnRzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXLDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01haW50ZW5hbmNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFuaWZpw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnRW4gcsOpcGFyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2dWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Z1ZSBkXCdlbnNlbWJsZSBldCBjb25maXJtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YXRpb24gZGUgY2xhc3Nlcy9yw7RsZXMgZXQgZGUgbGV1cnMgY2hhbXBzIGNvbm5leGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnVW5lIGVycmV1ciBzXCdlc3QgcHJvZHVpdGUgbG9ycyBkZSBsXCdpbXBvcnRhdGlvbiBkZSBsYSBjbGFzc2UuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBDYWNow6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIE1vbnRyw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1ldCBkXCfDqXRlbmRyZSBsZXMgY29uZGl0aW9ucyBkZSByZWNoZXJjaGUgZGFucyBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4gR3LDomNlIMOgIGNldHRlIGZvbmN0aW9ubmFsaXTDqSwgdm91cyBwb3V2ZXogcmVjaGVyY2hlciwgcGFyIGV4ZW1wbGUsIGxlIG5vbSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBhdmVjIGRlcyBjb25kaXRpb25zIHRlbGxlcyBxdWUgIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWV0IGRcJ8OpdGVuZHJlIGxlcyBjb25kaXRpb25zIGRlIHJlY2hlcmNoZSBkYW5zIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4gQXZlYyBjZXR0ZSBmb25jdGlvbm5hbGl0w6ksIHZvdXMgcG91dmV6IHJlY2hlcmNoZXIgcGFyIGV4ZW1wbGUgbGUgbm9tIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGF2ZWMgZGVzIGNvbmRpdGlvbnMgdGVsbGVzIHF1ZSAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gYXR0cmlidcOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnw4lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGF0dHJpYnXDqXMgw6AgdW4gY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnw4lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGF0dHJpYnXDqXMgw6AgdW4gdXRpbGlzYXRldXIgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdQYXJhbcOodHJlcyBkZSBsYSBDTURCIChiYXNlIGRlIGRvbm7DqWVzIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWw6lyaWZpZXIgbGEgcHLDqXNlbmNlIGRcJ3VuIG5vbSB1bmlxdWUgdW5pcXVlbWVudCBkYW5zIGxhIG3Dqm1lIGNsYXNzZSBkZSBDb25maWdJdGVtICgiY2xhc3MiKSBvdSBnbG9iYWxlbWVudCAoImdsb2JhbCIpLCBjZSBxdWkgc2lnbmlmaWUgcXVlIGNoYXF1ZSBDb25maWdJdGVtIGV4aXN0YW50IGVzdCBwcmlzIGVuIGNvbXB0ZSBsb3JzIGRlIGxhIHJlY2hlcmNoZSBkZSBkb3VibG9ucy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0Nob2lzaXNzZXogdW4gbW9kdWxlIHBvdXIgYXBwbGlxdWVyIHVuIHNjaMOpbWEgZGUgZMOpbm9taW5hdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0Nob2lzaXNzZXogdW4gbW9kdWxlIHBvdXIgYXBwbGlxdWVyIHVuIHN5c3TDqG1lIGRlIG51bcOpcm90YXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0Nob2lzaXNzZXogdW4gbW9kdWxlIHBvdXIgYXBwbGlxdWVyIHVuIHNjaMOpbWEgZGUgY2hhw65uZSBkZSB2ZXJzaW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1PDqWxlY3Rpb25uZXogbGVzIGF0dHJpYnV0cyBxdWkgZMOpY2xlbmNoZW50IGxhIGNyw6lhdGlvbiBkXCd1bmUgbm91dmVsbGUgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnU8OpbGVjdGlvbm5leiBsZXMgY2F0w6lnb3JpZXMgw6AgYWZmZWN0ZXIgw6AgY2V0dGUgY2xhc3NlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmVzIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbGEgY29sb25uZSBwb3VyIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0NvbG9ubmVzIHBvdXZhbnQgw6p0cmUgZmlsdHLDqWVzIGRhbnMgbGEgdnVlIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50LiBSZW1hcnF1ZSA6IHNldWxzIGxlcyBhdHRyaWJ1dHMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBldCBsZXMgY2hhbXBzIGR5bmFtaXF1ZXMgKER5bmFtaWNGaWVsZF9OYW1lWCkgc29udCBhdXRvcmlzw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGFqb3V0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfDiWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gw6lkaXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBxdWkgcGVybWV0IGxcJ2VucmVnaXN0cmVtZW50IGRhbnMgbFwnaGlzdG9yaXF1ZSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTW9kdWxlIGRcJ8OpdsOpbmVtZW50IHBvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBxdWkgbWV0IMOgIGpvdXIgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsZXVyIGTDqWZpbml0aW9uIGFjdHVlbGxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0hpc3RvcmlxdWUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJlc3Npb24gZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnVnVlIGTDqXRhaWxsw6llIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0FyYm9yZXNjZW5jZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMZXMgQ29uZmlnSXRlbXMgZGVzIGNsYXNzZXMgc3VpdmFudGVzIG5lIHNlcm9udCBwYXMgc3RvY2vDqXMgc3VyIGxlIHNlcnZldXIgRWxhc3RpY3NlYXJjaC4gUG91ciBhcHBsaXF1ZXIgY2VsYSBhdXggQ0kgZXhpc3RhbnRzLCBsYSBtaWdyYXRpb24gZGVzIENJIGRvaXQgw6p0cmUgZXjDqWN1dMOpZSB2aWEgbGEgY29uc29sZSwgYXByw6hzIGF2b2lyIGNoYW5nw6kgY2V0dGUgb3B0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdMZXMgQ29uZmlnSXRlbXMgYXZlYyBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBzdWl2YW50cyBuZSBzZXJvbnQgcGFzIHN0b2Nrw6lzIHN1ciBsZSBzZXJ2ZXVyIEVsYXN0aWNzZWFyY2guIFBvdXIgYXBwbGlxdWVyIGNlbGEgYXV4IENJIGV4aXN0YW50cywgbGEgbWlncmF0aW9uIGRlcyBDSSBkb2l0IMOqdHJlIGV4w6ljdXTDqWUgdmlhIGxhIGNvbnNvbGUsIGFwcsOocyBhdm9pciBjaGFuZ8OpIGNldHRlIG9wdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXRlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnTGltaXRlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBwYXIgcGFnZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZG9ubsOpZXMgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ8OJbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIG1vZHVsZSBlbiB2cmFjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfDiWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiByZWNoZXJjaGUgcm91dGV1ciBiYWNrZW5kIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3LDqWVyIGV0IGfDqXJlciBsZXMgZMOpZmluaXRpb25zIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3LDqWUgZGVzIHRpY2tldHMgcG91ciBsZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGRlcyBtb21lbnRzIHByw6ljaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0xlcyBjbGllbnRzIHBldXZlbnQgY29uc3VsdGVyIGxcJ2hpc3RvcmlxdWUgZGVzIHZlcnNpb25zIGRlIGxcJ0lDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdMZXMgY2xpZW50cyBvbnQgbGEgcG9zc2liaWxpdMOpIGRlIHBhc3NlciBtYW51ZWxsZW1lbnQgZFwndW5lIHZlcnNpb24gaGlzdG9yaXF1ZSBkZSBDSSDDoCBsXCdhdXRyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEb25uw6llcyBwYXIgZMOpZmF1dCDDoCB1dGlsaXNlciBzdXIgbFwnYXR0cmlidXQgZGUgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBFeGVtcGxlIDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTIgOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRG9ubsOpZXMgcGFyIGTDqWZhdXQgw6AgdXRpbGlzZXIgc3VyIGxcJ2F0dHJpYnV0IGRlIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4gRXhlbXBsZSA6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zIDsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRMOpZmluaXIgbGVzIGFjdGlvbnMgcG91ciBsZXNxdWVsbGVzIHVuIGJvdXRvbiBkZSBjb25maWd1cmF0aW9uIGVzdCBkaXNwb25pYmxlIGRhbnMgbGUgd2lkZ2V0IGRlcyBvYmpldHMgbGnDqXMgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVmV1aWxsZXogbm90ZXIgcXVlIGNlcyBhY3Rpb25zIGRvaXZlbnQgYXZvaXIgZW5yZWdpc3Ryw6kgbGVzIGZpY2hpZXJzIEpTIGV0IENTUyBzdWl2YW50cyA6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGV0IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0TDqWZpbmlyIHVuIHNjaMOpbWEgVGVtcGxhdGU6OlRvb2xraXQgcG91ciBsZXMgY2hhw65uZXMgZGUgdmVyc2lvbi4gVXRpbGlzw6kgdW5pcXVlbWVudCBzaSBsZSBtb2R1bGUgZGUgY2hhw65uZSBkZSB2ZXJzaW9uIGVzdCBkw6lmaW5pIHN1ciBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEw6lmaW5pciB1biBlbnNlbWJsZSBkZSBjb25kaXRpb25zIHNvdXMgbGVzcXVlbGxlcyB1biBjbGllbnQgZXN0IGF1dG9yaXPDqSDDoCB2b2lyIHVuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLiBMZXMgY29uZGl0aW9ucyBwZXV2ZW50IMOpdmVudHVlbGxlbWVudCDDqnRyZSBsaW1pdMOpZXMgw6AgY2VydGFpbnMgZ3JvdXBlcyBkZSBjbGllbnRzLiBMZSBub20gZXN0IGxlIHNldWwgYXR0cmlidXQgb2JsaWdhdG9pcmUuIFNpIGF1Y3VuZSBhdXRyZSBvcHRpb24gblwnZXN0IGRvbm7DqWUsIHRvdXMgbGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBzZXJvbnQgdmlzaWJsZXMgZGFucyBjZXR0ZSBjYXTDqWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBzdXBwcmltZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIMOgIGxcJ2FpZGUgZGUgbFwnaW50ZXJmYWNlIGfDqW7DqXJpcXVlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbGVzIGF1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciBvYnRlbmlyIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBhdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgcmVjaGVyY2hlciBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gw6AgbFwnYWlkZSBkZSBsXCdpbnRlcmZhY2UgZ8OpbsOpcmlxdWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgYXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIGTDqWZpbmlyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSDDoCBsXCdhaWRlIGRlIGxcJ2ludGVyZmFjZSBnw6luw6lyaXF1ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRMOpZmluaXQgdW4gbW9kdWxlIGRlIHZ1ZSBkXCdlbnNlbWJsZSBwb3VyIGFmZmljaGVyIGxhIHBldGl0ZSB2dWUgZFwndW5lIGxpc3RlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRMOpZmluaXQgc2kgbGVzIMOpdGlxdWV0dGVzIGRlIHR5cGUgZGUgbGllbiBkb2l2ZW50IMOqdHJlIGFmZmljaMOpZXMgZGFucyBsZXMgY29ubmV4aW9ucyBkZSBuxZN1ZHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdEw6lmaW5pdCBkZXMgZXhwcmVzc2lvbnMgcsOpZ3VsacOocmVzIGluZGl2aWR1ZWxsZW1lbnQgcG91ciBjaGFxdWUgY2xhc3NlIENvbmZpZ0l0ZW0gYWZpbiBkZSB2w6lyaWZpZXIgbGUgbm9tIGR1IENvbmZpZ0l0ZW0gZXQgZFwnYWZmaWNoZXIgbGVzIG1lc3NhZ2VzIGRcJ2VycmV1ciBjb3JyZXNwb25kYW50cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgZGlzcG9uaWJsZXMgcG91ciBsZXMgQ0kgZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZW4gZm9uY3Rpb24gZGUgbGEgY2xhc3NlIGR1IENJLiBDaGFxdWUgZW50csOpZSBkb2l0IMOqdHJlIGNvbnN0aXR1w6llIGRcJ3VuIG5vbSBkZSBjbGFzc2UgZXQgZFwndW4gdGFibGVhdSBkZSBjaGFtcHMgZGlzcG9uaWJsZXMgcG91ciBsYSBjbGFzc2UgY29ycmVzcG9uZGFudGUuIExlcyBlbnRyw6llcyBkZSBjaGFtcHMgZHluYW1pcXVlcyBkb2l2ZW50IHJlc3BlY3RlciBsZSBzY2jDqW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBwYXIgZMOpZmF1dCBwb3VyIGxlIHRyaSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnYXR0cmlidXQgZFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gcGFyIGTDqWZhdXQgcG91ciBsZSB0cmkgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxlIHLDqXN1bHRhdCBkZSBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGNldHRlIG9ww6lyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50LiBVcCA6IGxlIHBsdXMgYW5jaWVuIGVzdCBlbiBoYXV0LiBFbiBiYXMgOiBsZSBwbHVzIHLDqWNlbnQgZW4gaGF1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIHBhciBkw6lmYXV0IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsZSByw6lzdWx0YXQgZGUgbGEgcmVjaGVyY2hlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgY2xpZW50LiBFbiBoYXV0IDogbGUgcGx1cyBhbmNpZW4gZXN0IGVuIGhhdXQuIEVuIGJhcyA6IGxlIHBsdXMgcsOpY2VudCBlbiBoYXV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdvcmRyZSBwYXIgZMOpZmF1dCBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgY2V0dGUgb3DDqXJhdGlvbi4gRW4gaGF1dCA6IGxlIHBsdXMgYW5jaWVuIGVuIGhhdXQuIFZlcnMgbGUgYmFzIDogbGUgcGx1cyByw6ljZW50IGVuIGhhdXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgYWZmaWNow6llcyBwYXIgZMOpZmF1dCBkZXMgQ0kgZGFucyBsYSB2dWUgZFwnZW5zZW1ibGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsYSBjbGFzc2UgZHUgQ0kuIENoYXF1ZSBlbnRyw6llIGRvaXQgw6p0cmUgY29uc3RpdHXDqWUgZFwndW4gbm9tIGRlIGNsYXNzZSBldCBkXCd1biB0YWJsZWF1IGRlIGNoYW1wcyBkaXNwb25pYmxlcyBwb3VyIGxhIGNsYXNzZSBjb3JyZXNwb25kYW50ZS4gTGVzIGVudHLDqWVzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIGRvaXZlbnQgcmVzcGVjdGVyIGxlIHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRMOpZmluaXQgbGEgcHJvZm9uZGV1ciBwYXIgZMOpZmF1dCBkZXMgcmVsYXRpb25zIMOgIGFmZmljaGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkZSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGFmZmljaMOpIHBhciBkw6lmYXV0IHBvdXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCdhdHRyaWJ1dCBkZSByZWNoZXJjaGUgZGUgbFwnw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gYWZmaWNow6kgcGFyIGTDqWZhdXQgcG91ciBsXCfDqWNyYW4gZGUgcmVjaGVyY2hlIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uLiBFeGVtcGxlIDogIktleSIgZG9pdCBjb250ZW5pciBsZSBub20gZHUgY2hhbXAgZHluYW1pcXVlLCBkYW5zIGNlIGNhcyAiWCIsICJDb250ZW50IiBkb2l0IGNvbnRlbmlyIGxhIHZhbGV1ciBkdSBjaGFtcCBkeW5hbWlxdWUgZW4gZm9uY3Rpb24gZHUgdHlwZSBkZSBjaGFtcCBkeW5hbWlxdWUsIFRleHQgOiAidW4gdGV4dGUiLCBEcm9wZG93biA6ICIxIiwgRGF0ZS9UaW1lIDogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0IiA6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMSA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjYgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMCA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDAgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDEgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjYgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzIDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5IDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5IDtldCBvdSAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWsgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmUgOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03IiA7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRMOpZmluaXQgbGUgc291cy1vYmpldCBwYXIgZMOpZmF1dCBkZSBsYSBjbGFzc2UgIklUU01Db25maWdJdGVtIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxlcyBjb2xvbm5lcyBkaXNwb25pYmxlcyBwb3VyIGxlcyBDSSBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBlbiBmb25jdGlvbiBkZSBsYSBjbGFzc2UgZHUgQ0kuIENoYXF1ZSBlbnRyw6llIGRvaXQgw6p0cmUgY29uc3RpdHXDqWUgZFwndW4gbm9tIGRlIGNsYXNzZSBldCBkXCd1biB0YWJsZWF1IGRlIGNoYW1wcyBkaXNwb25pYmxlcyBwb3VyIGxhIGNsYXNzZSBjb3JyZXNwb25kYW50ZS4gTGVzIGVudHLDqWVzIGRlIGNoYW1wcyBkeW5hbWlxdWVzIGRvaXZlbnQgcmVzcGVjdGVyIGxlIHNjaMOpbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgaGF1dGV1ciBkdSBjb21wb3NhbnQgZGUgbFwnw6lkaXRldXIgZGUgdGV4dGUgZW5yaWNoaSBwb3VyIGNldCDDqWNyYW4uIEVudHJleiB1biBub21icmUgKHBpeGVscykgb3UgdW5lIHZhbGV1ciBlbiBwb3VyY2VudGFnZSAocmVsYXRpdmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZSBub21icmUgZGUgbGlnbmVzIHBvdXIgbFwnw6lkaXRldXIgZGUgZMOpZmluaXRpb24gZGUgQ0kgZGFucyBsXCdpbnRlcmZhY2UgZFwnYWRtaW5pc3RyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxcJ29yZHJlIGRlcyDDqXRhdHMgaW5jaWRlbnRzLCBkZSBoYXV0IChwYXIgZXhlbXBsZSwgY3JpY2l0YWwpIMOgIGJhcyAocGFyIGV4ZW1wbGUsIGZvbmN0aW9ubmVsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgw6l0YXRzIGRlIGTDqXBsb2llbWVudCBwZXJ0aW5lbnRzIGRhbnMgbGVzcXVlbHMgbGVzIHRpY2tldHMgbGnDqXMgcGV1dmVudCBhZmZlY3RlciBsZSBzdGF0dXQgZFwndW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0TDqWZpbml0IGxhIGxpbWl0ZSBkZSByZWNoZXJjaGUgcG91ciBsXCfDqWNyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEw6lmaW5pdCBsYSBsaW1pdGUgZGUgcmVjaGVyY2hlIHBvdXIgbFwnw6ljcmFuIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRMOpZmluaXQgbGEgbGltaXRlIGRlIHJlY2hlcmNoZSBwb3VyIGxcJ8OpY3JhbiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgYWZmaWNow6llcyBkZXMgQ0kgZGFucyBsYSB2dWUgY29tcGxleGUgZGUgbGEgdGFibGUgZGVzIGxpZW5zIHBvdXIgdG91dGVzIGxlcyBjbGFzc2VzIGRlIENJLiBTXCdpbCBuXCd5IGEgcGFzIGRcJ2VudHLDqWUsIGxlcyBjb2xvbm5lcyBwYXIgZMOpZmF1dCBzb250IGFmZmljaMOpZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgY29sb25uZXMgYWZmaWNow6llcyBkZXMgQ0kgZGFucyBsYSB2dWUgY29tcGxleGUgZGUgbGEgdGFibGUgZGVzIGxpZW5zLCBlbiBmb25jdGlvbiBkZSBsYSBjbGFzc2UgZHUgQ0kuIENoYXF1ZSBlbnRyw6llIGRvaXQgw6p0cmUgcHLDqWPDqWTDqWUgZHUgbm9tIGRlIGxhIGNsYXNzZSBldCBkZSBkZXV4IHBvaW50cyAocGFyIGV4ZW1wbGUgOiBPcmRpbmF0ZXVyOiA6KS4gUXVlbHF1ZXMgYXR0cmlidXRzIGRlIENJIHNvbnQgY29tbXVucyDDoCB0b3VzIGxlcyBDSSAoZXhlbXBsZSBwb3VyIGxhIGNsYXNzZSBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSwgT3JkaW5hdGV1cjo6Tm9tLCBPcmRpbmF0ZXVyOjpOb20sIE9yZGluYXRldXI6Ok5vbSkgOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBQb3VyIGFmZmljaGVyIGxlcyBhdHRyaWJ1dHMgZGUgQ0kgaW5kaXZpZHVlbHMgdGVscyBxdWUgZMOpZmluaXMgZGFucyBsYSBkw6lmaW5pdGlvbiBkZSBDSSwgaWwgY29udmllbnQgZFwndXRpbGlzZXIgbGUgc2Now6ltYSBzdWl2YW50IChleGVtcGxlIHBvdXIgbGEgY2xhc3NlIE9yZGluYXRldXIpIDogT3JkaW5hdGV1cjo6SGFyZERpc2s6OjEsIE9yZGluYXRldXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgT3JkaW5hdGV1cjo6SGFyZERpc2s6OjIsIE9yZGluYXRldXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gU1wnaWwgblwneSBhIHBhcyBkXCdlbnRyw6llIHBvdXIgdW5lIGNsYXNzZSBDSSwgbGVzIGNvbG9ubmVzIHBhciBkw6lmYXV0IHNvbnQgYWZmaWNow6llcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgw6lsw6ltZW50cyBkaXNwb25pYmxlcyBwb3VyICJBY3Rpb24iIGF1IHRyb2lzacOobWUgbml2ZWF1IGRlIGxhIHN0cnVjdHVyZSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgw6lsw6ltZW50cyBkaXNwb25pYmxlcyBhdSBwcmVtaWVyIG5pdmVhdSBkZSBsYSBzdHJ1Y3R1cmUgZGUgbFwnQUNMIGRlcyDDqWzDqW1lbnRzIGRlIGxhIENvbmZpZyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEw6lmaW5pdCBsZXMgw6lsw6ltZW50cyBkaXNwb25pYmxlcyBhdSBkZXV4acOobWUgbml2ZWF1IGRlIGxhIHN0cnVjdHVyZSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRMOpZmluaXQgcXVlbCB0eXBlIGRlIGxpZW4gKG5vbW3DqSBkdSBwb2ludCBkZSB2dWUgZHUgdGlja2V0KSBwZXV0IGFmZmVjdGVyIGxlIHN0YXR1dCBkXCd1biBDSSBsacOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0TDqWZpbml0IHF1ZWwgdHlwZSBkZSB0aWNrZXQgcGV1dCBhZmZlY3RlciBsZSBzdGF0dXQgZFwndW4gQ0kgbGnDqS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdNaXNlIMOgIGpvdXIgZGUgbGEgZMOpZmluaXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1N1cHByaW1lciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0NvdWxldXIgZGUgbFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ8OJdGF0IGRlIGTDqXBsb2llbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaXF1ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bGUgZFwnw6l2w6luZW1lbnQgZGUgY2hhbXAgZHluYW1pcXVlIHF1aSBtYXJxdWUgbGVzIGTDqWZpbml0aW9ucyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gY29tbWUgw6l0YW50IGTDqXN5bmNocm9uaXPDqWVzLCBzaSBsZXMgY2hhbXBzIGR5bmFtaXF1ZXMgcXVcJ2VsbGVzIGNvbnRpZW5uZW50IGNoYW5nZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2hhbXBzIGR5bmFtaXF1ZXMgYWZmaWNow6lzIGRhbnMgbFwnw6ljcmFuIGRlcyBjaGFtcHMgSVRTTSBzdXBwbMOpbWVudGFpcmVzIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2hhbXBzIGR5bmFtaXF1ZXMgYWZmaWNow6lzIGRhbnMgbFwnw6ljcmFuIGRlIHN5bnRow6hzZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NoYW1wcyBkeW5hbWlxdWVzIGFmZmljaMOpcyBkYW5zIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBsYSBmb25jdGlvbiBkXCdhY3Rpb24gZW4gYmxvYyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHBvdXIgcXVlIGxlIGZyb250ZW5kIGRlIGxcJ2FnZW50IHB1aXNzZSB0cmF2YWlsbGVyIHN1ciBwbHVzIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIMOgIGxhIGZvaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBY3RpdmUgbGEgZm9uY3Rpb24gZFwnYWN0aW9uIGVuIGJsb2MgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiB1bmlxdWVtZW50IHBvdXIgbGVzIGdyb3VwZXMgcsOpcGVydG9yacOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWN0aXZlL2TDqXNhY3RpdmUgbGEgZm9uY3Rpb25uYWxpdMOpIGRlIHbDqXJpZmljYXRpb24gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIHBvdXIgbGVzIG5vbXMgdW5pcXVlcy4gQXZhbnQgZFwnYWN0aXZlciBjZXR0ZSBvcHRpb24sIHZvdXMgZGV2ZXogdsOpcmlmaWVyIHNpIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZXhpc3RhbnRzIG9udCBkZXMgbm9tcyBlbiBkb3VibGUuIFZvdXMgcG91dmV6IGxlIGZhaXJlIGF2ZWMgbGEgY29tbWFuZGUgZGUgbGEgY29uc29sZSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ01vZHVsZSBkXCfDqXbDqW5lbWVudCBwb3VyIGTDqWZpbmlyIGxlIHN0YXR1dCBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBzdXIgbGUgbGllbiB0aWNrZXQtY29uZmlnaXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ2hhbXBzIGRlIGxcJ2luZGV4IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24sIHV0aWxpc8OpcyBwb3VyIGxhIHJlY2hlcmNoZSBlbiB0ZXh0ZSBpbnTDqWdyYWwuIExlcyBjaGFtcHMgc29udCDDqWdhbGVtZW50IHN0b2Nrw6lzLCBtYWlzIG5lIHNvbnQgcGFzIG9ibGlnYXRvaXJlcyBwb3VyIGxhIGZvbmN0aW9ubmFsaXTDqSBnbG9iYWxlLiBMXCdpbmNsdXNpb24gZGVzIHBpw6hjZXMgam9pbnRlcyBwZXV0IMOqdHJlIGTDqXNhY3RpdsOpZSBlbiBtZXR0YW50IGxcJ2VudHLDqWUgw6AgMCBvdSBlbiBsYSBzdXBwcmltYW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2hhbXBzIHN0b2Nrw6lzIGRhbnMgbFwnaW5kZXggZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBxdWkgc29udCB1dGlsaXPDqXMgcG91ciBkXCdhdXRyZXMgY2hvc2VzIHF1ZSBsZXMgcmVjaGVyY2hlcyBlbiB0ZXh0ZSBpbnTDqWdyYWwuIFBvdXIgdW5lIGZvbmN0aW9ubmFsaXTDqSBjb21wbMOodGUsIHRvdXMgbGVzIGNoYW1wcyBzb250IG9ibGlnYXRvaXJlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQb3VyIGNoYXF1ZSBzZXJ2aWNlIHdlYiAoY2zDqSksIHVuIHRhYmxlYXUgZGUgY2xhc3NlcyAodmFsZXVyKSBwZXV0IMOqdHJlIGTDqWZpbmkgc3VyIGxlcXVlbCBsXCdpbXBvcnRhdGlvbiBlc3QgcmVzdHJlaW50ZS4gUG91ciB0b3V0ZXMgbGVzIGNsYXNzZXMgY2hvaXNpZXMsIG91IHBvdXIgdG91dGVzIGxlcyBjbGFzc2VzIGV4aXN0YW50ZXMsIGxlcyBhdHRyaWJ1dHMgZFwnaWRlbnRpZmljYXRpb24gZGV2cm9udCDDqnRyZSBjaG9pc2lzIGRhbnMgbGEgY29uZmlndXJhdGlvbiBkZSBsXCdpbnZvY2F0ZXVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdFbnJlZ2lzdHJlbWVudCBkdSBtb2R1bGUgR2VuZXJpY0ludGVyZmFjZSBwb3VyIGxhIGNvdWNoZSBkXCdpbnZvY2F0aW9uIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnRW5yZWdpc3RyZW1lbnQgZHUgbW9kdWxlIEdlbmVyaWNJbnRlcmZhY2UgcG91ciBsYSBjb3VjaGUgZFwnaW52b2NhdGlvbiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1Z1ZSBkXCdlbnNlbWJsZSBkZSBsXCfDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ8OJdGF0IGRlIGxcJ2luY2lkZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdXQgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgZGFucyBsYSByZWNoZXJjaGUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBjbGllbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1dCBsZXMgw6l0YXRzIGRcJ2luY2lkZW50cyBkYW5zIGxhIHJlY2hlcmNoZSBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTm9tYnJlIG1heGltdW0gZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGFmZmljaGVyIGRhbnMgbGUgcsOpc3VsdGF0IGRlIGNldHRlIG9ww6lyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxlIHBlcm1ldHRhbnQgZGUgdsOpcmlmaWVyIGxlIGdyb3VwZSByZXNwb25zYWJsZSBkXCd1bmUgY2xhc3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSBwZXJtZXR0YW50IGRlIHbDqXJpZmllciBsZSBncm91cGUgcmVzcG9uc2FibGUgZFwndW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWxlIHBlcm1ldHRhbnQgZGUgZ8OpbsOpcmVyIGRlcyBzdGF0aXN0aXF1ZXMgc3VyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb20gZHUgbW9kdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOdW3DqXJvIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOb21icmUgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIMOgIGFmZmljaGVyIGRhbnMgY2hhcXVlIHBhZ2UgZFwndW4gcsOpc3VsdGF0IGRlIHJlY2hlcmNoZSBkYW5zIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTm9tYnJlIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiDDoCBhZmZpY2hlciBkYW5zIGNoYXF1ZSBwYWdlIGRcJ3VuIHLDqXN1bHRhdCBkZSByZWNoZXJjaGUgZGFucyBsXCdpbnRlcmZhY2UgY2xpZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdMZXMgb2JqZXRzIMOgIHJlY2hlcmNoZXIsIGxlIG5vbWJyZSBkXCdlbnRyw6llcyBldCBsZXMgYXR0cmlidXRzIMOgIGFmZmljaGVyLiBMZXMgYXR0cmlidXRzIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZG9pdmVudCDDqnRyZSBleHBsaWNpdGVtZW50IHN0b2Nrw6lzIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWdWUgZFwnZW5zZW1ibGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxlcyBjYXTDqWdvcmllcyBkZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGVzIGZpbHRyZXMgZGUgY29sb25uZSBkZSBsXCdhcGVyw6d1IGRlcyBwZXRpdHMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uLiBSZW1hcnF1ZSA6IHNpIGxhIHZhbGV1ciAiQWN0aWYiIGVzdCBmaXjDqWUgw6AgMCwgbGVzIGFnZW50cyBuZSBwb3Vycm9udCBwYXMgbW9kaWZpZXIgbGVzIHBhcmFtw6h0cmVzIGRlIGNlIGdyb3VwZSBkYW5zIGxldXJzIHByw6lmw6lyZW5jZXMgcGVyc29ubmVsbGVzLCBtYWlzIGxlcyBhZG1pbmlzdHJhdGV1cnMgcG91cnJvbnQgdG91am91cnMgbW9kaWZpZXIgbGVzIHBhcmFtw6h0cmVzIGF1IG5vbSBkXCd1biBhdXRyZSB1dGlsaXNhdGV1ci4gVXRpbGlzZXogXCdQcmVmZXJlbmNlR3JvdXBcJyBwb3VyIGNvbnRyw7RsZXIgZGFucyBxdWVsbGUgem9uZSBjZXMgcGFyYW3DqHRyZXMgZG9pdmVudCDDqnRyZSBhZmZpY2jDqXMgZGFucyBsXCdpbnRlcmZhY2UgdXRpbGlzYXRldXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxhIGNvdWxldXIgZGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGVzIMOpdGF0cyBkZSBkw6lwbG9pZW1lbnQgZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBwb3VyIGxcJ2V4ZW1wbGUgZGVzIHBlcm1pc3Npb25zIGRlIGdyb3VwZXMgZGVzIGF0dHJpYnV0cyBkdSBjYXRhbG9ndWUgZ8OpbsOpcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIGR1IG1vZHVsZSBkZSBub21zIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIGR1IG1vZHVsZSBkZSBudW3DqXJvdGF0aW9uIGRlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ0FjdGl2ZSBsYSBmb25jdGlvbiBkXCdhY3Rpb24gZW4gYmxvYyBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIHVuaXF1ZW1lbnQgcG91ciBsZXMgZ3JvdXBlcyByw6lwZXJ0b3Jpw6lzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgY2hhw65uZSBkZSB2ZXJzaW9uIHBvdXIgbGVzIGNsYXNzZXMgZFwnw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIGRlcyBwcsOpZsOpcmVuY2VzIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbcOodHJlcyBkdSBtb2R1bGUgZGUgbGEgYm/DrnRlIMOgIG91dGlscyBkdSBtb2TDqGxlIGRlIGNoYcOubmUgZGUgdmVyc2lvbiBwb3VyIGxlcyBjbGFzc2VzIGRcJ8OpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxhIHZ1ZSBkZXMgcHLDqWbDqXJlbmNlcyBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtw6h0cmVzIHBvdXIgbGUgZMOpY2xlbmNoZXVyIGRlIHZlcnNpb24gcG91ciBsZXMgY2xhc3NlcyBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgZGVzIHByw6lmw6lyZW5jZXMgZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ0VmZmVjdHVlIGxcJ2FjdGlvbiBjb25maWd1csOpZSBwb3VyIGNoYXF1ZSDDqXbDqW5lbWVudCAoZW4gdGFudCBxdVwnaW52b2NhdGV1cikgcG91ciBjaGFxdWUgV2Vic2VydmljZSBjb25maWd1csOpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnUGVybWlzc2lvbiBkdSBncm91cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnYWN0aW9uIGRcJ2F0dGFjaGVtZW50IGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRlIHJlY2hlcmNoZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSByZWNoZXJjaGUgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGNsaWVudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcmlzYXRpb25zIHJlcXVpc2VzIHBvdXIgdXRpbGlzZXIgbFwnw6ljcmFuIGRcJ2FyYm9yZXNjZW5jZSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZGUgem9vbSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkXCdham91dCBkXCfDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gSVRTTSBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZW4gdnJhYyBkYW5zIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3Jpc2F0aW9ucyByZXF1aXNlcyBwb3VyIHV0aWxpc2VyIGxcJ8OpY3JhbiBkZSBtb2RpZmljYXRpb24gZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBJVFNNIGRhbnMgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdHRyaWJ1dCAlcyBtaXMgw6Agam91ciBkZSAiJXMiIMOgICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F1dG9yaXNhdGlvbnMgcmVxdWlzZXMgcG91ciB1dGlsaXNlciBsXCfDqWNyYW4gZFwnaW1wcmVzc2lvbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIElUU00gZGFucyBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWzDqGdlcyByZXF1aXMgcG91ciBzdXBwcmltZXIgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdSZWNoZXJjaGVyIGxlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdEw6lmaW5pciBhdXRvbWF0aXF1ZW1lbnQgbFwnw6l0YXQgZFwnaW5jaWRlbnQgZFwndW4gQ0kgbG9yc3F1XCd1biB0aWNrZXQgZXN0IGxpw6kgw6AgdW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRMOpZmluaXQgbFwnw6l0YXQgZGUgZMOpcGxvaWVtZW50IGRhbnMgbFwnw6ljcmFuIGRcJ2Vuc2VtYmxlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGRlIGxcJ2FnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEw6lmaW5pdCBsXCfDqXRhdCBkZSBsXCdpbmNpZGVudCBkYW5zIGxcJ8OpY3JhbiBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHF1aSBwZXJtZXQgZGUgbGllciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiDDoCB1biBhdXRyZSBvYmpldCBkYW5zIGxhIHZ1ZSB6b29tIGRlIGxcJ8OpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgYWNjw6lkZXIgw6AgbFwnaGlzdG9yaXF1ZSBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBhY2PDqWRlciDDoCBsXCdoaXN0b3JpcXVlIGRcJ3VuIMOpbMOpbWVudCBkZSBjb25maWd1cmF0aW9uIGRhbnMgbGEgdnVlIHpvb20gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBzdXBwcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBzYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgYWZmaWNoZXIgbGVzIGxpZW5zIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gc291cyBmb3JtZSBkXCdhcmJvcmVzY2VuY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwb3VyIGR1cGxpcXVlciB1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiBkYW5zIGxcJ2FwZXLDp3UgZGVzIMOpbMOpbWVudHMgZGUgY29uZmlndXJhdGlvbiBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmZmljaGUgdW4gbGllbiBkYW5zIGxlIG1lbnUgcG91ciBkdXBsaXF1ZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgbW9kaWZpZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgZGUgbFwnYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgcmV2ZW5pciDDoCBsYSB2dWUgem9vbSBkZXMgw6lsw6ltZW50cyBkZSBjb25maWd1cmF0aW9uIGRlIGxcJ2ludGVyZmFjZSBkZSBsXCdhZ2VudC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmZpY2hlIHVuIGxpZW4gZGFucyBsZSBtZW51IHBvdXIgaW1wcmltZXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsYSB2dWUgem9vbSBkZSBsXCdpbnRlcmZhY2UgYWdlbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSB1biBsaWVuIGRhbnMgbGUgbWVudSBwZXJtZXR0YW50IGRlIHpvb21lciBzdXIgdW4gw6lsw6ltZW50IGRlIGNvbmZpZ3VyYXRpb24gZGFucyBsXCdhcGVyw6d1IGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gZGUgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZmaWNoZSBsXCdoaXN0b3JpcXVlIGRlcyDDqWzDqW1lbnRzIGRlIGNvbmZpZ3VyYXRpb24gKG9yZHJlIGludmVyc2UpIGRhbnMgbFwnaW50ZXJmYWNlIGFnZW50Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdMYSBjYXTDqWdvcmllIHBhciBkw6lmYXV0IHF1aSBlc3QgYWZmaWNow6llIHNpIGF1Y3VuZSBuXCdlc3Qgc8OpbGVjdGlvbm7DqWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdMXCdpZGVudGlmaWFudCBkXCd1biDDqWzDqW1lbnQgZGUgY29uZmlndXJhdGlvbiwgcGFyIGV4ZW1wbGUgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIExhIHZhbGV1ciBwYXIgZMOpZmF1dCBlc3QgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdEw6ljbGVuY2hlIGF1dG9tYXRpcXVlbWVudCBsXCdpbnZva2VyIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ0V4cHJlc3Npb24gZGUgbGEgY2hhw65uZSBkZSBsYSB2ZXJzaW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpb24gQ2hhw65uZSBkZSBjYXJhY3TDqHJlcyBNb2R1bGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnRMOpY2xlbmNoZXVyIGRlIHZlcnNpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1NpIGxcJ2V4w6ljdXRpb24gZGUgQ29uZmlnSXRlbUFDTCBwZXV0IMOqdHJlIMOpdml0w6llIGVuIHbDqXJpZmlhbnQgbGVzIGTDqXBlbmRhbmNlcyBkZXMgY2hhbXBzIG1pcyBlbiBjYWNoZS4gQ2VsYSBwZXV0IGFtw6lsaW9yZXIgbGVzIHRlbXBzIGRlIGNoYXJnZW1lbnQgZGVzIGZvcm11bGFpcmVzLCBtYWlzIGRvaXQgw6p0cmUgZMOpc2FjdGl2w6kgc2kgbGVzIG1vZHVsZXMgQUNMTSBkb2l2ZW50IMOqdHJlIHV0aWxpc8OpcyBwb3VyIGxlcyB0eXBlcyBJVFNNQ29uZmlnSXRlbSBldCBGb3JtLVJldHVyblR5cGVzLic7CiAgICAkU2VsZi0+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+eydIZWFkc2V0J30gPSAnQ2FzcXVlIGRcJ8OpY291dGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2NvbGUgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnR2VzdGlvbiBkZXMgaWRlbnRpdMOpcyBldCBkZXMgYWNjw6hzIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdOdW3DqXJvIGRcJ2ludmVudGFpcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDb8O7dHMgZFwnaW52ZXN0aXNzZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGxhIGZhY3R1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdDbGF2aWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0ZXVyIExDRCAow6ljcmFuIMOgIGNyaXN0YXV4IGxpcXVpZGVzKSc7CiAgICAkU2VsZi0+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+eydPcmRlciBOdW1iZXInfSA9ICdOdW3DqXJvIGRlIGNvbW1hbmRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQXV0cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1NvcnRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnQWNjb3JkIGRlIHBhcnRlbmFyaWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTnVtw6lybyBkZSB0w6lsw6lwaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVHlwZSBkZSB0w6lsw6lwaG9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0PFk3VycyBwaHlzaXF1ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdGb3Vybml0dXJlIGRcJ8OpbmVyZ2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnQWNoZXTDqSDDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUHJvZm9uZGV1ciBkdSByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnVW5pdMOpcyBkZSByYWNrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnUGnDqGNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnQ2FydGUgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdHMgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXQgZGUgdmVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnVMOpbMOpcGhvbmUgc2F0ZWxsaXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdHRlcmllIHBsb21iLWFjaWRlIHNjZWxsw6llIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTnVtw6lybyBkZSBzw6lyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnTG9naWNpZWwgc2VydmV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0FjY29yZCBkZSBzZXJ2aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnw4l0aXF1ZXR0ZSBkZSBzZXJ2aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ1R5cGUgZGUgcHJpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdMb2dpY2llbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0ludGVydmVuYW50cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnQWRyZXNzZSBJUCBkZSBkw6lwYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdTdG9ja2FnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpdGlvbiBkZSBzdG9ja2FnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0ZpbGlhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1LDqXN1bcOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnQ2xpZW50IGzDqWdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRmlscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gZGUgbGEgY2FydGUgZ3JhcGhpcXVlIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhbCBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRldXIgw6Agw6ljcmFuIHRhY3RpbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQ2FzcXVlIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1TDqWzDqXBob25lIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/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+eydSdW4gU2VhcmNoJ30gPSAnQ29tZXphciBidXNjYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnSW1wb3J0YXIgQ29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSBhY3R1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltbyBjYW1iaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnw5psdGltbyBjYW1iaW8gZmVpdG8gcG9yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnRGVzZXhhIHByb3NlZ3Vpcj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmVuY2lhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnRnVuY2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdBdmlzbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ0luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnUGVybWlzbyBkZW5lZ2FkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0VzdGFkbyBkbyBJbmNpZGVudGUgYWN0dWFsJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTsO6bWVybyBtw6F4aW1vIGR1biBlbGVtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdDYWR1Y2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnRlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnSW1wb3J0YXIgQ29uZmlndXJhY2nDs24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0b3MgcG9yIGRlZmVjdG8gcGFyYSB1c2FyIG5vIGF0cmlidXRvIHBhcmEgYSBwYW50YWxsYSBidXNjYSBkZSB0aWNrZXQuIEV4ZW1wbG86ICJUaWNrZXRDcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtUaWNrZXRDcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O1RpY2tldENyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0b3MgcG9yIGRlZmVjdG8gcGFyYSB1c2FyIG5vIGF0cmlidXRvIHBhcmEgYSBwYW50YWxsYSBidXNjYSBkZSB0aWNrZXQuIEV4ZW1wbG86ICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0RGF5PTQ7VGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0b3BNb250aD0xMTtUaWNrZXRDcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmUgdW4gbcOzZHVsbyBkZSB2aXN0YSB4ZXJhbCBwYXJhIG1vc3RyYXIgYSB2aXN0YSBwZXF1ZW5hIGR1bmhhIGxpc3RhIGRlIGVucXVpc2FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGF0cmlidXRvcyBkZSB0aWNrZXQgcG9yIGRlZmVjdG8gcGFyYSBhIG9yZGVuYWNpw7NuIGRlIHRpY2tldCBkbyByZXN1bHRhZG8gZGEgYnVzY2EgZGUgdGlja2V0IGRhIGludGVyZmFjZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgb3MgYXRyaWJ1dG9zIGRlIHRpY2tldCBwb3IgZGVmZWN0byBwYXJhIGEgb3JkZW5hY2nDs24gZGUgdGlja2V0IGRvIHJlc3VsdGFkbyBkYSBidXNjYSBkZSB0aWNrZXQgZGEgaW50ZXJmYWNlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgb3MgYXRyaWJ1dG9zIGRlIHRpY2tldCBwb3IgZGVmZWN0byBwYXJhIGEgb3JkZW5hY2nDs24gZGUgdGlja2V0IGRvIHJlc3VsdGFkbyBkYSBidXNjYSBkZSB0aWNrZXQgZGVzdGEgb3BlcmFjacOzbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGUgcG9yIGRlZmVjdG8gZGUgdGlja2V0IG5vcyByZXN1bHRhZG9zIGRlIGJ1c2NhIGRlIHRpY2tldCBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLiBBcnJpYmE6IG9zIG1haXMgYW50aWdvcyBubyBhbHRvLiBBYmFpeG86IG9zIMO6bHRpbW9zIG5vIGFsdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlIHBvciBkZWZlY3RvIGRlIHRpY2tldCBub3MgcmVzdWx0YWRvcyBkZSBidXNjYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLiBBcnJpYmE6IG9zIG1haXMgYW50aWdvcyBubyBhbHRvLiBBYmFpeG86IG9zIMO6bHRpbW9zIG5vIGFsdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGUgcG9yIGRlZmVjdG8gZGUgdGlja2V0IG5vcyByZXN1bHRhZG9zIGRlIGJ1c2NhIGRlIHRpY2tldCBkZXN0YSBvcGVyYWNpw7NuLiBBcnJpYmE6IG9zIG1haXMgYW50aWdvcyBubyBhbHRvLiBBYmFpeG86IG9zIMO6bHRpbW9zIG5vIGFsdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBhdHJpYnV0b3MgZGUgYnVzY2EgbW9zdHJhZG9zIG5vIHRpY2tldCBwb3IgZGVmZWN0byBwYXJhIGEgcGFudGFsbGEgYnVzY2EgZGUgdGlja2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lIG9zIGF0cmlidXRvcyBkZSBidXNjYSBtb3N0cmFkb3Mgbm8gdGlja2V0IHBvciBkZWZlY3RvIHBhcmEgYSBwYW50YWxsYSBidXNjYSBkZSB0aWNrZXQuIEV4ZW1wbG86ICJDaGF2ZSIgZGViZSB0ZXIgbyBub21lIGRvIENhbXBvIERpbsOhbWljbyBuZXN0ZSBjYXNvIFwnWFwnLCAiQ29udGlkbyIgZGViZSB0ZXIgbyB2YWxvciBkbyBDYW1wbyBEaW7DoW1pY28gZGVwZW5kZW5kbyBkbyB0aXBvIGRlIENhbXBvIERpbsOhbWljbywgVGV4dG86IFwndW4gdGV4dG9cJywgRHJvcGRvd246XCcxXCcsIERhdGEvVGVtcG86ICBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIGFsdHVyYSBwYXJhIG8gY29tcG/DsWVudGUgZGUgZWRpdG9yIGRlIHRleHRvIHJpY28gcGFyYSBlc3RhIHBhbnRhbGxhLiBJbnRyb2R1emEgZW4gbsO6bWVybyAocGl4ZWlzKSBvdSB2YWxvciBwb3JjZW50dWFsIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgY2FsZXMgZWxlbWVudG9zIGVzdMOhbiBkaXNwb8OxaWJsZXMgcGFyYSBcJ0FjY2nDs25cJyBubyB0ZXJjZWlybyBuaXZlbCBkYSBlc3RydWN0dXJhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgY2FsZXMgZWxlbWVudG9zIGVzdMOhbiBkaXNwb8OxaWJsZXMgbm8gcHJpbWVpcm8gbml2ZWwgZGEgZXN0cnVjdHVyYSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBjYWxlcyBlbGVtZW50b3MgZXN0w6FuIGRpc3Bvw7FpYmxlcyBubyBzZWd1bmRvIG5pdmVsIGRhIGVzdHJ1Y3R1cmEgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0ltcG9ydGFyIENvbmZpZ3VyYWNpw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBjYW1wb3MgZGUgdMOtdHVsbyBuYSBwYW50YWxsYSBjYW1wbyBJVFNNIGFkaWNpb25hbCBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgY2FtcG9zIGRlIHTDrXR1bG8gbmEgcGFudGFsbGEgY2FtcG8gSVRTTSBhZGljaW9uYWwgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIGNhbXBvcyBkZSB0w610dWxvIG5hIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ1Blcm1pdGUgZnVuY2nDs24gZGUgYWNjacOzbiBlbiBtYXNhIGRvIHRpY2tldCBwYXJhIG8gZnJvbnRlbmQgZGUgYXhlbnRlIHBhcmEgdHJhYmFsbGFyIGVuIG3DoWlzIGR1biB0aWNrZXQgw6EgdmV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnUGVybWl0ZSBmdW5jacOzbiBkZSBhY2Npw7NuIGVuIG1hc2EgZGUgdGlja2V0IHNvYW1lbnRlIHBhcmEgb3MgZ3J1cG9zIGVudW1lcmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnSW50ZXJmYWNlWGVuw6lyaWNhIG3Ds2R1bG8gcmV4aXN0cm8gcGFyYSBhIGNhcGEgZG8gaW52b2NhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0ludGVyZmFjZVhlbsOpcmljYSBtw7NkdWxvIHJleGlzdHJvIHBhcmEgYSBjYXBhIGRvIGludm9jYWRvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnSW50ZXJmYWNlWGVuw6lyaWNhIG3Ds2R1bG8gcmV4aXN0cm8gcGFyYSBhIGNhcGEgZG8gaW52b2NhZG9yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnRXN0YWRvIGRvIEluY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOw7ptZXJvIG3DoXhpbW8gZGUgdGlja2V0cyBwYXJhIHNlciBtb3N0cmFkb3Mgbm8gcmVzdWx0YWRvIGRlc3RhIG9wZXJhY2nDs24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSB0aWNrZXRzIHBhcmEgc2VyIG1vc3RyYWRvcyBlbiBjYWRhIHDDoXhpbmEgZHVuIHJlc3VsdGFkbyBkZSBidXNjYSBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIHRpY2tldHMgcGFyYSBzZXIgbW9zdHJhZG9zIGVuIGNhZGEgcMOheGluYSBkdW4gcmVzdWx0YWRvIGRlIGJ1c2NhIG5hIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgeGVyYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOhbWV0cm9zIHBhcmEgb3MgZ3J1cG9zIGRlIHBlcm1pc29zIGRlIGV4ZW1wbG8gZG9zIGF0cmlidXRvcyBkbyBjYXTDoWxvZ28geGVyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdFeGVjdXRhIGEgYWNjacOzbiBjb25maWd1cmFkYSBwYXJhIGNhZGEgZXZlbnRvIChjb21hIHVuIEludm9jYWRvcikgcGFyYSBjYWRhIFNlcnZpem8gV2ViIGNvbmZpZ3VyYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBkZSBkZWNpc2nDs24gbmEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSBlbXByZWdhciBhIHBhbnRhbGxhIGRlIHRleHRvIGxpYnJlIGRlIHTDrWNrZXRzIGRhIGludGVyZmFjZSBkbyBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc29zIHJlcXVpcmlkb3MgcGFyYSB1c2FyIGEgcGFudGFsbGEgZGUgZGVjaXNpw7NuIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzb3MgcmVxdWlyaWRvcyBwYXJhIHVzYXIgYSBwYW50YWxsYSBjYW1wbyBJVFNNIGFkaWNpb25hbCBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGRlIGRlY2lzacOzbiBuYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNvcyByZXF1aXJpZG9zIHBhcmEgdXNhciBhIHBhbnRhbGxhIGNhbXBvIElUU00gYWRpY2lvbmFsIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VzdGFibGVjZSBvIHRpcG8gZGUgdGlja2V0IG5hIHBhbnRhbGxhIGRlIHRpY2tldCBtYXNpdm8gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRXN0YWJsZWNlIG8gdGlwbyBkZSB0aWNrZXQgbmEgcGFudGFsbGEgZGUgdGlja2V0IG1hc2l2byBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgY2FtYmlhciBhIGRlY2lzacOzbiBkdW4gdGlja2V0IG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBjYW1iaWFyIGEgZGVjaXNpw7NuIGR1biB0aWNrZXQgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgZWRpdGFyIHVuaGEgZW5xdWlzYSBuYSBzw7phIHZpc3RhIHpvb20gZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW5oYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGVubGFjZSBubyBtZW51IHBhcmEgdm9sdGFyIGF0csOhcyBuYSB2aXN0YSB6b29tIGRlIGVucXVpc2EgZGEgaW50ZXJmYWNlIGRlIGF4ZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gZW5sYWNlIG5vIG1lbnUgcGFyYSBlZGl0YXIgdW5oYSBlbnF1aXNhIG5hIHPDumEgdmlzdGEgem9vbSBkYSBpbnRlcmZhY2UgZGUgYXhlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBlbmxhY2Ugbm8gbWVudSBwYXJhIGVkaXRhciB1bmhhIGVucXVpc2EgbmEgc8O6YSB2aXN0YSB6b29tIGRhIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgbyBoaXN0b3JpY28gZG8gdGlja2V0IChvcmRlYWRvIG8gcmV2w6kpIG5hIGludGVyZmFjZSBkZSBheGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ0NsYXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdDb250YWJpbGl6YXIgVGVtcG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFjacOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnRWRpZmljaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0ludGVyZmFjZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRXNjcml0b3Jpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0VuZGVyZXpvIElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0ZyZWV3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+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+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydSdW4gU2VhcmNoJ30gPSAn15TXqNelINeX15nXpNeV16knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9eU15LXk9eo15XXqiDXmdeZ15HXldeQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn15TXpNeg15nXmdeUJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfXkNeW15TXqNeUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfXkNeZ158g15TXqNep15DXlCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfXkdeZ158nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn16TXkic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfXlNeS15PXqNeV16og15nXmdeR15XXkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9eU15LXk9eo15XXqiDXmdeZ15HXldeQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn157XkdeYLdei15wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+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+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9ee157XqdenJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJyc7CiAgICAkU2VsZi0+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+eydEYXRlIG9mIE9yZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+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+eydPdXRwdXRzJ30gPSAn16TXnNeYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn15TXodeb150g16jXnteqINep15nXqNeV16onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9eh15jXoNeT16jXmNeZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJyc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</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+eydSdW4gU2VhcmNoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfgpLjgpILgpKbgpLDgpY3gpK0g4KSu4KWH4KSCJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICfgpJrgpYfgpKTgpL7gpLXgpKjgpYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ+CkheCkqOClgeCkruCkpOCkvyDgpKjgpLngpYDgpIIg4KS54KWI4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn4KSV4KWHIOCkrOClgOCkmic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+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+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICfgpLjgpK7gpK8g4KS44KWA4KSu4KS+IOCkuOCkruCkvuCkquCljeCkpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCknOClguCkriDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJ/gpL/gpKrgpY3gpKrgpKPgpYAg4KS44KWN4KSV4KWN4KSw4KWA4KSoIOCkleCkviDgpIngpKrgpK/gpYvgpJcg4KSV4KSw4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSG4KS14KS24KWN4KSv4KSVIOCkheCkqOClgeCkruCkpOCkv+Ckr+CkvuCkguClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSc4KWC4KSuIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkn+Ckv+CkquCljeCkquCko+ClgCDgpLjgpY3gpJXgpY3gpLDgpYDgpKgg4KSV4KS+IOCkieCkquCkr+Cli+CklyDgpJXgpLDgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpIbgpLXgpLbgpY3gpK/gpJUg4KSF4KSo4KWB4KSu4KSk4KS/4KSv4KS+4KSC4KWkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkruClh+CkgiDgpJzgpYLgpK4g4KSf4KS/4KSV4KSfIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSf4KS/4KSq4KWN4KSq4KSj4KWAIOCkuOCljeCkleCljeCksOClgOCkqCDgpJXgpL4g4KSJ4KSq4KSv4KWL4KSXIOCkleCksOCkqOClhyDgpJXgpYcg4KSy4KS/4KSPIOCkhuCkteCktuCljeCkr+CklSDgpIXgpKjgpYHgpK7gpKTgpL/gpK/gpL7gpILgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkluCli+CknCDgpKrgpLDgpL/gpKPgpL7gpK4g4KSu4KWH4KSCIOCkpOCkr+CktuClgeCkpuCkviDgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkm+CkgeCkn+CkvuCkiCDgpJXgpYcg4KSy4KS/4KSPIOCkn+Ckv+CkleCknyDgpJXgpYAg4KS14KS/4KS24KWH4KS34KSk4KS+IOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpJXgpYcg4KSf4KS/4KSV4KSfIOCkleClhyDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkruClh+CkgiDgpKTgpK/gpLbgpYHgpKbgpL4g4KSf4KS/4KSV4KSfIOCkleClgCDgpJvgpIHgpJ/gpL7gpIgg4KSV4KWHIOCksuCkv+CkjyDgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkteCkv+CktuClh+Ckt+CkpOCkviDgpJXgpYsg4KSq4KSw4KS/4KSt4KS+4KS34KS/4KSkIOCkleCksOCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfgpKrgpY3gpLDgpKTgpL/gpKjgpL/gpKfgpL8g4KSF4KSC4KSk4KSw4KSr4KSy4KSVIOCkleClhyDgpJ/gpL/gpJXgpJ8g4KSV4KWHIOCkluCli+CknCDgpKrgpLDgpL/gpKPgpL7gpK4g4KSu4KWH4KSCIOCkpOCkr+CktuClgeCkpuCkviDgpJ/gpL/gpJXgpJ8g4KSV4KWAIOCkm+CkgeCkn+CkvuCkiCDgpJXgpYcg4KSy4KS/4KSPIOCkn+Ckv+CkleCknyDgpJXgpYAg4KS14KS/4KS24KWH4KS34KSk4KS+IOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpJXgpYAg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpK7gpYfgpIIg4KSk4KSv4KS24KWB4KSm4KS+IOCkn+Ckv+CkleCknyDgpJXgpYcg4KSV4KWN4KSw4KSuIOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCDgpIrgpKrgpLA64KS24KWA4KSw4KWN4KS3IOCkquCksCDgpLjgpKzgpLjgpYcg4KSq4KWB4KSw4KS+4KSo4KWA4KWkIOCkqOClgOCkmuClhzrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkqOCkteClgOCkqOCkpOCkruClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4KSX4KWN4KSw4KS+4KS54KSVIOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSP4KSVIOCkluCli+CknCDgpKrgpLDgpL/gpKPgpL7gpK4g4KSV4KWHIOCkn+Ckv+CkleCknyDgpJXgpYcg4KSk4KSv4KS24KWB4KSm4KS+IOCkleCljeCksOCkriDgpJXgpYsg4KSq4KSw4KS/4KSt4KS+4KS34KS/4KSkIOCkleCksOCkpOCkviDgpLngpYjgpaQg4KSK4KSq4KSwOuCktuClgOCksOCljeCktyDgpKrgpLAg4KS44KSs4KS44KWHIOCkquClgeCksOCkvuCkqOClgOClpCDgpKjgpYDgpJrgpYc64KS24KWA4KSw4KWN4KS3IOCkquCksCDgpKjgpLXgpYDgpKjgpKTgpK7gpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4KSq4KWN4KSw4KSk4KS/4KSo4KS/4KSn4KS/IOCkheCkguCkpOCksOCkq+CksuCklSDgpJXgpYAg4KSW4KWL4KScIOCkquCksOCkv+Cko+CkvuCkriDgpK7gpYfgpIIg4KSk4KSv4KS24KWB4KSm4KS+IOCkn+Ckv+CkleCknyDgpJXgpYcg4KSV4KWN4KSw4KSuIOCkleCliyDgpKrgpLDgpL/gpK3gpL7gpLfgpL/gpKQg4KSV4KSw4KSk4KS+IOCkueCliOClpCDgpIrgpKrgpLA64KS24KWA4KSw4KWN4KS3IOCkquCksCDgpLjgpKzgpLjgpYcg4KSq4KWB4KSw4KS+4KSo4KWA4KWkIOCkqOClgOCkmuClhzrgpLbgpYDgpLDgpY3gpLcg4KSq4KSwIOCkqOCkteClgOCkqOCkpOCkruClpCc7CiAgICAkU2VsZi0+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+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkj+CklSDgpJbgpYvgpJwg4KSq4KSw4KS/4KSj4KS+4KSuIOCkleClhyDgpKrgpY3gpLDgpKTgpY3gpK/gpYfgpJUg4KSq4KWD4KS34KWN4KSgIOCkruClh+CkgiDgpKrgpY3gpLDgpKbgpLDgpY3gpLbgpL/gpKQg4KS54KWL4KSo4KWHIOCkleClhyDgpLLgpL/gpI8g4KSf4KS/4KSV4KSf4KWL4KSCIOCkleClgCDgpLjgpILgpJbgpY3gpK/gpL7gpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4KSX4KWN4KSw4KS+4KS54KSVIOCkheCkguCkpOCksOCkq+CksuCklSDgpK7gpYfgpIIg4KSP4KSVIOCkluCli+CknCDgpKrgpLDgpL/gpKPgpL7gpK4g4KSV4KWHIOCkquCljeCksOCkpOCljeCkr+Clh+CklSDgpKrgpYPgpLfgpY3gpKAg4KSu4KWH4KSCIOCkquCljeCksOCkpuCksOCljeCktuCkv+CkpCDgpLngpYvgpKjgpYcg4KSV4KWHIOCksuCkv+CkjyDgpJ/gpL/gpJXgpJ/gpYvgpIIg4KSV4KWAIOCkuOCkguCkluCljeCkr+CkvuClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn4KSF4KS14KSy4KWL4KSV4KSoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+CkluCkvuCkpOCkviDgpLngpYjgpaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+CkquCljeCksOCkpOCkv+CkqOCkv+Ckp+CkvyDgpIXgpILgpKTgpLDgpKvgpLLgpJUg4KSu4KWH4KSCIOCkn+Ckv+CkleCknyDgpIfgpKTgpL/gpLngpL7gpLgo4KS14KS/4KSq4KSw4KWA4KSkIOCkhuCkpuClh+Cktikg4KSm4KS/4KSW4KS+4KSk4KS+IOCkueCliOClpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+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+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ+CkheCkguCkpOCksOCkq+CksuCklSc7CiAgICAkU2VsZi0+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+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJyc7CiAgICAkU2VsZi0+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+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydSdW4gU2VhcmNoJ30gPSAnUG9rcmVuaSBwcmV0cmFndSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnVXZveiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdVcG96b3JlbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdOZW1hdGUgZG96dm9sdSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdJem1lxJF1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0lzdGnEjWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnVXZveiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnVXZveiBrb25maWd1cmFjaWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUHJlZ2xlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0dydXBhIGRvenZvbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSBzbG9ib2Rub2cgdGVrc3RhIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IHByb3pvcmEgemEgbmFwb21lbmUga2FydGljZSB1IHN1xI1lbGp1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgcHJvem9yYSB6YSBuYXBvbWVuZSBrYXJ0aWNlIHUgc3XEjWVsanUgb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBwcm96b3JhIHphIG5hcG9tZW5lIGthcnRpY2UgdSBzdcSNZWxqdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+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+eydCdXMgSW50ZXJmYWNlJ30gPSAnU3XEjWVsamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+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+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+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+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdQcmVnbGVkIHJlenVsdGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1Nwb3JhenVtIG8gcmF6aW5pIHVzbHVnZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnVW9iacSNYWplbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</File>
        <File Location="Kernel/Language/hu_ITSMConfigurationManagement.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TGFuZ3VhZ2U6Omh1X0lUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgpzdWIgRGF0YSB7CiAgICBteSAkU2VsZiA9IHNoaWZ0OwoKICAgICMgVGVtcGxhdGU6IEFkbWluR2VuZXJpY0ludGVyZmFjZU9wZXJhdGlvbkNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgb3BlcmF0aW9uIGRhdGEnfSA9ICfDgWx0YWzDoW5vcyBtxbFrw7Zkw6lzaSBhZGF0b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0dGluZ3MgZm9yIGluY29taW5nIHJlcXVlc3QgZGF0YSd9ID0gJ0JlasO2dsWRIGvDqXLDqXNpIGFkYXRvayBiZcOhbGzDrXTDoXNhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXR0aW5ncyBmb3Igb3V0Z29pbmcgcmVzcG9uc2UgZGF0YSd9ID0gJ0Ega2ltZW7FkSB2w6FsYXN6YWRhdG9rIGJlw6FsbMOtdMOhc2FpJzsKCiAgICAjIFRlbXBsYXRlOiBBZG1pbklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBNYW5hZ2VtZW50J30gPSAnS29uZmlndXLDoWNpw7NlbGVtLW1lbmVkenNtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoYW5nZSBjbGFzcyBkZWZpbml0aW9uJ30gPSAnT3N6dMOhbHktbWVnaGF0w6Fyb3rDoXMgbcOzZG9zw610w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGFuZ2Ugcm9sZSBkZWZpbml0aW9uJ30gPSAnU3plcmVwZGVmaW7DrWNpw7MgbcOzZG9zw610w6FzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWFkeTJJbXBvcnQgQ2xhc3MgQnVuZGxlcyd9ID0gJ1JlYWR5MkltcG9ydCBvc3p0w6FseWNzb21hZ29rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlcmUgeW91IGNhbiBpbXBvcnQgUmVhZHkySW1wb3J0IGNsYXNzIGJ1bmRsZXMgc2hvd2Nhc2luZyBvdXIgbW9zdCB1c3VhbCBjb25maWcgaXRlbXMuIFBsZWFzZSBub3RlIHRoYXQgc29tZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gbWF5IGJlIHJlcXVpcmVkLid9ID0KICAgICAgICAnSXR0IGltcG9ydMOhbGhhdGphIGEgUmVhZHkySW1wb3J0IG9zenTDoWx5Y3NvbWFnb2thdCwgYW1lbHllayBhIGxlZ8OhbHRhbMOhbm9zYWJiIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWtldCBtdXRhdGrDoWsgYmUuIEvDqXJqw7xrLCB2ZWd5ZSBmaWd5ZWxlbWJlLCBob2d5IG7DqWjDoW55IHRvdsOhYmJpIGtvbmZpZ3Vyw6FjacOzcmEgbGVoZXQgc3rDvGtzw6lnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVcGRhdGUgZXhpc3RpbmcgZW50aXRpZXMnfSA9ICdNZWdsw6l2xZEgZW50aXTDoXNvayBmcmlzc8OtdMOpc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0IFJlYWR5MkFkb3B0IGNsYXNzIGJ1bmRsZXMnfSA9ICdSZWFkeTJBZG9wdCBvc3p0w6FseWNzb21hZ29rIGltcG9ydMOhbMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gQ2xhc3MnfSA9ICdLb25maWd1csOhY2nDs2VsZW0tb3N6dMOhbHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gUm9sZSd9ID0gJ0tvbmZpZ3Vyw6FjacOzcyBlbGVtIHN6ZXJlcGUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1BZGQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBmb3IgQ2xhc3Nlcyd9ID0gJ1N6xbFyxZEgYXogb3N6dMOhbHlva2hveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgYSBDbGFzcyBmcm9tIHRoZSBsaXN0IHRvIGNyZWF0ZSBhIG5ldyBDb25maWcgSXRlbS4nfSA9ICdWw6FsYXNzem9uIGVneSBvc3p0w6FseXQgYSBsaXN0w6Fiw7NsIGVneSDDumoga29uZmlndXLDoWNpw7NlbGVtIGzDqXRyZWhvesOhc8OhaG96Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyd9ID0gJ09zenTDoWx5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtQnVsawogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtIEJ1bGsgQWN0aW9uJ30gPSAnSVRTTSBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUnfSA9ICdJbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gYW5vdGhlcid9ID0gJ0hpdmF0a296w6FzIGVneSBtw6FzaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDb25maWd1cmF0aW9uIEl0ZW0gbnVtYmVyISd9ID0gJ8OJcnbDqW55dGVsZW4ga29uZmlndXLDoWNpw7NlbGVtLXN6w6FtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgbnVtYmVyIG9mIGFub3RoZXIgQ29uZmlndXJhdGlvbiBJdGVtIHRvIGxpbmsgd2l0aC4nfSA9ICdFZ3kgbcOhc2lrIGtvbmZpZ3Vyw6FjacOzZWxlbSBzesOhbWEsIGFtZWxseWVsIMO2c3N6ZSBrZWxsIGvDtnRuaS4nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBjb25maWcgaXRlbT8nfSA9ICdWYWzDs2JhbiB0w7Zyw7Zsbmkgc3plcmV0bsOpIGV6dCBhIGtvbmZpZ3Vyw6FjacOzZWxlbWV0Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBuYW1lIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZXZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgaXMgYWxyZWFkeSBpbiB1c2UgYnkgdGhlIENvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBOdW1iZXIocyk6ICVzJ30gPQogICAgICAgICdBIG5ldmV0IG3DoXIgaGFzem7DoWxqw6FrIGEga29uZmlndXLDoWNpw7NlbGVtZWsgYSBrw7Z2ZXRrZXrFkSBzesOhbW9ra2FsOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIE51bWJlcid9ID0gJ1Zlcnppw7NzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnQSBrb25maWd1csOhY2nDs3MgZWxlbSB2ZXJ6acOzc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnQSB2ZXJ6acOzc3rDoW0gbcOhciBoYXN6bsOhbGF0YmFuIHZhbiBhIENvbmZpZ0l0ZW1zIMOhbHRhbCBhIGvDtnZldGtlesWRIHN6w6FtbWFsIChzesOhbW9ra2FsKTogJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSd9ID0gJ8OcemVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVuc8OhbGxhcG90JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpOiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIaXN0b3J5IENvbnRlbnQnfSA9ICdFbMWRem3DqW55dGFydGFsb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0zDqXRyZWhvesOhcyBpZGVqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIHZpZXcnfSA9ICdOYWd5w610w6FzaSBuw6l6ZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsgb2xkYWxhbmvDqW50JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdOZW0gdGFsw6FsdHVuayBrb25maWd1csOhY2nDs3MgZWxlbWFkYXRvdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdWw6FsYXNzemEga2kgZXp0IGEga29uZmlndXLDoWNpw7NzIGVsZW1ldCc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0tlcmVzw6lzIGZ1dHRhdMOhc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnS2VyZXNzZW4gYXogZWzFkXrFkSB2ZXJ6acOza2JhbiBpcz8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBhIENvbmZpZ0l0ZW0gc3rDoW3DoXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTcOpbHlzw6lnaSBzemludCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ05hZ3nDrXTDoXMvIGtpY3NpbnnDrXTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQSBDb25maWdJdGVtIG1heGltw6FsaXMgaGl2YXRrb3rDoXNpIHN6aW50amUgZWzDqXJ0ZSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnSmVsZW5sZWdpIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0plbGVubGVnaSBpbmNpZGVuc8OhbGxhcG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1V0b2xqw6FyYSBtw7Nkb3PDrXR2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdVdG9sasOhcmEgbcOzZG9zw610b3R0YSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0F6IMOWbiBDb25maWdJdGVtcyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdDb25maWdJdGVtIGtlcmVzw6lzJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnQSBrw7Z2ZXRrZXrFkSBvc3p0w6FseW9rIGtlcsO8bG5layBpbXBvcnTDoWzDoXNyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBIGvDtnZldGtlesWRIHN6ZXJlcGvDtnLDtmsga2Vyw7xsbmVrIGltcG9ydMOhbMOhc3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1ZlZ3llIGZpZ3llbGVtYmUsIGhvZ3kgYSBtZWdmZWxlbMWRIGRpbmFtaWt1cyBtZXrFkWsgw6lzIEdlbmVyYWxDYXRhbG9nIG9zenTDoWx5b2sgaXMgbMOpdHJlasO2bm5laywgw6lzIG5pbmNzIGF1dG9tYXRpa3VzIGVsdMOhdm9sw610w6FzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1N6ZXJldG7DqSBmb2x5dGF0bmk/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1N6w7xrc8OpZyB2YW4gRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0EgZGVmaW7DrWNpw7MgbmVtIMOpcnbDqW55ZXMgWUFNTCBoYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ8OBdHRla2ludMOpczogSVRTTSBrb25maWd1csOhY2nDs2VsZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnU3rDvGtzw6lnZSB2YW4gbGVnYWzDoWJiIGVneSBraXbDoWxhc3p0b3R0IGtvbmZpZ3Vyw6FjacOzZWxlbXJlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ05pbmNzIMOtcsOhc2kgaG96esOhZsOpcsOpc2UgZWhoZXogYSBrb25maWd1csOhY2nDs2VsZW1oZXo6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOaW5jcyBtZWdoYXTDoXJvesOhcyBtZWdoYXTDoXJvenZhIGEoeikgJXMgb3N6dMOhbHlob3ohJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdBKHopIOKAniVz4oCdIGtvbmZpZ3Vyw6FjacOzZWxlbSBuZW0gdGFsw6FsaGF0w7MgYXogYWRhdGLDoXppc2JhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOZW0gdm9sdCBsZWhldHPDqWdlcyBhKHopICVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyB0w7ZybMOpc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdOZW0gdGFsw6FsaGF0w7MgdmVyemnDsyBhKHopICVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDs27DoWwhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pbmNzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsywga2V0dMWResOpc2F6b25vc8OtdMOzIHZhZ3kgb3N6dMOhbHlhem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTmluY3MgaG96esOhZsOpcsOpcyBtZWdhZHZhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZW0gbGVoZXQgbWVnamVsZW7DrXRlbmkgYXogZWzFkXptw6lueWVrZXQsIG5pbmNzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyBtZWdhZHZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBheiBlbMWRem3DqW55ZWtldCwgbmluY3NlbmVrIGhvenrDoWbDqXLDqXNpIGpvZ29rIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICfDmmoga29uZmlndXLDoWNpw7NlbGVtIChhem9ub3PDrXTDsyA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnw5pqIHZlcnppw7MgKGF6b25vc8OtdMOzID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdCBmcmlzc8OtdHZlICjDumogPSAlcywgcsOpZ2kgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnSW5jaWRlbnPDoWxsYXBvdCBmcmlzc8OtdHZlICjDumogPSAlcywgcsOpZ2kgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdLb25maWd1csOhY2nDs2VsZW0gKGF6b25vc8OtdMOzID0gJXMpIHTDtnLDtmx2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0thcGNzb2xhdCBlaGhlejogJXMgKHTDrXB1cyA9ICVzKSBob3p6w6FhZHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdLYXBjc29sYXQgZWhoZXo6ICVzICh0w61wdXMgPSAlcykgdMO2csO2bHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdLb25maWd1csOhY2nDs2VsZW0tbWVnaGF0w6Fyb3rDoXMgZnJpc3PDrXR2ZSAoYXpvbm9zw610w7MgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOw6l2IGZyaXNzw610dmUgKMO6aiA9ICVzLCByw6lnaSA9ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ0F0dHJpYsO6dHVtICglcykgZnJpc3PDrXR2ZSBlcnLFkWw6IOKAniVz4oCdLCBlcnJlOiDigJ4lc+KAnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICclcy4gdmVyemnDsyB0w7Zyw7ZsdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTmluY3Mga29uZmlndXLDoWNpw7NlbGVtLWF6b25vc8OtdMOzIHZhZ3kgdmVyemnDs2F6b25vc8OtdMOzIG1lZ2FkdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBhIGtvbmZpZ3Vyw6FjacOzZWxlbWV0LCBuaW5jc2VuZWsgaG96esOhZsOpcsOpc2kgam9nb2sgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdBKHopICVzIGtvbmZpZ3Vyw6FjacOzZWxlbS1hem9ub3PDrXTDsyBuZW0gdGFsw6FsaGF0w7MgYXogYWRhdGLDoXppc2JhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnbnlvbXRhdHRhOiAlcyDigJMgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ0hpdmF0a296w6FzJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnw4lydsOpbnl0ZWxlbiBvc3p0w6FseWF6b25vc8OtdMOzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05pbmNzIG9zenTDoWx5YXpvbm9zw610w7MgbWVnYWR2YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdOaW5jc2VuZWsgaG96esOhZsOpcsOpc2kgam9nb2sgbWVnYWR2YSBlaGhleiBheiBvc3p0w6FseWhveiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05pbmNzIHRhbMOhbGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBrZXJlc8Opc2kgZXJlZG3DqW55ZWsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05lbSBsZWhldCBtZWdqZWxlbsOtdGVuaSBheiBlbGVtZXQsIG5pbmNzZW5layBob3p6w6Fmw6lyw6lzaSBqb2dvayBtZWdhZHZhIGEga29uZmlndXLDoWNpw7NlbGVtaGV6ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5lbSB0YWzDoWxoYXTDsyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmVtIHRhbMOhbHR1bmsgdmVyemnDs3QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnw7x6ZW1rw6lwZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2ZpZ3llbG1lenRldMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdBIGtvbmZpZ3Vyw6FjacOzZWxlbSDDvHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0Ega29uZmlndXLDoWNpw7NlbGVtIGluY2lkZW5zw6FsbGFwb3RhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnTmluY3Mgam9nb3N1bHRzw6FnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ1N6xbFyxZEgw6lydsOpbnl0ZWxlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1NlYXJjaCBwYXJhbXMgw6lydsOpbnl0ZWxlbiEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdNZWdqZWxlbsOtdGV0dCBrb25maWd1csOhY2nDs2VsZW1layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfDnHplbWJlIMOhbGzDrXTDoXNpIMOhbGxhcG90dMOtcHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ0plbGVubGVnaSBpbmNpZGVuc8OhbGxhcG90IHTDrXB1cyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdLw7Z6w7Z0dCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT3N6dMOhbHlrb3Jsw6F0b3rDoXNvayBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtaGV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdFZ3kgdmFneSB0w7ZiYiBvc3p0w6FseSBraXbDoWxhc3p0w6FzYSBhIHbDoWxhc3p0aGF0w7Mga29uZmlndXLDoWNpw7NzIGVsZW1layBrb3Jsw6F0b3rDoXPDoWhveic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnT3N6dMOhbHlrb3Jsw6F0b3rDoXNvayBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtaGV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnRWd5IHZhZ3kgdMO2YmIgb3N6dMOhbHkga2l2w6FsYXN6dMOhc2EgYSB2w6FsYXN6dGhhdMOzIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsga29ybMOhdG96w6Fzw6Fob3onOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWlrdXMgKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKHbDoWx0b3phdCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnTGluayBoaXZhdGtvesOhc2kgdMOtcHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ0EgaGl2YXRrb3rDoXMgYSBoaXZhdGtvesOzIG9iamVrdHVtIENvbmZpZ0l0ZW0gdmFneSBzdGF0aWt1cyB2w6FsdG96YXTDoXJhIHZvbmF0a296aWstZS4gQXogYWt0dcOhbGlzIGluY2lkZW5zw6FsbGFwb3Qgc3rDoW3DrXTDoXNhIGNzYWsgZGluYW1pa3VzIGhpdmF0a296w6Fzb2sgZXNldMOpbiB0w7ZydMOpbmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1bDoWxhc3N6YSBraSBhenQgYXogYXR0cmliw7p0dW1vdCwgYW1lbHkgYWxhcGrDoW4gYSBrb25maWd1csOhY2nDs3MgZWxlbWVrZXQga2VyZXNuaSBmb2dqw6FrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnQXogYWxhcHN6ZXJrZXpldCBuZW0gw6lydsOpbnllcy4gS8OpcmrDvGssIGFkam9uIG1lZyBlZ3kgaGFzaC10IGF6IGFkYXRva2thbCBZQU1MIGZvcm3DoXR1bWJhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdBIFlBTUwga2FyYWt0ZXJsw6FuY290IFwnLS0tXCctdmFsIGtlbGwga2V6ZGVuaS4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnTmVtIHNpa2Vyw7xsdCB0w7Zyw7ZsbmkgYSBjb25maWdpdGVtX2xpbmsgdMOhYmzDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOZW0gdGFsw6FsdHVuayByZWxldsOhbnMgZGluYW1pa3VzIG1lesWRa2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmVtIHNpa2Vyw7xsdCBiZXN6w7pybmkgYSBjb25maWdpdGVtX2xpbmsgdMOhYmzDoXphdGJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcwIHNvciBiZXN6w7pyw6FzYSBhIGNvbmZpZ2l0ZW1fbGluayB0w6FibMOhYmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnRWd5IGVsZW0gbGVnbmFneW9iYiBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnVmVyemnDsyBrYXJha3RlcmzDoW5jJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0hpYmEgYSBkZWZpbsOtY2nDs2sgc3ppbmtyb25pesOhbMOhc8OhYmFuLiBLw6lyasO8aywgZWxsZW7FkXJpenplIGEgbmFwbMOzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdJVFNNQ29uZmlnSXRlbSBkZWZpbsOtY2nDs2kgbmluY3NlbmVrIHN6aW5rcm9uaXrDoWx2YS4gS8OpcmrDvGssIHRlbGVww610c2UgYXogSVRTTUNvbmZpZ0l0ZW0gZGluYW1pa3VzIG1lesWRaW5layBtw7Nkb3PDrXTDoXNhaXQuJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdMZWrDoXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnS2FyYmFudGFydMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1Byw7NiYcO8emVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdUZXJ2ZXpldHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnSmF2w610w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdWaXNzemF2b250JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1ZpenNnw6FsYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3p0ZWzDqXMvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ8OBdHRla2ludMOpcyDDqXMgbWVnZXLFkXPDrXTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnT3N6dMOhbHlvay9zemVyZXBrw7Zyw7ZrIMOpcyBrYXBjc29sw7Nkw7MgbWV6xZFpayBpbXBvcnTDoWzDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnSGliYSB0w7ZydMOpbnQgYXogb3N6dMOhbHkgaW1wb3J0w6Fsw6FzYSBzb3LDoW4uJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBSZWp0ZXR0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBNZWdqZWxlbsOtdHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdMZWhldMWRdsOpIHRlc3ppIGEga2l0ZXJqZXN6dGV0dCBrZXJlc8Opc2kgZmVsdMOpdGVsZWtldCBheiDDvGd5bsO2a2kgZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW1rZXJlc8Opc8OpYmVuLiBFenplbCBhIGZ1bmtjacOzdmFsIGtlcmVzaGV0IHDDqWxkw6F1bCBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIG5ldsOpcmUgb2x5YW4gZmVsdMOpdGVsZWtrZWwsIG1pbnQgIigqa2V5MSomJiprZXkyKikiIHZhZ3kgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdMZWhldMWRdsOpIHRlc3ppIGEga2l0ZXJqZXN6dGV0dCBrZXJlc8Opc2kgZmVsdMOpdGVsZWtldCBheiDDvGd5ZsOpbGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVta2VyZXPDqXPDqWJlbi4gRXp6ZWwgYSBmdW5rY2nDs3ZhbCBrZXJlc2hldCBww6lsZMOhdWwgYSBrb25maWd1csOhY2nDs3MgZWxlbSBuZXbDqXJlIG9seWFuIGZlbHTDqXRlbGVra2VsLCBtaW50ICIoKmtleTEqJiYqa2V5MiopIiB2YWd5ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnSG96esOhcmVuZGVsdCBrb25maWd1csOhY2nDs2VsZW1layc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnw5xneWbDqWwtdsOhbGxhbGF0aG96IGhvenrDoXJlbmRlbHQga29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfDnGd5ZsOpbC1mZWxoYXN6bsOhbMOzaG96IGhvenrDoXJlbmRlbHQga29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgYmXDoWxsw610w6Fzb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0VneWVkaSBuw6l2IGVsbGVuxZFyesOpc2Uga2l6w6Fyw7NsYWcgdWd5YW5hYmJhbiBhIGtvbmZpZ3Vyw6FjacOzZWxlbSBvc3p0w6FseWJhbiAo4oCeb3N6dMOhbHnigJ0pIHZhZ3kgZ2xvYsOhbGlzYW4gKOKAnmdsb2LDoWxpc+KAnSksIGFtZWx5IGF6dCBqZWxlbnRpLCBob2d5IG1pbmRlbiBtZWdsw6l2xZEga29uZmlndXLDoWNpw7NlbGVtIGVneSBmacOza2JhIGxlc3ogZmVsdsOpdmUgYSBrZXR0xZF6w6lzZWsga2VyZXPDqXNla29yLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnVsOhbGFzc3pvbiBlZ3kgbW9kdWx0IGEgbsOpdnPDqW1hIMOpcnbDqW55ZXPDrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1bDoWxhc3N6b24gZWd5IG1vZHVsdCBhIHN6w6Ftc8OpbWEgw6lydsOpbnllc8OtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdWw6FsYXNzem9uIGtpIGVneSBtb2R1bHQgYSB2ZXJ6acOzcyBrYXJha3RlcmzDoW5jLXPDqW1hIMOpcnbDqW55ZXPDrXTDqXPDqWhlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdWw6FsYXNzemEga2kgYXogw7pqIHZlcnppw7MgbMOpdHJlaG96w6Fzw6F0IGtpdsOhbHTDsyBhdHRyaWLDunR1bW9rYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1bDoWxhc3N6YSBraSBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlob3ogcmVuZGVsZW5kxZEga2F0ZWfDs3Jpw6FrYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnQSBDb25maWdJdGVtIE92ZXJ2aWV3IG9zemxvcCBrb25maWd1csOhY2nDs3MgZWxlbXN6xbFyxZFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQXogw7xneW7DtmtpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWluZWsgw6F0dGVraW50w6lzw6liZW4gc3rFsXJoZXTFkSBvc3psb3Bvay4gTWVnamVneXrDqXM6IENzYWsgYSBrb25maWd1csOhY2nDs3MgZWxlbSBhdHRyaWLDunR1bWFpIMOpcyBhIGRpbmFtaWt1cyBtZXrFkWsgKER5bmFtaWNGaWVsZF9OYW1lWCkgZW5nZWTDqWx5ZXpldHRlay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSBob3p6w6FhZMOhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIHN6ZXJrZXN6dMOpc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXLDoWNpw7NlbGVtIGVzZW3DqW55IG1vZHVsLCBhbWVseSBlbmdlZMOpbHllemkgYSBuYXBsw7N6w6FzdCBheiBlbMWRem3DqW55ZWtiZSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0tvbmZpZ3Vyw6FjacOzcyBlbGVtIGVzZW3DqW55bW9kdWwsIGFtZWx5IGZyaXNzw610aSBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWtldCBheiBha3R1w6FsaXMgZGVmaW7DrWNpw7NqdWtyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gbnlvbXRhdMOhc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtIG5hZ3nDrXTDoXNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gZmEgbsOpemV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gdmVyemnDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdBIGvDtnZldGtlesWRIG9zenTDoWx5b2sgQ29uZmlnSXRlbXMgbmVtIGtlcsO8bG5layB0w6Fyb2zDoXNyYSBheiBFbGFzdGljc2VhcmNoIGtpc3pvbGfDoWzDs24uIEFoaG96LCBob2d5IGV6dCBhIG1lZ2zDqXbFkSBDSS1rcmUgYWxrYWxtYXp6dWssIGEgQ0kgbWlncsOhY2nDs3QgYSBrb256b2xvbiBrZXJlc3p0w7xsIGtlbGwgZnV0dGF0bmksIG1pdXTDoW4gbWVndsOhbHRvenRhdHR1ayBlenQgYXogb3BjacOzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQSBrw7Z2ZXRrZXrFkSB0ZWxlcMOtdMOpc2kgw6FsbGFwb3Rva2thbCByZW5kZWxrZXrFkSBDb25maWdJdGVtcyBuZW0ga2Vyw7xsIHTDoXJvbMOhc3JhIGF6IEVsYXN0aWNzZWFyY2gta2lzem9sZ8OhbMOzbi4gQSBtZWdsw6l2xZEgQ0kta3JlIHZhbMOzIGFsa2FsbWF6w6FzaG96IGEgQ0ktbWlncsOhY2nDs3QgYSBrb256b2xvbiBrZXJlc3p0w7xsIGtlbGwgZnV0dGF0bmksIG1pdXTDoW4gbWVndsOhbHRvenRhdHR1ayBlenQgYXogb3BjacOzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXLDoWNpw7NlbGVtLWtvcmzDoXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbS1rb3Jsw6F0IG9sZGFsYW5rw6ludC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzbWVuZWR6c21lbnQtYWRhdGLDoXppcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0ga2VyZXPDqXNpIGjDoXR0w6lycHJvZ3JhbSDDunR2w6FsYXN6dMOzamEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ01lZ2hhdMOhcm96w6Fzb2sgbMOpdHJlaG96w6FzYSDDqXMga2V6ZWzDqXNlIGEga29uZmlndXLDoWNpw7NlbGVtZWtuw6lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0Jpem9ueW9zIGlkxZFwb250b2tiYW4gamVneWVrZXQgaG96IGzDqXRyZSBhIENvbmZpZ0l0ZW1zIHN6w6Ftw6FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnQXogw7xneWZlbGVrIGzDoXRoYXRqw6FrIGEga29yw6FiYmkgQ0ktdmVyemnDs2thdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnQXogw7xneWZlbGVrbmVrIGxlaGV0xZFzw6lnw7xrIHZhbiBtYW51w6FsaXNhbiB2w6FsdGFuaSBhIGtvcsOhYmJpIENJLXZlcnppw7NrIGvDtnrDtnR0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0Ega29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGvDqXBlcm55xZFqw6luZWsgYXR0cmliw7p0dW3DoW4gaGFzem7DoWxhbmTDsyBhbGFww6lydGVsbWV6ZXR0IGFkYXRvay4gUMOpbGRhOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0Ega29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGvDqXBlcm55xZFqw6luZWsgYXR0cmliw7p0dW3DoW4gaGFzem7DoWxhbmTDsyBhbGFww6lydGVsbWV6ZXR0IGFkYXRvay4gUMOpbGRhOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnTcWxdmVsZXRlayBtZWdoYXTDoXJvesOhc2EsIGFob2wgZWd5IGJlw6FsbMOtdMOhc29rIGdvbWIgw6lyaGV0xZEgZWwgYSBrYXBjc29sdCBvYmpla3R1bW9rIGZlbMO8bGV0aSBlbGVtZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0g4oCew7Zzc3pldGV0dOKAnSkuIE5lIGZlbGVkamUsIGhvZ3kgZXpla25layBhIG3FsXZlbGV0ZWtuZWsgcmVuZGVsa2V6bmnDvGsga2VsbCBhIGvDtnZldGtlesWRIEpTIMOpcyBDU1MgZsOhamxvayByZWdpc3p0csOhbMOhc8OhdmFsOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDDqXMgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnVGVtcGxhdGU6OlRvb2xraXQgc8OpbWEgZGVmaW5pw6Fsw6FzYSBhIHZlcnppw7NzenRyaW5nZWtoZXouIENzYWsgYWtrb3IgaGFzem7DoWxhdG9zLCBoYSBhIFZlcnNpb24gU3RyaW5nIE1vZHVsZSDDqXJ0w6lrZSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdIYXTDoXJvenphIG1lZyBhem9uIGZlbHTDqXRlbGVrIGvDtnLDqXQsIGFtZWx5ZWsgbWVsbGV0dCBheiDDvGd5ZsOpbCBsw6F0aGF0IGVneSBrb25maWd1csOhY2nDs3MgZWxlbWV0LiBBIGZlbHTDqXRlbGVrIG9wY2lvbsOhbGlzYW4ga29ybMOhdG96aGF0w7NrIGJpem9ueW9zIMO8Z3lmw6lsY3NvcG9ydG9rcmEuIEEgbsOpdiBheiBlZ3lldGxlbiBrw7Z0ZWxlesWRIGF0dHJpYsO6dHVtLiBIYSBuaW5jcyBtw6FzIG9wY2nDsyBtZWdhZHZhLCBha2tvciBheiDDtnNzemVzIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGzDoXRoYXTDsyBsZXN6IGF6IGFkb3R0IGthdGVnw7NyaWEgYWxhdHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2thdCBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIHTDtnJsw6lzw6loZXogYXogw6FsdGFsw6Fub3MgZmVsw7xsZXQgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rYXQgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW1layBsZWvDqXLDqXPDqWhleiBheiDDoWx0YWzDoW5vcyBmZWzDvGxldCBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2thdCBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIGtlcmVzw6lzw6loZXogYXogw6FsdGFsw6Fub3MgZmVsw7xsZXQgaGFzem7DoWxhdMOhdmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgYmXDoWxsw610w6Fzw6Fob3ogc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2thdCBheiDDoWx0YWzDoW5vcyBmZWzDvGxldCBoYXN6bsOhbGF0w6F2YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0VneSDDoXR0ZWtpbnTFkSBtb2R1bHQgaGF0w6Fyb3ogbWVnIGVneSBrb25maWd1csOhY2nDs2VsZW0gbGlzdGEga2lzIG7DqXpldMOpbmVrIG1lZ2plbGVuw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgYSBjc29tw7Nwb250a2FwY3NvbGF0b2tiYW4gbWVnIGtlbGwtZSBqZWxlbsOtdGVuaSBhIGthcGNzb2xhdHTDrXB1cyBjw61ta8OpaXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdSZWd1bMOhcmlzIGtpZmVqZXrDqXNla2V0IGhhdMOhcm96IG1lZyBlZ3nDqW5pbGVnIG1pbmRlbiBlZ3llcyBrb25maWd1csOhY2nDs2VsZW0gb3N6dMOhbHluw6FsIGEga29uZmlndXLDoWNpw7NlbGVtIG5ldsOpbmVrIGVsbGVuxZFyesOpc8OpaGV6LCB2YWxhbWludCBhIG1lZ2ZlbGVsxZEgaGliYcO8emVuZXRlayBtZWdqZWxlbsOtdMOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBDSS1rIGVsw6lyaGV0xZEgb3N6bG9wYWl0IGEga29uZmlndXLDoWNpw7NzIGVsZW0gw6F0dGVraW50w6lzw6liZW4gYSBDSS1vc3p0w6FseXTDs2wgZsO8Z2fFkWVuLiBNaW5kZW4gZWd5ZXMgYmVqZWd5esOpc25layBlZ3kgb3N6dMOhbHluw6l2YsWRbCDDqXMgYSBtZWdmZWxlbMWRIG9zenTDoWx5aG96IHJlbmRlbGtlesOpc3JlIMOhbGzDsyBtZXrFkWsgdMO2bWJqw6lixZFsIGtlbGwgw6FsbG5pYS4gQSBkaW5hbWlrdXMgbWV6xZFiZWplZ3l6w6lzZWtuZWsgYSBEeW5hbWljRmllbGRfRmllbGROYW1lIHPDqW3DoXQga2VsbCBrw7Z2ZXRuacO8ay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYXogYWxhcMOpcnRlbG1lemV0dCBrb25maWd1csOhY2nDs3MgZWxlbSBhdHRyaWLDunR1bW90IGF6IMO8Z3luw7ZraSBmZWzDvGxldCBrb25maWd1csOhY2nDs3MgZWxlbSBrZXJlc8Opc2kgZXJlZG3DqW55w6luZWsga29uZmlndXLDoWNpw7NzIGVsZW0gcmVuZGV6w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGVyZWRtw6luecOpbmVrIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIHJlbmRlesOpc8OpaGV6IGhhc3puw6FsdCBhbGFww6lydGVsbWV6ZXR0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGF0dHJpYsO6dHVtb3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiBhbGFww6lydGVsbWV6ZXR0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGF0dHJpYsO6dHVtb3QgYSBtxbF2ZWxldCBrb25maWd1csOhY2nDs3MgZWxlbSBrZXJlc8Opc2kgZXJlZG3DqW55w6luZWsga29uZmlndXLDoWNpw7NzIGVsZW0gcmVuZGV6w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga29uZmlndXLDoWNpw7NzIGVsZW1layBhbGFww6lydGVsbWV6ZXR0IHNvcnJlbmRqw6l0IGF6IMO8Z3luw7ZraSBmZWzDvGxldCBrb25maWd1csOhY2nDs3MgZWxlbWtlcmVzw6lzaSBlcmVkbcOpbnnDqWJlbi4gRmVsZmVsw6k6IGEgbGVncsOpZ2ViYmkgYSB0ZXRlasOpbi4gTGVmZWzDqTogYSBsZWdmcmlzc2ViYiB2YW4gZmVsw7xsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgYWxhcMOpcnRlbG1lemV0dCBzb3JyZW5kasOpdCBheiDDvGd5ZsOpbGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIGtlcmVzw6lzaSBlcmVkbcOpbnnDqWJlbi4gRmVsZmVsw6k6IGEgbGVncsOpZ2ViYmkgZmVsw7xsLiBMZWZlbMOpOiBhIGxlZ2ZyaXNzZWJiIHZhbiBmZWzDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs3MgZWxlbWVrIGFsYXDDqXJ0ZWxtZXpldHQgc29ycmVuZGrDqXQgYSBrb25maWd1csOhY2nDs3MgZWxlbWVrIGtlcmVzw6lzaSBlcmVkbcOpbnnDqWJlbi4gRmVsZmVsw6k6IGEgbGVncsOpZ2ViYmkgZmVsw7xsLiBMZWZlbMOpOiBhIGxlZ2ZyaXNzZWJiIGEgdGV0ZWrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0ktayBhbGFww6lydGVsbWV6ZXR0IG1lZ2plbGVuw610ZXR0IG9zemxvcGFpdCBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIMOhdHRla2ludMOpc8OpYmVuIGEgQ0ktb3N6dMOhbHl0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGJlamVneXrDqXNuZWsgZWd5IG9zenTDoWx5bsOpdmLFkWwgw6lzIGEgbWVnZmVsZWzFkSBvc3p0w6FseWhveiByZW5kZWxrZXrDqXNyZSDDoWxsw7MgbWV6xZFrIHTDtm1iasOpYsWRbCBrZWxsIMOhbGxuaWEuIEEgZGluYW1pa3VzIG1lesWRYmVqZWd5esOpc2VrbmVrIGEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSBzw6ltw6F0IGtlbGwga8O2dmV0bmnDvGsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ01lZ2hhdMOhcm96emEgYSBtZWdqZWxlbsOtdGVuZMWRIGthcGNzb2xhdG9rIGFsYXDDqXJ0ZWxtZXpldHQgbcOpbHlzw6lnw6l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgbWVnamVsZW7DrXRldHQga29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGF0dHJpYsO6dHVtb3QgYSBrb25maWd1csOhY2nDs3MgZWxlbSBrZXJlc8Opc2kga8OpcGVybnnFkW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGFsYXDDqXJ0ZWxtZXpldHQgbWVnamVsZW7DrXRldHQga29uZmlndXLDoWNpw7NzIGVsZW0ga2VyZXPDqXNpIGF0dHJpYsO6dHVtb3QgYSBrb25maWd1csOhY2nDs3MgZWxlbSBrZXJlc8Opc2kga8OpcGVybnnFkW4uIFDDqWxkYTogIktleSIgYSBkaW5hbWlrdXMgbWV6xZEgbmV2ZSwgZWJiZW4gYXogZXNldGJlbiBcJ1hcJywgIkNvbnRlbnQiIGEgZGluYW1pa3VzIG1lesWRIMOpcnTDqWtlIGEgZGluYW1pa3VzIG1lesWRIHTDrXB1c8OhdMOzbCBmw7xnZ8WRZW4sIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgw6lzIHZhZ3kgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBheiDigJ5JVFNNQ29uZmlnSXRlbeKAnSBvc3p0w6FseSBhbGFww6lydGVsbWV6ZXR0IGFsb2JqZWt0dW3DoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0ktayBlbMOpcmhldMWRIG9zemxvcGFpdCBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtIMOhdHRla2ludMOpc8OpYmVuIGEgQ0ktb3N6dMOhbHl0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGVneWVzIGJlamVneXrDqXNuZWsgZWd5IG9zenTDoWx5bsOpdmLFkWwgw6lzIGEgbWVnZmVsZWzFkSBvc3p0w6FseWhveiByZW5kZWxrZXrDqXNyZSDDoWxsw7MgbWV6xZFrIHTDtm1iasOpYsWRbCBrZWxsIMOhbGxuaWEuIEEgZGluYW1pa3VzIG1lesWRYmVqZWd5esOpc2VrbmVrIGEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSBzw6ltw6F0IGtlbGwga8O2dmV0bmnDvGsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBSaWNoIFRleHQgc3plcmtlc3p0xZEtw7Zzc3pldGV2xZEgbWFnYXNzw6Fnw6F0IGVubsOpbCBhIGvDqXBlcm55xZFuw6lsLiBTesOhbSAoa8OpcHBvbnQpIHZhZ3kgc3rDoXphbMOpayAocmVsYXTDrXYpIMOpcnTDqWtldCBhZGpvbiBtZWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBDSSBtZWdoYXTDoXJvesOhcy1zemVya2VzenTFkSBzb3JhaW5hayBzesOhbcOhdCBheiBhZG1pbmlzenRyw6FjacOzcyBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGF6IGluY2lkZW5zw6FsbGFwb3RvayBzb3JyZW5kasOpdCBhIGxlZ21hZ2FzYWJidMOzbCAocMOpbGTDoXVsIGtyaXRpa3VzKSBhIGxlZ2FsYWNzb255YWJiaWcgKHDDqWxkw6F1bCBmdW5rY2lvbsOhbGlzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEga2FwY3NvbMOzZMOzIMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Rva2F0LCBhaG9sIGEga2FwY3NvbHQgamVneWVrIGJlZm9secOhc29saGF0asOhayBlZ3kga29uZmlndXLDoWNpw7NlbGVtIMOhbGxhcG90w6F0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrZXJlc8Opc2kga29ybMOhdG90IGF6IEFnZW50SVRTTUNvbmZpZ0l0ZW0ga8OpcGVybnnFkW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIGtlcmVzw6lzaSBrb3Jsw6F0b3QgYXogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBrw6lwZXJuecWRbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBrw6lwZXJuecWRIGtlcmVzw6lzaSBoYXTDoXLDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSBhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gga8OpcGVybnnFkSBrZXJlc8Opc2kga29ybMOhdGrDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEgYSBrb25maWd1csOhY2nDs2VsZW1layBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrYXBjc29sYXRpIHTDoWJsYSBrb21wbGV4IG7DqXpldMOpYmVuIGF6IMO2c3N6ZXMga29uZmlndXLDoWNpw7NlbGVtLW9zenTDoWx5bsOhbC4gSGEgbmluY3MgYmVqZWd5esOpcywgYWtrb3IgYXogYWxhcMOpcnRlbG1lemV0dCBvc3psb3BvayBsZXN6bmVrIG1lZ2plbGVuw610dmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphIGEgQ0ktayBtZWdqZWxlbsOtdGV0dCBvc3psb3BhaXQgYSBrYXBjc29sYXRpIHTDoWJsYSBrb21wbGV4IG7DqXpldMOpYmVuIGEgQ0kgb3N6dMOhbHl0w7NsIGbDvGdnxZFlbi4gTWluZGVuIGJlamVneXrDqXN0IGF6IG9zemxvcCBuZXZlIMOpcyBkdXBsYSBrZXR0xZFzcG9udCBlbMWRdGFnZ2FsIGtlbGwgZWxsw6F0bmkgKGF6YXogQ29tcHV0ZXI6OikuIFZhbiBuw6low6FueSBvbHlhbiBDSS1hdHRyaWLDunR1bSwgYW1lbHkga8O2esO2cyBtaW5kZW4gQ0ktdmVsIChww6lsZMOhdWwgYSBDb21wdXRlciBvc3p0w6FseW7DoWw6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIEF6IGVnecOpbmkgQ0ktYXR0cmliw7p0dW1vayBtZWdqZWxlbsOtdMOpc8OpaGV6LCBhaG9neSBhem9rIGEgQ0ktbWVnaGF0w6Fyb3rDoXNiYW4gbWVnIHZhbm5hayBhZHZhLCBhIGvDtnZldGtlesWRIHPDqW3DoXQga2VsbCBoYXN6bsOhbG5pIChww6lsZMOhdWwgYSBDb21wdXRlciBvc3p0w6FseW7DoWwpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSGEgZWd5IENJIG9zenTDoWx5aG96IG5pbmNzIGJlamVneXrDqXMsIGFra29yIGF6IGFsYXDDqXJ0ZWxtZXpldHQgb3N6bG9wb2sgbGVzem5layBtZWdqZWxlbsOtdHZlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgYXogSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0w7pyYSBoYXJtYWRpayBzemludGrDqW4gbWVseSBlbGVtZWsgw6FsbG5hayByZW5kZWxrZXrDqXNyZSBheiAiQWN0aW9uIiAoTcWxdmVsZXQpIHN6w6Ftw6FyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphLCBob2d5IG1lbHkgZWxlbWVrIMOhbGxuYWsgcmVuZGVsa2V6w6lzcmUgYXogSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0w7pyYSBlbHPFkSBzemludGrDqW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lZ2hhdMOhcm96emEsIGhvZ3kgbWVseSBlbGVtZWsgw6FsbG5hayByZW5kZWxrZXrDqXNyZSBheiBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1a3TDunJhIG3DoXNvZGlrIHN6aW50asOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTWVnaGF0w6Fyb3p6YSwgaG9neSBtZWx5IGthcGNzb2xhdHTDrXB1c29rIChhIGplZ3kgbsOpesWRcG9udGrDoWLDs2wgZWxuZXZlenZlKSBiZWZvbHnDoXNvbGhhdGrDoWsgZWd5IGthcGNzb2x0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoWxsYXBvdMOhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNZWdoYXTDoXJvenphLCBob2d5IG1lbHkgamVneXTDrXB1cyBiZWZvbHnDoXNvbGhhdGphIGVneSBrYXBjc29sdCBrb25maWd1csOhY2nDs2VsZW0gw6FsbGFwb3TDoXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnTWVnaGF0w6Fyb3rDoXMgZnJpc3PDrXTDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csOhY2nDs2VsZW0gdMO2cmzDqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnw5x6ZW1iZSDDoWxsw610w6FzaSDDoWxsYXBvdCBzesOtbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0tldHTFkXrDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdEaW5hbWlrdXMgbWV6xZEgZXNlbcOpbnltb2R1bCwgYW1lbHkgYSBrb25maWd1csOhY2nDs3MgZWxlbSBkZWZpbsOtY2nDs2l0IHN6aW5rcm9uaXrDoWxhdGxhbm5hayBqZWzDtmxpLCBoYSBhIGRpbmFtaWt1cyBtZXrFkWsgbWVndsOhbHRvem5hay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgdG92w6FiYmkgSVRTTSBtZXrFkSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsOtdGV0dCBkaW5hbWlrdXMgbWV6xZFrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiDDvGd5ZsOpbGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVtIMOhdHRla2ludMWRIGvDqXBlcm55xZFqw6luIG1lZ2plbGVuxZEgZGluYW1pa3VzIG1lesWRay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneW7DtmtpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzcyBlbGVta2VyZXPFkSBrw6lwZXJuecWRasOpbiBtZWdqZWxlbsWRIGRpbmFtaWt1cyBtZXrFkWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0VuZ2Vkw6lseWV6aSBhIGtvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtxbF2ZWxldCBmdW5rY2nDs3QgYXogw7xneWludMOpesWRaSBlbMWRdMOpdHByb2dyYW1uw6FsLCBob2d5IGVneXN6ZXJyZSBlZ3luw6lsIHTDtmJiIGtvbmZpZ3Vyw6FjacOzZWxlbW1lbCBkb2xnb3poYXNzb24uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdDc2FrIGEgZmVsc29yb2x0IGNzb3BvcnRva25hayBlbmdlZMOpbHllemkgYSBrb25maWd1csOhY2nDs2VsZW0gdMO2bWVnZXMgbcWxdmVsZXQgZnVua2Npw7N0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBeiBJVFNNIG9uZmlndXJhdGlvbiBlbGVtZWsgZWd5ZWRpIG5ldsOpbmVrIGVsbGVuxZFyesOpc8OpcmUgc3pvbGfDoWzDsyBmdW5rY2nDsyBlbmdlZMOpbHllesOpc2UvbGV0aWx0w6FzYS4gTWllbMWRdHQgZW5nZWTDqWx5ZXpuw6kgZXp0IGEgYmXDoWxsw610w6FzdCwgZWxsZW7FkXJpenplIGEgcmVuZHN6ZXLDqXQgYSBtw6FyIG1lZ2zDqXbFkSwgZHVwbGlrw6FsdCBuZXbFsSBrb25maWd1csOhY2nDs3MgZWxlbWVrIHRla2ludGV0w6liZW4uIEV6dCBheiBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMga29uem9scGFyYW5jY3NhbCB0ZWhldGkgbWVnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdFc2Vtw6lueW1vZHVsIGEga29uZmlndXLDoWNpw7NlbGVtIMOhbGxhcG90w6FuYWsgYmXDoWxsw610w6Fzw6Fob3ogZWd5IGplZ3kga29uZmlndXLDoWNpw7NlbGVtIGhpdmF0a296w6Fzw6FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtaW5kZXggbWV6xZFpLCBhbWVseWVrZXQgYSB0ZWxqZXMgc3rDtnZlZ2VzIGtlcmVzw6lzaGV6IGhhc3puw6FsbmFrLiBBIG1lesWRayBzemludMOpbiB0w6Fyb2zDoXNyYSBrZXLDvGxuZWssIGRlIGF6IMOhbHRhbMOhbm9zIGZ1bmtjaW9uYWxpdMOhcyBzemVtcG9udGrDoWLDs2wgbmVtIGvDtnRlbGV6xZFlay4gQSBtZWxsw6lrbGV0ZWsgYmV2b27DoXNhIGxldGlsdGhhdMOzIGEgYmVqZWd5esOpcyAwLXJhIMOhbGzDrXTDoXPDoXZhbCB2YWd5IHTDtnJsw6lzw6l2ZWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtaW5kZXhiZW4gdMOhcm9sdCBtZXrFkWssIGFtZWx5ZWtldCBhIHRlbGplcyBzesO2dmVnZXMga2VyZXPDqXNlbiBrw612w7xsIG3DoXNyYSBpcyBoYXN6bsOhbG5hay4gQSB0ZWxqZXMgZnVua2Npb25hbGl0w6FzIMOpcmRla8OpYmVuIG1pbmRlbiBtZXrFkSBrw7Z0ZWxlesWRLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ01pbmRlbiBlZ3llcyB3ZWJzem9sZ8OhbHRhdMOhc2hveiAoa3VsY3MpIG1lZ2FkaGF0w7MgZWd5IHNvciBvc3p0w6FseSAow6lydMOpayksIGFtZWx5ZWtyZSBheiBpbXBvcnTDoWzDoXMga29ybMOhdG96dmEgdmFuLiBBeiDDtnNzemVzIGtpdsOhbGFzenRvdHQgb3N6dMOhbHlob3ogdmFneSBheiDDtnNzemVzIGzDqXRlesWRIG9zenTDoWx5aG96IGF6IGF6b25vc8OtdMOzIGF0dHJpYsO6dHVtb2thdCBrZWxsIGtpdsOhbGFzenRhbmkgYXogaW52b2tlciBrb25maWd1csOhY2nDs2Jhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1bCByZWdpc3p0csOhY2nDsyBhIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIHLDqXRlZ2hlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsIHJlZ2lzenRyw6FjacOzIGEgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgcsOpdGVnaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsIHJlZ2lzenRyw6FjacOzIGEgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgcsOpdGVnaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSDDoXR0ZWtpbnTDqXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSB0ZWxlcMOtdMOpc2kgw6FsbGFwb3Rva2F0IHRhcnRhbG1henphIGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW1rZXJlc8WRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWxlw6lydHZlIGF6IGluY2lkZW5zw6FsbGFwb3Rva2F0IGF6IMO8Z3lmw6lsZmVsw7xsZXQga29uZmlndXLDoWNpw7NzIGVsZW1rZXJlc8WRasOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdBIG3FsXZlbGV0IGVyZWRtw6luecOpYmVuIG1lZ2plbGVuw610ZW5kxZEga29uZmlndXLDoWNpw7NzIGVsZW1layBtYXhpbcOhbGlzIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdFZ3kgbW9kdWwgZWd5IG9zenTDoWx5w6lydCBmZWxlbMWRcyBjc29wb3J0IGVsbGVuxZFyesOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ0VneSBtb2R1bCBlZ3kga29uZmlndXLDoWNpw7NlbGVtw6lydCBmZWxlbMWRcyBjc29wb3J0IGVsbGVuxZFyesOpc8OpaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ0VneSBtb2R1bCBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBzdGF0aXN6dGlrw6FrIGVsxZHDoWxsw610w6Fzw6Fob3ouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTsOpdiBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnU3rDoW0gbW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneW7DtmtpIGZlbMO8bGV0ZW4gYSBrZXJlc8Opc2kgZXJlZG3DqW55ZWsgZWd5ZXMgb2xkYWxhaW4gbWVnamVsZW7DrXRlbmTFkSBrb25maWd1csOhY2nDs3MgZWxlbWVrIHN6w6FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogw7xneWbDqWxmZWzDvGxldGVuIGEga2VyZXPDqXNpIGVyZWRtw6lueWVrIG1pbmRlbiBlZ3llcyBvbGRhbMOhbiBtZWdqZWxlbsOtdGVuZMWRIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgc3rDoW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdBIGtlcmVzZW5kxZEgb2JqZWt0dW1vaywgaMOhbnkgYmVqZWd5esOpcyDDqXMgbWlseWVuIGF0dHJpYsO6dHVtb2sgamVsZW5qZW5layBtZWcuIEEgQ29uZmlnSXRlbSBhdHRyaWLDunR1bW9rYXQga2lmZWplemV0dGVuIGF6IEVsYXN0aWNzZWFyY2ggc2Vnw610c8OpZ8OpdmVsIGtlbGwgdMOhcm9sbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ8OBdHRla2ludMOpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Ega29uZmlndXLDoWNpw7NzIGVsZW1vc3p0w6FseW9rIGthdGVnw7NyacOhaW5hayBwYXJhbcOpdGVyZWkgYXogw7xneW7DtmtpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Ega2lzIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgw6F0dGVraW50w6lzw6luZWsgb3N6bG9wc3rFsXLFkWluZWsgcGFyYW3DqXRlcmVpLiBNZWdqZWd5esOpczogYXogIkFrdMOtdiIgMC1yYSDDoWxsw610w6FzYSBjc2FrIGF6dCBha2Fkw6FseW96emEgbWVnLCBob2d5IGF6IMO8Z3luw7Zrw7ZrIHN6ZXJrZXNzesOpayBhIGNzb3BvcnQgYmXDoWxsw610w6FzYWl0IGEgc3plbcOpbHllcyBiZcOhbGzDrXTDoXNhaWtiYW4sIGRlIGEgcmVuZHN6ZXJnYXpkw6FrbmFrIHRvdsOhYmJyYSBpcyBsZWhldMWRdsOpIHRlc3ppLCBob2d5IGVneSBtw6FzaWsgZmVsaGFzem7DoWzDsyBuZXbDqWJlbiBzemVya2Vzc3rDqWsgYSBiZcOhbGzDrXTDoXNva2F0LiBBIFwnUHJlZmVyZW5jZUdyb3VwXCcgc2Vnw610c8OpZ8OpdmVsIHN6YWLDoWx5b3poYXRqYSwgaG9neSBlemVrIGEgYmXDoWxsw610w6Fzb2sgbWVseWlrIHRlcsO8bGV0ZW4gamVsZW5qZW5layBtZWcgYSBmZWxoYXN6bsOhbMOzaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3RvayBzesOtbmVpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQgYmXDoWxsw610w6Fzb2sgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW3DqXRlcmVrIGF6IMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3Rva2hveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYXogw6FsdGFsw6Fub3Mga2F0YWzDs2d1cyBhdHRyaWLDunR1bWFpbmFrIHDDqWxkYSBqb2dvc3VsdHPDoWcgY3NvcG9ydGphaWhvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlvayBuw6l2bW9kdWxqw6FuYWsgcGFyYW3DqXRlcmVpIGF6IMO8Z3luw7ZrZmVsw7xsZXQgYmXDoWxsw610w6Fzb2sgbsOpemV0w6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlvayBzesOhbW1vZHVsasOhbmFrIHBhcmFtw6l0ZXJlaSBheiDDvGd5bsO2a2ZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbcOpdGVyZWsgYXogb2xkYWxha2hveiAoYW1lbHlla2VuIGEga29uZmlndXLDoWNpw7NlbGVtZWsgbWVnamVsZW5uZWspLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlvayB2ZXJ6acOzc3p0cmluZyBtb2R1bGrDoW5hayBwYXJhbcOpdGVyZWkgYXogw7xneW7DtmtpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IMO8Z3luw7ZraSBmZWzDvGxldCBiZcOhbGzDrXTDoXNvayBuw6l6ZXTDqWJlbiBhIGtvbmZpZ3Vyw6FjacOzcyBlbGVtb3N6dMOhbHlvayBrb25maWd1csOhY2nDs3MgZWxlbW9zenTDoWx5YWlob3ogdGFydG96w7MgdmVyemnDs3N6dHJpbmcgc2FibG9uIGVzemvDtnprw6lzemxldCBtb2R1bGrDoW5hayBwYXJhbcOpdGVyZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Ega29uZmlndXLDoWNpw7NzIGVsZW1vc3p0w6FseW9rIHZlcnppw7NpbmTDrXTDs2rDoW5hayBwYXJhbcOpdGVyZWkgYXogw7xneW7DtmtpIGZlbMO8bGV0IGJlw6FsbMOtdMOhc29rIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1bDqWdyZWhhanRqYSBhIGJlw6FsbMOtdG90dCBtxbF2ZWxldGV0IG1pbmRlbiBlc2Vtw6lueW7DqWwgKG1pbnQgZWd5IG1lZ2jDrXbDsykgbWluZGVuIGVneWVzIGJlw6FsbMOtdG90dCB3ZWJzem9sZ8OhbHRhdMOhc2hvei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0pvZ29zdWx0c8OhZ2kgY3NvcG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0F6IElUU00ga29uZmlndXLDoWNpw7NzIGVsZW0gY3NhdG9sw6FzaSBtxbF2ZWxldCBoYXN6bsOhbGF0w6Fob3ogc3rDvGtzw6lnZXMgZW5nZWTDqWx5ZWsgYXogw7xneW7DtmtpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ga29uZmlndXLDoWNpw7NlbGVtIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBIHN6w7xrc8OpZ2VzIGpvZ29zdWx0c8OhZ29rIGF6IElUU00ga29uZmlndXLDoWNpw7NlbGVtIGtlcmVzw6lzaSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogSVRTTSBrb25maWd1csOhY2nDs3MgZWxlbWVrIGtlcmVzw6lzaSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiDDvGd5ZsOpbGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXogSVRTTSBrb25maWd1csOhY2nDs3MgZWxlbWbDoXQgbWVnamVsZW7DrXTFkSBrw6lwZXJuecWRIGhhc3puw6FsYXTDoWhveiBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiDDvGd5bsO2a2kgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBuYWd5w610w6FzaSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBheiBJVFNNIGtvbmZpZ3Vyw6FjacOzZWxlbSBob3p6w6FhZMOhc2Ega8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBeiBJVFNNIGtvbmZpZ3Vyw6FjacOzcyBlbGVtZWsgw7ZtbGVzenRldHQga8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogw7xneW7DtmtpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0gc3plcmtlc3p0w6lzZSBrw6lwZXJuecWRasOpbmVrIGhhc3puw6FsYXTDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVrIGvDqXBlcm55xZFqw6luZWsgaGFzem7DoWxhdMOhaG96IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Egc3rDvGtzw6lnZXMgam9nb3N1bHRzw6Fnb2sgYXogSVRTTSBrb25maWd1csOhY2nDs2VsZW0gbnlvbXRhdMOhc2Ega8OpcGVybnnFkWrDqW5layBoYXN6bsOhbGF0w6Fob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnQSBzesO8a3PDqWdlcyBqb2dvc3VsdHPDoWdvayBhIGtvbmZpZ3Vyw6FjacOzZWxlbWVrIHTDtnJsw6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnS29uZmlndXLDoWNpw7NlbGVtZWsga2VyZXPDqXNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnRWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBpbmNpZGVuc8OhbGxhcG90w6FuYWsgYXV0b21hdGlrdXMgYmXDoWxsw610w6FzYSwgYW1pa29yIGVneSBqZWd5ZXQga2FwY3NvbG5hayBlZ3kga29uZmlndXLDoWNpw7NlbGVtaGV6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0Jlw6FsbMOtdGphIGF6IMO8emVtYmUgw6FsbMOtdMOhc2kgw6FsbGFwb3RvdCBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZtZWdlcyBtxbF2ZWxldCBrw6lwZXJuecWRasOpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmXDoWxsw610amEgYXogaW5jaWRlbnPDoWxsYXBvdG90IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXQga29uZmlndXLDoWNpw7NlbGVtIHTDtm1lZ2VzIG3FsXZlbGV0IGvDqXBlcm55xZFqw6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4sIGFtZWx5IGxlaGV0xZF2w6kgdGVzemkgZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSDDtnNzemVrYXBjc29sw6Fzw6F0IGVneSBtw6FzaWsgb2JqZWt0dW1tYWwgYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gbmFnecOtdMOhc2kgbsOpemV0w6luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBlbMWRem3DqW55ZWluZWsgZWzDqXLDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoXR0ZWtpbnTFkWrDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIGVsxZF6bcOpbnllaW5layBlbMOpcsOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSB0w7ZybMOpc8OpaGV6IGF6IMO8Z3lpbnTDqXrFkWkgZmVsw7xsZXRlbiBheiBlbGVtIG5hZ3nDrXTDoXNpIG7DqXpldMOpYmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTWVnamVsZW7DrXQgZWd5IGxpbmtldCBhIG1lbsO8YmVuIGEga29uZmlndXLDoWNpw7NzIGVsZW1layBoaXZhdGtvesOhc2FpbmFrIGZhIG7DqXpldGJlbiB0w7ZydMOpbsWRIG1lZ2plbGVuw610w6lzw6loZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIGtldHTFkXrDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0IGtvbmZpZ3Vyw6FjacOzZWxlbSDDoXR0ZWtpbnTFkWrDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIGtldHTFkXrDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gZWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBzemVya2VzenTDqXPDqWhleiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VneSBoaXZhdGtvesOhc3QgamVsZW7DrXQgbWVnIGEgbWVuw7xiZW4gYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gbmFnecOtdMOhc2kgbsOpemV0aGV6IHZhbMOzIHZpc3N6YXTDqXLDqXNoZXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWd5IGhpdmF0a296w6FzdCBqZWxlbsOtdCBtZWcgYSBtZW7DvGJlbiBlZ3kga29uZmlndXLDoWNpw7NlbGVtIG55b210YXTDoXPDoWhveiBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4gYXogZWxlbSBuYWd5w610w6FzaSBuw6l6ZXTDqWJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFZ3kgaGl2YXRrb3rDoXN0IGplbGVuw610IG1lZyBhIG1lbsO8YmVuIGVneSBrb25maWd1csOhY2nDs2VsZW1iZSB0w7ZydMOpbsWRIG5hZ3nDrXTDoXNob3ogYXogw7xneWludMOpesWRaSBmZWzDvGxldCBrb25maWd1csOhY2nDs2VsZW0gw6F0dGVraW50xZFqw6liZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZWdqZWxlbsOtdGkgYSBrb25maWd1csOhY2nDs2VsZW0gZWzFkXptw6lueWVpdCAoZm9yZMOtdG90dCBzb3JyZW5kYmVuKSBheiDDvGd5aW50w6l6xZFpIGZlbMO8bGV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0F6IGFsYXDDqXJ0ZWxtZXpldHQga2F0ZWfDs3JpYSwgYW1lbHkgbWVnamVsZW5paywgaGEgbmluY3Mga2l2w6FsYXN6dHZhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnRWd5IGtvbmZpZ3Vyw6FjacOzZWxlbSBhem9ub3PDrXTDs2phLCBww6lsZMOhdWw6IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBBeiBhbGFww6lydGVsbWV6ZXR0OiBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpa3VzYW4ga2l2w6FsdGphIGEgQ29uZmlnSXRlbUZldGNoIGjDrXbDs3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJ6acOzIGthcmFrdGVybMOhbmMga2lmZWplesOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaW9uIFN0cmluZyBtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJ6acOzIGtpdsOhbHTDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICdBIG1lesWRayBhdXRvbWF0aWt1c2FuIGtpIGxlZ3llbmVrLWUgdMO2bHR2ZSAoMSksIMOpcyBlYmJlbiBheiBlc2V0YmVuIGVsIGxlZ3llbmVrLWUgcmVqdHZlIGEgamVnecWxcmxhcG9rcsOzbCAoMikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0Vsa2Vyw7xsaGV0xZEtZSBhIENvbmZpZ0l0ZW1BQ0wgdsOpZ3JlaGFqdMOhc2EgYSBneW9yc8OtdMOzdMOhcmJhbiB0w6Fyb2x0IG1lesWRZsO8Z2fFkXPDqWdlayBlbGxlbsWRcnrDqXPDqXZlbC4gRXogamF2w610aGF0amEgYXogxbFybGFwb2sgYmV0w7ZsdMOpc2kgaWRlasOpdCwgZGUga2kga2VsbCBrYXBjc29sbmksIGhhIGF6IEFDTE1vZHVsb2thdCBheiBJVFNNQ29uZmlnSXRlbS0gw6lzIEZvcm0tUmV0dXJuVHlwZSB0w61wdXNvayBlc2V0w6liZW4ga2VsbCBoYXN6bsOhbG5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnTWlseWVuIMOhbHRhbMOhbm9zIGluZm9ybcOhY2nDs2sgamVsZW5uZWsgbWVnIGEgZmVqbMOpY2Jlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdvc3p0w6FseSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9iw6FsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdiZcO8emVtZWzDqXMgdXTDoW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ2Jlw7x6ZW1lbMOpcyBlbMWRdHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ2Jlw7x6ZW1lbHZlJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiA0NCw0NSBjbSAoMTcsNSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogNTMsMzQgY20gKDIxIGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiA2Niw2OCBjbSAoMjYsMjUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogODAsMDEgY20gKDMxLDUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5IGjDvHZlbHlrZXMgw6FsbHbDoW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogNCw0NSBjbSAoMSw3NSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiA4OCw5IGNtICgzNSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgaMO8dmVseWtlcyDDoWxsdsOhbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGjDvHZlbHlrICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMgaMO8dmVseWtlcyDDoWxsdsOhbnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IGjDvHZlbHlrICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiAxMDYsNjggY20gKDQyIGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaMO8dmVseWsgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDgsODkgY20gKDMsNSBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogMTMzLDM1IGNtICg1Miw1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaMO8dmVseWsgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IGjDvHZlbHlrICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBow7x2ZWx5ayAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogMTYwLDAyIGNtICg2MyBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBow7x2ZWx5ayAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IGjDvHZlbHlrICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIGjDvHZlbHlrICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgaMO8dmVseWsgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiAyMTMsMzYgY20gKDg0IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiAxNyw3OCBjbSAoNyBow7x2ZWx5ayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogMjIsMjMgY20gKDgsNzUgaMO8dmVseWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDI2LDY3IGNtICgxMCw1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMzEsMTIgY20gKDEyLDI1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMzUsNTYgY20gKDE0IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogNDAsMDEgY20gKDE1LDc1IGjDvHZlbHlrKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1N6w6Ftdml0ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdDw61ta2lvc3p0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzenRyw6F0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnQW5hbMOzZyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnS8Opc3rDvGzDqWsgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0Fra3VtdWzDoXRvciBrYXBhY2l0w6FzIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQWtrdW11bMOhdG9yIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfDiXDDvGxldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQnVzeiBpbnRlcmbDqXN6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIG9zenTDoWx5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdLYXBhY2l0w6FzIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWt1cyBrw6FydHnDoW5rw6ludGkga2FwYWNpdMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0vDoXJ0eWEgc3rDoW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS8OhcnR5YW9sdmFzw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS8OhcnR5YSB0w61wdXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfDnGd5ZsOpbHRhbsO6c8OtdHbDoW55b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnw5xneWbDqWxzem9mdHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfDnGd5ZsOpbCBrYXRlZ8OzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS8OzZGFsw6HDrXLDsyB0YW7DunPDrXR2w6FueW9rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbmNpYXRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdUYW7DoWNzYWTDoXNpIG1lZ8OhbGxhcG9kw6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLYXBjc29sYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0thcGNzb2xhdCBhIGZvcmdhbG1hesOzdmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnS29udMOpbmVyIG1lbmVkenNtZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1N6ZXJ6xZFkw6lzIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdBIHN6ZXJ6xZFkw6lzIGlkxZF0YXJ0YW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0Egc3plcnrFkWTDqXMgaWTFkXRhcnRhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnVmV6ZXTDqWsgbsOpbGvDvGxpIHRlbGVmb24gKERFQ1QgdGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS8O2bHRzw6lndmlzZWzFkSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0F6IGVuZ2Vkw6lseWVrIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnTMOpdHJlaG96w6FzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0VneWVkaSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIEZlbm50YXJ0dmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy1raXN6b2xnw6Fsw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0Egc3rDoW1sYSBkw6F0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdBIG1lZ3JlbmRlbMOpcyBkw6F0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdBIGdhcmFuY2lhIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnQSBraWFkw6FzIGTDoXR1bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0FzenRhbGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0Rva3VtZW50dW0gYWzDocOtcsOzIHRhbsO6c8OtdHbDoW55b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIFJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtbWFpbCB0YW7DunPDrXR2w6FueW9rIChTL01JTUUgdGFuw7pzw610dsOhbnlvayknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnTXVua2FzemVyesWRZMOpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ1bDqWcgSVAtY8OtbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0EgdMOhbW9nYXTDoXMgbWVnc3rFsW7DqXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnTGVqw6FyYXRpIGTDoXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnS8O8bHPFkSBtZXJldmxlbWV6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnVMWxemZhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnTGVuZGtlcmVrZXMgZW5lcmdpYXTDoXJvbMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1hZmFrdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2UgbWVnw6FsbGFwb2TDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfDgWx0YWzDoW5vcyBpbmZvcm3DoWNpw7NrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlrdXMga8OhcnR5w6FrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdHcmFmaWt1cyBrw6FydHlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnSGFyZHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0hhcmR2ZXJlcyBtb2RlbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnSGFyZHZlciBzw7pseWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0ZlamhhbGxnYXTDsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIHByb3Rva29sbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0w6FzLSDDqXMgaG96esOhZsOpcsOpcy1rZXplbMOpcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTGVsdMOhcmkgc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnRlcmvDtmx0c8OpZ2VrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnU3rDoW1sYSBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdCaWxsZW50ecWxemV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCBtb25pdG9yIChmb2x5YWTDqWtrcmlzdMOhbHlvcyBraWplbHrFkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCBtb25pdG9yIChmw6lueWtpYm9jc8OhdMOzIGRpw7NkYSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVmV6ZXTDqWtlcyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ1N6w6lsZXNzw6lnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnMS4gcsOpdGVnOiBGaXppa2FpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcyLiByw6l0ZWc6IGFkYXRrYXBjc29sYXRpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnMy4gcsOpdGVnOiBIw6Fsw7N6YXRpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICczLiByw6l0ZWc6IEjDoWzDs3phdGkgcsOpdGVnIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnNC4gcsOpdGVnOiBTesOhbGzDrXTDoXNpIHLDqXRlZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnNS4gcsOpdGVnOiBNdW5rYW1lbmV0csOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJzYuIHLDqXRlZzogQmVtdXRhdMOhc2kgcsOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnNy4gcsOpdGVnOiBBbGthbG1hesOhc2kgcsOpdGVnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0LDqXJsZXRpIHN6ZXJ6xZFkw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnTGljZW5jc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpY2VuYyBrdWxjcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaWNlbmMgdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5jaWTFkXN6YWsgYSBrw7Z2ZXRrZXrFkSBpZMWRcG9udHTDs2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbmNpZMWRc3phayBhIGvDtnZldGtlesWRIGlkxZFwb250aWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0zDrXRpdW0gdmFzLWZvc3pmw6F0IChMaUZlUE80KSBha2t1bXVsw6F0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0zDrXRpdW0taW9uIChMaS1pb24pIGFra3VtdWzDoXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0hpdGVsc3plcnrFkWTDqXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0ViYmVuIHRhbMOhbGhhdMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0hvc3N6w7pzw6FnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnR3nDoXJ0w7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01heGltw6FsaXMgdGVyaGVsaGV0xZFzw6lnIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW3Ds3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ01lbcOzcmlhIHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxzesOhbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9iZcOhZ3lhem90dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsbCBMZcOtcsOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9yIGZlbGJvbnTDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvciBtw6lyZXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnRWfDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ0jDoWzDs3phdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdIw6Fsw7N6YXRpIGluZm9ybcOhY2nDs2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0jDoWzDs3phdGkgaW5mb3Jtw6FjacOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnSMOhbMOzemF0aSByw6l0ZWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtrZWwta2FkbWl1bSAoTmlDZCkgYWtrdW11bMOhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlra2VsLW1ldMOhbGhpZHJpZCAoTmlNSCkgYWtrdW11bMOhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ1RpdG9rdGFydMOhc2kgbWVnw6FsbGFwb2TDoXMgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdOb3RlYm9vayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0NQVS1rIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdSQU0gbW9kdWxvayBzesOhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnR3JhZmlrdXMga8OhcnR5w6FrIHN6w6FtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnT0xFRCBtb25pdG9yIChzemVydmVzIGbDqW55a2lib2Nzw6F0w7MgZGnDs2RhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdNxbFrw7Zkw6lzaSBrw7ZsdHPDqWdlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdSZW5kZWzDqXNpIHN6w6FtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnRWd5w6liJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdLaW1lbmV0ZWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOLUvDk0QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyc8OpZ2kgbWVnw6FsbGFwb2TDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9uc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb24gdMOtcHVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0ZpemlrYWkgbWFnb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdUZWxqZXPDrXRtw6lueXN6b2xnw6FsdGF0w6FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnVsOhc8Ohcm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFjayBtw6lseXPDqWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWNrIGVneXPDqWdlayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1N6b2JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNLWvDoXJ0eWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIHRhbsO6c8OtdHbDoW55b2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICfDiXJ0w6lrZXPDrXTDqXNpIHN6ZXJ6xZFkw6lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ03FsWhvbGRhcyB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ1rDoXJ0IMOzbG9tYWtrdW11bMOhdG9yIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU29yc3rDoW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU3plcnZlciBzem9mdHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1N6b2xnw6FsdGF0w6FzaSBtZWfDoWxsYXBvZMOhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1N6ZXJ2aXpjw61ta2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnQWxqemF0IHTDrXB1c2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdTem9mdHZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0hhbmdzesOzcsOzayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTemFidsOhbnlvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnSVAtY8OtbSBpbmTDrXTDoXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdUw6Fyb2zDoXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdUw6Fyb2zDoXNpIHBhcnTDrWNpw7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdMZcOhbnl2w6FsbGFsYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ8OWc3N6ZWZvZ2xhbMOzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoaW4gQ2xpZW50J30gPSAnVGhpbiBDbGllbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ1N6w6FsYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnR3JhZmlrdXMga8OhcnR5YSBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1RlbGplcyBSQU0gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnw4lyaW50xZFrw6lwZXJuecWRcyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9yb255JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0IgaHViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgaGVhZHNldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/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+eydSdW4gU2VhcmNoJ30gPSAnTXVsYWkgUGVuY2FyaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0NhcmkgZGkgdmVyc2kgc2ViZWx1bW55YSBqdWdhID8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyB1bnR1ayBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnVGluZ2thdCBLZWRhbGFtYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdNZW1wZXJiZXNhci9NZW1wZXJrZWNpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdUaW5na2F0IHRhdXRhbiBtYWtzaW11bSB0ZXJjYXBhaSB1bnR1ayBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gS29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXNpIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnU3RhdHVzIHBlbnllYmFyYWFuIHNhYXQgaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdLb25kaXNpIGluc2lkZW4gc2FhdCBpbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnVGVyYWtoaXIgZGl1YmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1RlcmFraGlyIGRpcnViYWggb2xlaCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0l0ZW0gS29uZmlndXJhc2kgQW5kYSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdQZW5jYXJpYW4gSXRlbSBLb25maWd1cmFzaSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0tlbGFzLWtlbGFzIGJlcmlrdXQgYWthbiBkaWltcG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1BlcmFuLXBlcmFuIGJlcmlrdXQgaW5pIGFrYW4gZGlpbXBvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdQZXJoYXRpa2FuIGJhaHdhIGJpZGFuZyBkaW5hbWlzIGRhbiBrZWxhcyBHZW5lcmFsQ2F0YWxvZyB5YW5nIHNlc3VhaSBqdWdhIGFrYW4gZGlidWF0IGRhbiB0aWRhayBhZGEgcGVuZ2hhcHVzYW4gb3RvbWF0aXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQXBha2FoIEFuZGEgaW5naW4gbWVsYW5qdXRrYW4/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0J1dHVoIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmlzaSB0aWRhayBhZGEgaGFzaCBZQU1MIHlhbmcgdmFsaWQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnR2FtYmFyYW4gdW11bTogSXRlbSBLb25maWd1cmFzaSBJVFNNJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGFkYSBDb25maWdJdGVtSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnQW5kYSBtZW1lcmx1a2FuIHNldGlkYWtueWEgc2F0dSBJdGVtIEtvbmZpZ3VyYXNpIHlhbmcgZGlwaWxpaCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICdBbmRhIHRpZGFrIG1lbWlsaWtpIGFrc2VzIHR1bGlzIGtlIGl0ZW0ga29uZmlndXJhc2kgaW5pOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnVGlkYWsgYWRhIGRlZmluaXNpIHlhbmcgZGlkZWZpbmlzaWthbiB1bnR1ayBrZWxhcyAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0l0ZW0ga29uZmlndXJhc2kgIiVzIiB0aWRhayBkaXRlbXVrYW4gZGFsYW0gZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnVGlkYWsgZGFwYXQgbWVuZ2hhcHVzIElEIGtvbmZpZ3VyYXNpICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnVGlkYWsgZGl0ZW11a2FuIHZlcnNpIHVudHVrIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYWRhIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgYXRhdSBDbGFzc0lEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYWRhIGFrc2VzIHlhbmcgZGliZXJpa2FuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdUaWRhayBkYXBhdCBtZW5hbXBpbGthbiByaXdheWF0LCB0aWRhayBhZGEgQ29uZmlnSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ1RpZGFrIGRhcGF0IG1lbmFtcGlsa2FuIHJpd2F5YXQsIHRpZGFrIGFkYSBoYWsgYWtzZXMgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdJdGVtIEtvbmZpZ3VyYXNpIEJhcnUgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnVmVyc2kgYmFydSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdHVzIHBlbmVyYXBhbiBkaXBlcmJhcnVpIChiYXJ1ID0gJXMsIGxhbWEgPSAlcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdHVzIGluc2lkZW4gZGlwZXJiYXJ1aSAoYmFydSA9ICVzLCBsYW1hID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIGRpaGFwdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdUYXV0YW4ga2UgJXMgKHRpcGUgPSAlcykgZGl0YW1iYWhrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ1RhdXRhbiBrZSAlcyAodGlwZSA9ICVzKSBkaWhhcHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbmlzaSBDb25maWdJdGVtIGRpcGVyYmFydWkgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hbWEgZGlwZXJiYXJ1aSAoYmFydSA9ICVzLCBsYW1hID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dCAlcyBkaXBlcmJhcnVpIGRhcmkgIiVzIiBtZW5qYWRpICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2kgJXMgZGloYXB1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdUaWRhayBhZGEgQ29uZmlnSXRlbUlEIGF0YXUgVmVyc2lvbklEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdUaWRhayBkYXBhdCBtZW5hbXBpbGthbiBpdGVtIGtvbmZpZ3VyYXNpLCB0aWRhayBhZGEgaGFrIGFrc2VzIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCUgdGlkYWsgZGl0ZW11a2FuIGRhbGFtIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnSXRlbUtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdkaWNldGFrIG9sZWglcyBwYWRhJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5zaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ0NsYXNzSUQgdGlkYWsgdmFsaWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnVGlkYWsgYWRhIENsYXNzSUQgeWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnVGlkYWsgYWRhIGhhayBha3NlcyB1bnR1ayBrZWxhcyBpbmkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdUaWRhayBhZGEgaGFzaWwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnS29uZmlndXJhc2kgcGVuY2FyaWFuIG5pbGFpJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdUaWRhayBkYXBhdCBtZW5hbXBpbGthbiBpdGVtLCB0aWRhayBhZGEgaGFrIGFrc2VzIHVudHVrIENvbmZpZ0l0ZW0geWFuZyBkaWJlcmlrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gdGlkYWsgZGl0ZW11a2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdUaWRhayBhZGEgdmVyc2kgeWFuZyBkaXRlbXVrYW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmFzaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ3BlcmluZ2F0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbnNpZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGF0dXMgcGVueWViYXJhbiBpdGVtIGtvbmZpZ3VyYXNpIGluaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXR1cyBpbnNpZGVuIGl0ZW0ga29uZmlndXJhc2kgaW5pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnVGlkYWsgYWRhIGl6aW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyIHRpZGFrIHZhbGlkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnUGFyYW1ldGVyIHBlbmNhcmlhbiB0aWRhayB2YWxpZCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdJdGVtIGtvbmZpZ3VyYXNpIHlhbmcgZGl0YW1waWxrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwZSBzdGF0dXMgcGVueWViYXJhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBlIFN0YXR1cyBpbnNpZGVuIHNhYXQgaW5pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0RpYW50YXJhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdQZW1iYXRhc2FuIGtlbGFzIHVudHVrIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1BpbGloIHNhdHUga2VsYXMgYXRhdSBsZWJpaCB1bnR1ayBtZW1iYXRhc2kgaXRlbSBrb25maWd1cmFzaSB5YW5nIGRhcGF0IGRpcGlsaWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1BlbWJhdGFzYW4ga2VsYXMgdW50dWsgaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1BpbGloIHNhdHUga2VsYXMgYXRhdSBsZWJpaCB1bnR1ayBtZW1iYXRhc2kgaXRlbSBrb25maWd1cmFzaSB5YW5nIGRhcGF0IGRpcGlsaWgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW5hbWlzIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGlzIChWZXJzaSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnSmVuaXMgUmVmZXJlbnNpIFRhdXRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdBcGFrYWggdGF1dGFuIGluaSBiZXJsYWt1IHVudHVrIENvbmZpZ0l0ZW0gYXRhdSB2ZXJzaSBzdGF0aXMgZGFyaSBvYmplayByZWZlcmVuc2kuIFBlcmhpdHVuZ2FuIFN0YXR1cyBJbnNpZGVuIHNhYXQgaW5pIGhhbnlhIGRpbGFrdWthbiBwYWRhIHRhdXRhbiBkaW5hbWlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1BpbGloIGF0cmlidXQgeWFuZyBha2FuIGRpY2FyaSBiZXJkYXNhcmthbiBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdTdHJ1a3R1ciBkYXNhciB0aWRhayB2YWxpZC4gQmVyaWthbiBoYXNoIGRlbmdhbiBkYXRhIGRhbGFtIGZvcm1hdCBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ01lbXVsYWkgc3RyaW5nIFlBTUwgZGVuZ2FuIFwnLS0tXCcgZGlwZXJsdWthbi4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnVGlkYWsgZGFwYXQgbWVtYmVyc2loa2FuIHRhYmVsIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ1RpZGFrIGFkYSBiaWRhbmcgZGluYW1pcyB5YW5nIHJlbGV2YW4geWFuZyBkaXRlbXVrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdUaWRhayBkYXBhdCBtZW55aXNpcGthbiBrZSBkYWxhbSB0YWJlbCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ01lbnlpc2lwa2FuIDAgYmFyaXMga2UgZGFsYW0gdGFiZWwgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ0p1bWxhaCBtYWtzaW11bSBkYXJpIDEgZWxlbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1N0cmluZyBWZXJzaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdLZXNhbGFoYW4gbWVueWlua3JvbmthbiBkZWZpbmlzaS4gU2lsYWthbiBwZXJpa3NhIGxvZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdBbmRhIG1lbWlsaWtpIGRlZmluaXNpIElUU01Db25maWdJdGVtIHlhbmcgdGlkYWsgdGVyc2lua3JvbmlzYXNpLiBUZXJhcGthbiBwZXJ1YmFoYW4gYmlkYW5nIGRpbmFtaXMgSVRTTUNvbmZpZ0l0ZW0gQW5kYS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1RlbGFoIGthZGFsdWFyc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdQZW1lbGloYXJhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnVGVsYWggZGlyZW5jYW5ha2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1BlcmJhaWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaXVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1VsYXNhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVWppL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdJa2h0aXNhciBkYW4gS29uZmlybWFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdNZW5naW1wb3Iga2VsYXMvcGVyYW4gZGFuIGJpZGFuZyB0ZXJrYWl0bnlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnVGVyamFkaSBrZXNhbGFoYW4gc2FhdCBtZW5naW1wb3Iga2VsYXMuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBUZXJzZW1idW55aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gRGl0YW1waWxrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBrb25kaXNpIHBlbmNhcmlhbiB5YW5nIGRpcGVybHVhcyBkYWxhbSBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuLiBEZW5nYW4gZml0dXIgaW5pLCBBbmRhIGRhcGF0IG1lbmNhcmksIG1pc2FsbnlhIG5hbWEgaXRlbSBrb25maWd1cmFzaSBkZW5nYW4ga29uZGlzaSBzZXBlcnRpIGluaSwgc2VwZXJ0aSAiKCprZXkxKiYmKmtleTIqKSIgYXRhdSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBrb25kaXNpIHBlbmNhcmlhbiB5YW5nIGRpcGVybHVhcyBkYWxhbSBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBwZWxhbmdnYW4uIERlbmdhbiBmaXR1ciBpbmksIEFuZGEgZGFwYXQgbWVuY2FyaSwgbWlzYWxueWEgbmFtYSBpdGVtIGtvbmZpZ3VyYXNpIGRlbmdhbiBrb25kaXNpIHNlcGVydGkgaW5pIHNlcGVydGkgIigqa2V5MSomJiprZXkyKikiIGF0YXUgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdDSSB5YW5nIGRpdHVnYXNrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHlhbmcgZGl0dWdhc2thbiBrZSBwZXJ1c2FoYWFuIHBlbGFuZ2dhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHlhbmcgZGliZXJpa2FuIGtlcGFkYSBwZW5nZ3VuYSBwZWxhbmdnYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1BlbmdhdHVyYW4gQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUGVyaWtzYSBoYW55YSBuYW1hIHVuaWsgc2FqYSBkaSBkYWxhbSBrZWxhcyhcJ2tlbGFzXCcpIGl0ZW1rb25maWd1cmFzaSB5YW5nIHNhbWEgYXRhdSBzZWNhcmEgZ2xvYmFsIChcJ2dsb2JhbCksIHlhbmcgYmVyYXJ0aSBzZXRpYXAgSXRlbUtvbmZpZ3VyYXNpIHlhbmcgYWRhIGFrYW4gZGlwZXJoaXR1bmdrYW4ga2V0aWthIG1lbmNhcmkgZHVwbGlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1BpbGloIG1vZHVsIHVudHVrIG1lbmVyYXBrYW4gc2tlbWEgcGVuYW1hYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdQaWxpaCBtb2R1bCB1bnR1ayBtZW5lcmFwa2FuIHNrZW1hIGFuZ2thLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdQaWxpaCBtb2R1bCB1bnR1ayBtZW5lcmFwa2FuIHNrZW1hIHN0cmluZyB2ZXJzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdQaWxpaCBhdHJpYnV0IHVudHVrIG1lbWljdSBwZW1idWF0YW4gdmVyc2kgYmFydS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnUGlsaWgga2F0ZWdvcmkgeWFuZyBha2FuIGRpdGV0YXBrYW4ga2Uga2VsYXMgaXRlbSBrb25maWd1cmFzaSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdGVyIGl0ZW0ga29uZmlndXJhc2kga29sb20gdW50dWsgSWtodGlzYXIgSXRlbSBLb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJ0tvbG9tIHlhbmcgZGFwYXQgZGlmaWx0ZXIgZGFsYW0gaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSBwYWRhIGFudGFybXVrYSBhZ2VuLiBDYXRhdGFuOiBIYW55YSBhdHJpYnV0IEl0ZW0gS29uZmlndXJhc2kgZGFuIEJpZGFuZyBEaW5hbWlzIChEeW5hbWljRmllbGRfTmFtZVgpIHlhbmcgZGlwZXJib2xlaGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnVGFtYmFoIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdCBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgbWVuZ2FrdGlma2FuIGxvZ2dpbmcga2Ugcml3YXlhdCBwYWRhIGFudGFybXVrYSBhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgbWVtcGVyYmFydWkgaXRlbSBrb25maWd1cmFzaSBrZSBkZWZpbmlzaSBzYWF0IGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdSaXdheWF0IGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NldGFrIGl0ZW0ga29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnWm9vbSBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1RhbXBpbGFuIFBvaG9uIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyc2kgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBkYXJpIGtlbGFzLWtlbGFzIGJlcmlrdXQgaW5pIHRpZGFrIGFrYW4gZGlzaW1wYW4gZGkgc2VydmVyIEVsYXN0aWNzZWFyY2guIFVudHVrIG1lbmVyYXBrYW4gaW5pIHBhZGEgQ0kgeWFuZyBzdWRhaCBhZGEsIG1pZ3Jhc2kgQ0kgaGFydXMgZGlqYWxhbmthbiBtZWxhbHVpIGtvbnNvbCwgc2V0ZWxhaCBtZW5ndWJhaCBvcHNpIGluaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgZGVuZ2FuIHN0YXR1cyBwZW55ZWJhcmFuIGJlcmlrdXQgdGlkYWsgYWthbiBkaXNpbXBhbiBkaSBzZXJ2ZXIgRWxhc3RpY3NlYXJjaC4gVW50dWsgbWVuZXJhcGthbiBpbmkgcGFkYSBDSSB5YW5nIHN1ZGFoIGFkYSwgbWlncmFzaSBDSSBoYXJ1cyBkaWphbGFua2FuIG1lbGFsdWkga29uc29sLCBzZXRlbGFoIG1lbmd1YmFoIG9wc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdCYXRhcyBpdGVtIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFzaSBCYXRhcyBpdGVtIHBlciBoYWxhbWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmFzaXMgRGF0YSBNYW5hamVtZW4gS29uZmlndXJhc2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNb2R1bCBtYXNzYWwgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm91dGVyIHBlbmNhcmlhbiBiYWNrZW5kIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgYWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdCdWF0IGRhbiBhdHVyIGRlZmluaXNpIC0gZGVmaW5pc2kgdW50dWsgaXRlbSBrb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ01lbWJ1YXQgVGlrZXQgdW50dWsgQ29uZmlnSXRlbXMgcGFkYSB0aXRpayB3YWt0dSB0ZXJ0ZW50dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnUGVsYW5nZ2FuIGRhcGF0IG1lbGloYXQgdmVyc2kgQ0kgaGlzdG9yaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ1BlbGFuZ2dhbiBkYXBhdCBiZXJhbGloIHNlY2FyYSBtYW51YWwgZGkgYW50YXJhIHZlcnNpIENJIHRlcmRhaHVsdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYXRhIGRlZmF1bHQgeWFuZyBha2FuIGRpZ3VuYWthbiBwYWRhIGF0cmlidXQgdW50dWsgbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kuIENvbnRvaDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0ID0gdGFodW47IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQgPSBUZXJha2hpcjsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQgPSAyOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0YSBkZWZhdWx0IHlhbmcgYWthbiBkaWd1bmFrYW4gcGFkYSBhdHJpYnV0IHVudHVrIGxheWFyIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpLiBDb250b2g6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXIgPSAyMDEwOyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoID0gMTA7IElUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5ID0gNDsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXIgPSAyMDEwOyBJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGggPSAxMTsgSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheSA9IDM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIFRpbmRha2FuIGFkYWxhaCB0b21ib2wgcGVuZ2F0dXJhbiB0ZXJzZWRpYSBkaSBvYmplayB3aWRnZXQgdGVya2FpdCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBIYXJhcCBkaWNhdGF0IGJhaHdhIFRpbmRha2FuIGluaSBoYXJ1cyB0ZWxhaCBtZW5kYWZ0YXJrYW4gYmVyaWt1dCBKUyBkYW4gQ1NTIGZpbGU6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gc2tlbWEgVGVtcGxhdGU6OlRvb2xraXQgdW50dWsgc3RyaW5nIHZlcnNpLiBIYW55YSBkaWd1bmFrYW4gamlrYSBNb2R1bCBTdHJpbmcgVmVyc2kgZGlhdHVyIGtlIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ1RlbnR1a2FuIHNlcmFuZ2thaWFuIGtvbmRpc2kgZGkgbWFuYSBwZWxhbmdnYW4gZGlpemlua2FuIHVudHVrIG1lbGloYXQgaXRlbSBrb25maWd1cmFzaS4gS29uZGlzaSBkYXBhdCBzZWNhcmEgb3BzaW9uYWwgZGliYXRhc2kgdW50dWsgZ3J1cCBwZWxhbmdnYW4gdGVydGVudHUuIE5hbWEgYWRhbGFoIHNhdHUtc2F0dW55YSBhdHJpYnV0IHdhamliLiBKaWthIHRpZGFrIGFkYSBwaWxpaGFuIGxhaW4geWFuZyBkaWJlcmlrYW4sIHNlbXVhIGl0ZW0ga29uZmlndXJhc2kgYWthbiB0ZXJsaWhhdCBkaSBiYXdhaCBrYXRlZ29yaSB0ZXJzZWJ1dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGl6aW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmdoYXB1cyBpdGVtIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJtdWthIEdlbmVyaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBpemluIHlhbmcgZGkgYnV0dWhrYW4gdW50dWsgbWVuZGFwYXRrYW4gaXRlbSBrb25maWd1cmFzaSBJVFNNIGRlbmdhbiBtZW5nZ3VuYWthbiBhbnRhcm11a2EgdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGl6aW4geWFuZyBkaSBidXR1aGthbiB1bnR1ayBtZW5jYXJpIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkZW5nYW4gbWVuZ2d1bmFrYW4gYW50YXJtdWthIHVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBpemluIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5nYXR1ciBpdGVtIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJtdWthIEdlbmVyaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIG1vZHVsIGdhbWJhcmFuIHVudHVrIG1lbnVuanVrYW4gdGFtcGlsYW4ga2VjaWwgZGFyaSBzZWJ1YWggZGFmdGFyIGl0ZW0ga29uZmlndXJhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnTWVuZW50dWthbiBhcGFrYWggbGFiZWwgamVuaXMgdGF1dGFuIGhhcnVzIGRpdGFtcGlsa2FuIGRpIGtvbmVrc2kgbm9kZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaXNpa2FuIGVrc3ByZXNpIHJlZ3VsYXIgc2VjYXJhIGluZGl2aWR1YWwgdW50dWsgc2V0aWFwIGtlbGFzIEl0ZW1Lb25maWd1cmFzaSB1bnR1ayBtZW1lcmlrc2EgbmFtYSBJdGVtS29uZmlndXJhc2kgdW50dWsgbWVudW5qdWthbiBwZXNhbiBlcnJvciB5YW5nIHNlc3VhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGtvbG9tIENJIHlhbmcgdGVyc2VkaWEgZGFsYW0gaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSB0ZXJnYW50dW5nIHBhZGEga2VsYXMgQ0kuIFNldGlhcCBlbnRyaSBoYXJ1cyB0ZXJkaXJpIGRhcmkgbmFtYSBrZWxhcyBkYW4gbGFyaWsga29sb20geWFuZyB0ZXJzZWRpYSB1bnR1ayBrZWxhcyB5YW5nIGJlcnNhbmdrdXRhbi4gRW50cmkgYmlkYW5nIGRpbmFtaXMgaGFydXMgc2VzdWFpIGRlbmdhbiBza2VtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gYXRyaWJ1dCBpdGVtIGtvbmZpZ3VyYXNpIGRlZmF1bHQgdW50dWsgcGVuZ3VydXRhbiBpdGVtIGtvbmZpZ3VyYXNpIGRhcmkgaGFzaWwgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGF0cmlidXQgaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IHVudHVrIHBlbmd1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkYXJpIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGF0cmlidXQgaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IHVudHVrIHBlbmd1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkYXJpIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIG9wZXJhc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVuZW50dWthbiB1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IGRhbGFtIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIGFnZW4uIEF0YXM6IHRlcnR1YSBkaSBhdGFzLiBUdXJ1bjogdGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTWVuZW50dWthbiB1cnV0YW4gaXRlbSBrb25maWd1cmFzaSBkZWZhdWx0IGRhbGFtIGhhc2lsIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4gQXRhczogdGVydHVhIGRpIGF0YXMuIFR1cnVuOiB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gdXJ1dGFuIGl0ZW0ga29uZmlndXJhc2kgZGVmYXVsdCBkYWxhbSBoYXNpbCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSBkYXJpIG9wZXJhc2kgaW5pLiBBdGFzOiB0ZXJ0dWEgZGkgYXRhcy4gVHVydW46IHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4ga29sb20gQ0kgeWFuZyBkaXRhbXBpbGthbiBzZWNhcmEgZGVmYXVsdCBkYWxhbSBpa2h0aXNhciBpdGVtIGtvbmZpZ3VyYXNpIHRlcmdhbnR1bmcgcGFkYSBrZWxhcyBDSS4gU2V0aWFwIGVudHJpIGhhcnVzIHRlcmRpcmkgZGFyaSBuYW1hIGtlbGFzIGRhbiBsYXJpayBiaWRhbmcgeWFuZyB0ZXJzZWRpYSB1bnR1ayBrZWxhcyB5YW5nIHNlc3VhaS4gRW50cmkgYmlkYW5nIGRpbmFtaXMgaGFydXMgc2VzdWFpIGRlbmdhbiBza2VtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdNZW5lbnR1a2FuIGtlZGFsYW1hbiByZWxhc2kgZGVmYXVsdCB5YW5nIGFrYW4gZGl0YW1waWxrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYXRyaWJ1dCBwZW5jYXJpYW4gaXRlbSBrb25maWd1cmFzaSB5YW5nIGRpdGFtcGlsa2FuIHNlY2FyYSBkZWZhdWx0IHVudHVrIGxheWFyIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnTWVuZW50dWthbiBhdHJpYnV0IHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHlhbmcgZGl0YW1waWxrYW4gc2VjYXJhIGRlZmF1bHQgdW50dWsgbGF5YXIgcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kuIENvbnRvaDogIktleSIgaGFydXMgbWVtaWxpa2kgbmFtYSBCaWRhbmcgRGluYW1pcyBkYWxhbSBoYWwgaW5pIFwnWFwnLCAiQ29udGVudCIgaGFydXMgbWVtaWxpa2kgbmlsYWkgQmlkYW5nIERpbmFtaXMgdGVyZ2FudHVuZyBwYWRhIGplbmlzIEJpZGFuZyBEaW5hbWlzLCBUZWtzOiBcJ3Rla3NcJywgRHJvcGRvd246IFwnMVwnLCBUYW5nZ2FsL1dha3R1OiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyID0gMTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoID0gMDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXkgPSAyNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXIgPSAwMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZSA9IDAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kID0gMDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXIgPSAyMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aCA9IDAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXkgPSAyNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91ciA9IDIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGUgPSA1OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kID0gNTk7XCcgZGFuIGF0YXUgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQgPSBtaW5nZ3U7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0ID0gU2ViZWx1bTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWUgPSA3XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4gc3Vib2JqZWsgZGVmYXVsdCBkYXJpIGtlbGFzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGtvbG9tIENJIHlhbmcgdGVyc2VkaWEgZGFsYW0gaWtodGlzYXIgaXRlbSBrb25maWd1cmFzaSB0ZXJnYW50dW5nIHBhZGEga2VsYXMgQ0kuIFNldGlhcCBlbnRyaSBoYXJ1cyB0ZXJkaXJpIGRhcmkgbmFtYSBrZWxhcyBkYW4gbGFyaWsga29sb20geWFuZyB0ZXJzZWRpYSB1bnR1ayBrZWxhcyB5YW5nIGJlcnNhbmdrdXRhbi4gRW50cmkgYmlkYW5nIGRpbmFtaXMgaGFydXMgc2VzdWFpIGRlbmdhbiBza2VtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiB0aW5nZ2kgdW50dWsga29tcG9uZW4gZWRpdG9yIHRla3Mga2F5YSB1bnR1ayBsYXlhciBpbmkuIE1hc3Vra2FuIG5vbW9yIChwaWtzZWwpIGF0YXUgbmlsYWkgcGVyc2VuIChyZWxhdGlmKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2lrYW4ganVtbGFoIGJhcmlzIHVudHVrIHBlbmd1YmFoIGRlZmluaXNpQ0kgcGFkYSBhbnRhcm11a2EgQWRtaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnTWVuZW50dWthbiB1cnV0YW4gc3RhdHVzIGluc2lkZW4gZGFyaSB0aW5nZ2kgKG1pcy4ga3J1c2lhbCkga2UgcmVuZGFoIChtaXMuIGZ1bmdzaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIHN0YXR1cyBwZW55ZWJhcmFuIHlhbmcgcmVsZXZhbiBkaSBtYW5hIHRpa2V0IHlhbmcgZGl0YXV0a2FuIGRhcGF0IG1lbWVuZ2FydWhpIHN0YXR1cyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBiYXRhcyBwZW5jYXJpYW4gdW50dWsgbGF5YXIgQWdlbnRJVFNNQ29uZmlnSXRlbSAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzaWthbiBiYXRhcyBwZW5jYXJpYW4gdW50dWsgTGF5YXIgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdNZW5lbnR1a2FuIGJhdGFzIHBlbmNhcmlhbiB1bnR1ayBsYXlhciBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYmF0YXMgcGVuY2FyaWFuIHVudHVrIGxheWFyIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4ga29sb20gQ0kgeWFuZyBkaXRhbXBpbGthbiBkYWxhbSB0YW1waWxhbiBrb21wbGVrcyB0YWJlbCB0YXV0YW4gdW50dWsgc2VtdWEga2VsYXMgQ0kuIEppa2EgdGlkYWsgYWRhIGVudHJpLCBtYWthIGtvbG9tIGRlZmF1bHQgYWthbiBkaXRhbXBpbGthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGtvbG9tIHlhbmcgZGl0YW1waWxrYW4gZGFyaSBDSSBkaSBsaW5rIHRhYmVsIHRhbXBpbGFuIHlhbmcga29tcGxla3MsIHRlcmdhbnR1bmcgcGFkYSBrZWxhcyBDSS4gU2V0aWFwIGVudHJpIGhhcnVzIGRpYXdhbGkgZGVuZ2FuIG5hbWEga2VsYXMgZGFuIHRpdGlrIGR1YSBnYW5kYSAoaS5lLiBDb21wdXRlcjo6KS4gQWRhIGJlYmVyYXBhIENJLUF0cmlidXQgeWFuZyB1bXVtIHVudHVrIHNlbXVhIENJIChDb250b2ggdW50dWsgS29tcHV0ZXIga2VsYXM6IEtvbXB1dGVyIDo6IE5hbWEsIEtvbXB1dGVyIDo6IEN1ckRlcGxTdGF0ZSwgS29tcHV0ZXIgOjogQ3JlYXRlVGltZSkuIFVudHVrIG1lbnVuanVra2FuIGluZGl2aWR1IENJLUF0cmlidXQgc2ViYWdhaW1hbmEgZGlkZWZpbmlzaWthbiBkYWxhbSBDSS1EZWZpbml0aW9uLCBza2VtYSBiZXJpa3V0IGhhcnVzIGRpZ3VuYWthbiAobWlzYWxueWEgdW50dWsgS29tcHV0ZXIga2VsYXMpOiAgQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEppa2EgdGlkYWsgYWRhIGVudHJpIHVudHVrIGtlbGFzIENJLCBtYWthIGtvbG9tIHN0YW5kYXIgZGl0YW1waWxrYW4gc2ViYWdhaW1hbmEgZGlkZWZpbmlzaWthbiBkYWxhbSBwZW5nYXR1cmFuIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbSMjI1Nob3dDb2x1bW5zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGl0ZW0gbWFuYSB5YW5nIHRlcnNlZGlhIHVudHVrIFwnVGluZGFrYW5cJyBkaSB0aW5na2F0IGtldGlnYSBkYXJpIHN0cnVrdHVyIEFDTCBJdGVtIEtvbmZpZ3VyYXNpIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVuZGVmaW5pc2lrYW4gaXRlbSBtYW5hIHlhbmcgdGVyc2VkaWEgZGkgdGluZ2thdCBwZXJ0YW1hIHN0cnVrdHVyIEFDTCBJdGVtIEtvbmZpZ3VyYXNpIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGl0ZW0gbWFuYSB5YW5nIHRlcnNlZGlhIGRpIHRpbmdrYXQga2VkdWEgZGFyaSBzdHJ1a3R1ciBBQ0wgSXRlbSBLb25maWd1cmFzaSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdNZW5kZWZpbmlzaWthbiBqZW5pcyB0YXV0YW4gbWFuYSAoZGluYW1haSBkYXJpIHBlcnNwZWt0aWYgdGlrZXQpIHlhbmcgZGFwYXQgbWVtZW5nYXJ1aGkgc3RhdHVzIENJIHlhbmcgZGl0YXV0a2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ01lbmRlZmluaXNpa2FuIGplbmlzIHRpa2V0IG1hbmEgeWFuZyBkYXBhdCBtZW1lbmdhcnVoaSBzdGF0dXMgQ0kgeWFuZyBkaXRhdXRrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnUGVtYmFydWFuIERlZmluaXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdNZW5naGFwdXMgSXRlbSBLb25maWd1cmFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ1dhcm5hIFN0YXR1cyBQZW55ZWJhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWthdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIHBlcmlzdGl3YSBiaWRhbmcgZGluYW1pcyB5YW5nIG1lbmFuZGFpIGRlZmluaXNpIGl0ZW0ga29uZmlndXJhc2kgc2ViYWdhaSB0aWRhayBzaW5rcm9uLCBqaWthIG1lbmdhbmR1bmcgcGVydWJhaGFuIGJpZGFuZyBkaW5hbWlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmlkYW5nIGRpbmFtaXMgeWFuZyBkaXRhbXBpbGthbiBkaSBsYXlhciBiaWRhbmcgSVRTTSB0YW1iYWhhbiBwYWRhIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGxheWFyIGlraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCaWRhbmcgZGluYW1pcyB5YW5nIGRpdGFtcGlsa2FuIGRpIGxheWFyIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ01lbXVuZ2tpbmthbiBmaXR1ciBpdGVtIGtvbmZpZ3VyYXNpIHRpbmRha2FuIG1hc3NhbCB1bnR1ayBhZ2VuIGZyb250ZW5kIHVudHVrIGJla2VyamEgcGFkYSBsZWJpaCBkYXJpIHNhdHUgaXRlbSBrb25maWd1cmFzaSBwYWRhIHN1YXR1IHdha3R1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnTWVtdW5na2lua2FuIGZpdHVyIHRpbmRha2FuIG1hc3NhbCBpdGVtIGtvbmZpZ3VyYXNpIGhhbnlhIHVudHVrIGtlbG9tcG9rIHRlcmRhZnRhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnTWVuZ2FrdGlma2FuL21lbm9uYWt0aWZrYW4gZnVuZ3Npb25hbGl0YXMgdW50dWsgbWVtZXJpa3NhIGl0ZW0ga29uZmlndXJhc2kgSVRTTSB1bnR1ayBuYW1hIHlhbmcgdW5pay4gU2ViZWx1bSBtZW5nYWt0aWZrYW4gb3BzaSBpbmksIEFuZGEgaGFydXMgbWVtZXJpa3NhIHNpc3RlbSBBbmRhIHVudHVrIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBzdWRhaCBhZGEgZGVuZ2FuIG5hbWEgZ2FuZGEuIEFuZGEgZGFwYXQgbWVsYWt1a2FuIGluaSBkZW5nYW4gcGVyaW50YWgga29uc29sIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWwgcGVyaXN0aXdhIHVudHVrIG1lbmdhdHVyIHN0YXR1cyBrb25maWd1cmFzaSBwYWRhIHRhdXRhbiBrb25maWd1cmFzaSB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQmlkYW5nIGluZGVrcyBpdGVtIGtvbmZpZ3VyYXNpLCBkaWd1bmFrYW4gdW50dWsgcGVuY2FyaWFuIHRla3MgbGVuZ2thcC4gQmlkYW5nIGp1Z2EgZGlzaW1wYW4sIHRldGFwaSB0aWRhayB3YWppYiB1bnR1ayBmdW5nc2lvbmFsaXRhcyBrZXNlbHVydWhhbi4gUGVueWVydGFhbiBsYW1waXJhbiBkYXBhdCBkaW5vbmFrdGlma2FuIGRlbmdhbiBtZW5nYXR1ciBlbnRyaSBrZSAwIGF0YXUgbWVuZ2hhcHVzbnlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQmlkYW5nIHlhbmcgZGlzaW1wYW4gZGFsYW0gaW5kZWtzIGl0ZW0ga29uZmlndXJhc2kgeWFuZyBkaWd1bmFrYW4gdW50dWsgaGFsLWhhbCBsYWluIHNlbGFpbiBwZW5jYXJpYW4gdGVrcyBsZW5na2FwLiBVbnR1ayBmdW5nc2lvbmFsaXRhcyB5YW5nIGxlbmdrYXAsIHNlbXVhIGJpZGFuZyB3YWppYiBkaWlzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdVbnR1ayBzZXRpYXAgbGF5YW5hbiB3ZWIgKGtleSksIHNlYnVhaCBsYXJpayBrZWxhcyAodmFsdWUpIGRhcGF0IGRpZGVmaW5pc2lrYW4gZGkgbWFuYSBpbXBvciBkaWJhdGFzaS4gVW50dWsgc2VtdWEga2VsYXMgeWFuZyBkaXBpbGloLCBhdGF1IHNlbXVhIGtlbGFzIHlhbmcgYWRhLCBhdHJpYnV0IHBlbmdlbmFsIGhhcnVzIGRpcGlsaWggZGFsYW0ga29uZmlndXJhc2kgcGVtYW5nZ2lsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYXNpIG1vZHVsIEdlbmVyaWNJbnRlcmZhY2UgdW50dWsgbGFwaXNhbiBwZW1hbmdnaWwgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhc2kgbW9kdWwgR2VuZXJpY0ludGVyZmFjZSB1bnR1ayBsYXBpc2FuIHBlbWFuZ2dpbCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhc2kgbW9kdWwgR2VuZXJpY0ludGVyZmFjZSB1bnR1ayBsYXBpc2FuIHBlbWFuZ2dpbCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0l0ZW0gS29uZmlndXJhc2kgSVRTTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdTdGF0dXNJbnNpZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZXJtYXN1ayBzdGF0dXMgcGVuZXJhcGFuIGRhbGFtIHBlbmNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIHBhZGEgYW50YXJtdWthIHBlbGFuZ2dhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVybWFzdWsgc3RhdHVzIGluc2lkZW4gZGFsYW0gcGVuY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgcGFkYSBhbnRhcm11a2EgcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdKdW1sYWggbWFrc2ltdW0gaXRlbSBrb25maWd1cmFzaSB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGFsYW0gaGFzaWwgb3BlcmFzaSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgdW50dWsgbWVtZXJpa3NhIGtlbG9tcG9rIHlhbmcgYmVydGFuZ2d1bmcgamF3YWIgdW50dWsga2VsYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgdW50dWsgbWVtZXJpa3NhIGtlbG9tcG9rIHlhbmcgYmVydGFuZ2d1bmcgamF3YWIgdW50dWsgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB1bnR1ayBtZW5naGFzaWxrYW4gc3RhdGlzdGlrIGNvbmZpZyBiYXJhbmcgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdNb2R1bCBOYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNb2R1bCBBbmdrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggaXRlbSBrb25maWd1cmFzaSB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGkgc2V0aWFwIGhhbGFtYW4gaGFzaWwgcGVuY2FyaWFuIGRpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdKdW1sYWggaXRlbSBrb25maWd1cmFzaSB5YW5nIGFrYW4gZGl0YW1waWxrYW4gZGkgc2V0aWFwIGhhbGFtYW4gaGFzaWwgcGVuY2FyaWFuIGRpIGFudGFybXVrYSBwZWxhbmdnYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrIHlhbmcgYWthbiBkaWNhcmksIGJlcmFwYSBiYW55YWsgZW50cmkgZGFuIGF0cmlidXQgbWFuYSB5YW5nIGFrYW4gZGl0YW1waWxrYW4uIEF0cmlidXQgQ29uZmlnSXRlbSBoYXJ1cyBzZWNhcmEgZWtzcGxpc2l0IGRpc2ltcGFuIG1lbGFsdWkgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnR2FtYmFyYW4gdW11bS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBrYXRlZ29yaSB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRpIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGZpbHRlciBrb2xvbSBwYWRhIGlraHRpc2FyIGl0ZW0ga29uZmlndXJhc2kga2VjaWwuIEhhcmFwIGRpcGVyaGF0aWthbjogbWVuZ2F0dXIgXCdBY3RpdmVcJyBrZSAwIGhhbnlhIGFrYW4gbWVuY2VnYWggYWdlbiBtZW5nZWRpdCBwZW5nYXR1cmFuIGdydXAgaW5pIGRhbGFtIHByZWZlcmVuc2kgcHJpYmFkaSBtZXJla2EsIHRldGFwaSBtYXNpaCBtZW11bmdraW5rYW4gYWRtaW5pc3RyYXRvciB1bnR1ayBtZW5nZWRpdCBwZW5nYXR1cmFuIGF0YXMgbmFtYSBwZW5nZ3VuYSBsYWluLiBHdW5ha2FuIFwnUHJlZmVyZW5jZUdyb3VwXCcgdW50dWsgbWVuZ29udHJvbCBkaSBhcmVhIG1hbmEgcGVuZ2F0dXJhbiBpbmkgaGFydXMgZGl0YW1waWxrYW4gZGkgYW50YXJtdWthIHBlbmdndW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIHdhcm5hIHN0YXRlIHBlbnllYmFyYW4gZGFsYW0gcHJlZmVyZW5zaSBtZWxpaGF0IGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBzdGF0ZSBwZW55ZWJhcmFuIGRhbGFtIHByZWZlcmVuc2kgbWVsaWhhdCBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGdydXAgY29ub3RoIHBlcml6aW5hbiBkYXJpIGF0cmlidXQga2F0YWxvZyB1bXVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIG5hbWEgdW50dWsga2VsYXMgaXRlbSBrb25maWd1cmFzaSBkYWxhbSB0YW1waWxhbiBwcmVmZXJlbnNpIGFudGFybXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIG5vbW9yIHVudHVrIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgZGFsYW0gdGFtcGlsYW4gcHJlZmVyZW5zaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGhhbGFtYW4gKGRpIG1hbmEgaXRlbSBrb25maWd1cmFzaSBha2FuIGRpdGFtcGlsa2FuKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIHN0cmluZyB2ZXJzaSB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG1vZHVsIHRvb2xraXQgdGVtcGxhdGUgc3RyaW5nIHZlcnNpIHVudHVrIGtlbGFzIGl0ZW0ga29uZmlndXJhc2kgZGkgdGFtcGlsYW4gcHJlZmVyZW5zaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIHBlbWljdSB2ZXJzaSB1bnR1ayBrZWxhcyBpdGVtIGtvbmZpZ3VyYXNpIGRhbGFtIHRhbXBpbGFuIHByZWZlcmVuc2kgYW50YXJtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnTWVsYWt1a2FuIHRpbmRha2FuIGRpa29uZmlndXJhc2kgdW50dWsgc2V0aWFwIGFjYXJhIChzZWJhZ2FpIEludm9rZXIpIHVudHVrIHNldGlhcCBMYXlhbmFuIFdlYiBkaWtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+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+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gc2VqYXJhaCBjb25maWcgaXRlbSAodXJ1dGFuIHRlcmJhbGlrKSBkaSBhbnRhcm11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnS2F0ZWdvcmkgZGVmYXVsdCB5YW5nIGRpdGFtcGlsa2FuLCBqaWthIHRpZGFrIGFkYSB5YW5nIGRpcGlsaWguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdQZW5nZW5hbCB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpLCBtaXNhbG55YSBDb25maWdJdGVtICMsIE15Q29uZmlnIEl0ZW0gIy4gZGVmYXVsdCBhZGFsYWggQ29uZmlnSXRlbSAjLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnTWVtaWN1IHBlbWFuZ2dpbCBDb25maWdJdGVtRmV0Y2ggc2VjYXJhIG90b21hdGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnRWtzcHJlc2kgU3RyaW5nIFZlcnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ01vZHVsIFN0cmluZyBWZXJzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdQZW1pY3UgVmVyc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0FwYWthaCBla3Nla3VzaSBDb25maWdJdGVtQUNMIGRhcGF0IGRpaGluZGFyaSBkZW5nYW4gbWVtZXJpa3NhIGtldGVyZ2FudHVuZ2FuIGJpZGFuZyB5YW5nIGRpLWNhY2hlLiBIYWwgaW5pIGRhcGF0IG1lbmluZ2thdGthbiB3YWt0dSBwZW11YXRhbiBmb3JtdWxhciwgdGV0YXBpIGhhcnVzIGRpbm9uYWt0aWZrYW4sIGppa2EgQUNMTW9kdWxlcyBha2FuIGRpZ3VuYWthbiB1bnR1ayBJVFNNQ29uZmlnSXRlbSBkYW4gRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0luZm9ybWFzaSB1bXVtIG1hbmEgeWFuZyBkaXRhbXBpbGthbiBkaSBoZWFkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2VsYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncGFzY2Fwcm9kdWt0aWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByYXByb2R1a3RpZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGlmJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGluY2kgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBpbmNpICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgaW5jaSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBpbmNpICg4MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnUmFrIDE5IGluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGluY2kgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgaW5jaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnUmFrIDIxIGluY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IGluY2kgKDk3LDc5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICdSYWsgMjMgaW5jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgaW5jaSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgaW5jaSAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgaW5jaSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGluY2kgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgaW5jaSAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgaW5jaSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgaW5jaSAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgaW5jaSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgaW5jaSAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGluY2kgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBpbmNpICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgaW5jaSAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgaW5jaSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBpbmNpICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IGluY2kgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBpbmNpICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgaW5jaSAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGluY2kgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGluY2kgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGluY2kgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgaW5jaSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBpbmNpICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IGluY2kgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0FrdW50YW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0Fsb2thc2kgQWxhbWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbGVwb24gQW5hbG9nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnSmVuaXMgQWxhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0thcGFzaXRhcyBCYXRlcmFpIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnSmVuaXMgQmF0ZXJhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ01lbWJhbmd1bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnQW50YXJtdWthIEJ1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0tlbGFzIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXNpdGFzIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhc2l0YXMgcGVyIGthcnR1IGdyYWZpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ05vbW9yIEthcnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnUGVtYmFjYSBLYXJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdKZW5pcyBLYXJ0dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnU2VydGlmaWthdCBLbGllbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdQZXJhbmdrYXQgTHVuYWsgS2xpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2F0ZWdvcmkga2xpZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnQ2xvY2tyYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdLZWNlcGF0YW4gamFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdTZXJ0aWZpa2F0IFBlbmFuZGF0YW5nYW5hbiBLb2RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdUZWxlcG9uIEtvbmZlcmVuc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIEtvbnN1bHRhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0tvbnRhayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnSHVidW5naSBEaXN0cmlidXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ01hbmFqZW1lbiBLb250YWluZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdLb250cmFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdKZW5pcyBLb250cmFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnSmFuZ2thIHdha3R1IGtvbnRyYWsgZGFyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdKYW5na2Egd2FrdHUga29udHJhayBzYW1wYWkgZGVuZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbGVwb24gVGFucGEgS2FiZWwgKFRlbGVwb24gREVDVCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnVW5pdCBiaWF5YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0p1bWxhaCBsaXNlbnNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdUYW5nZ2FsIFBlbWJ1YXRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnUmFrIEtodXN1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBEaWNhZGFuZ2thbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU2VydmVyIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnVGFuZ2dhbCBGYWt0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1RhbmdnYWwgUGVtZXNhbmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdUYW5nZ2FsIFdhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ1RhbmdnYWwgcmlsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ1NlcnRpZmlrYXQgUGVuYW5kYXRhbmdhbmFuIERva3VtZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdSYWsgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnU2VydGlmaWthdCBFbWFpbCAoU2VydGlmaWthdCBTL01JTUUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0tvbnRyYWsgS2VyamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdBbGFtYXQgSVAgQWtoaXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdBa2hpciBkdWt1bmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1RhbmdnYWwgS2VkYWx1d2Fyc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0hhcmQgRHJpdmUgRWtzdGVybmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1BlbnlpbXBhbmFuIEVuZXJnaSBSb2RhIEdpbGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWt0b3IgQmVudHVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIFdhcmFsYWJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXNpIFVtdW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdLYXJ0dSBHcmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0thcnR1IGdyYWZpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ1BlcmFuZ2thdCBrZXJhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsIFBlcmFuZ2thdCBLZXJhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdCZXJhdCBQZXJhbmdrYXQgS2VyYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0hlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2tvbCBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdNYW5hamVtZW4gSWRlbnRpdGFzIGRhbiBBa3NlcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTm9tb3IgUGVyc2VkaWFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0JpYXlhIHBlbWJhbGlrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOb21vciBGYWt0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLZXlib2FyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdNb25pdG9yIExDRCAoTGF5YXIgS3Jpc3RhbCBDYWlyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBMRUQgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWxlcG9uIHJ1bWFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ0xhcHRvcCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xpbnRhbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMYXBpc2FuIDE6IExhcGlzYW4gRmlzaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGFwaXNhbiAyOiBMYXBpc2FuIFRhdXRhbiBEYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYXBpc2FuIDM6IExhcGlzYW4gSmFyaW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGFwaXNhbiAzOiBMYXBpc2FuIEphcmluZ2FuIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnTGFwaXNhbiA0OiBMYXBpc2FuIFRyYW5zcG9ydGFzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnTGFwaXNhbiA1OiBMYXBpc2FuIFNlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGFwaXNhbiA2OiBMYXBpc2FuIFByZXNlbnRhc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdMYXBpc2FuIDc6IExhcGlzYW4gQXBsaWthc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBTZXdhIE1lbnlld2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIExpc2Vuc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0t1bmNpIExpc2Vuc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnSmVuaXMgTGlzZW5zaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnUGVyaW9kZSBsaXNlbnNpIGRhcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdNYXNhIGJlcmxha3UgbGlzZW5zaSBzYW1wYWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ0JhdGVyYWkgTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0JhdGVyYWkgTGl0aGl1bS1Jb24gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdQZXJqYW5qaWFuIFBpbmphbWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdCZXJsb2thc2kgZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnQnVqdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdQcm9kdXNlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnS2FwYXNpdGFzIEJlYmFuIE1ha3NpbXVtIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdKZW5pcyBNZW1vcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ1JhayBNaW5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOb21vciBwb25zZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnU2VsdWxlciAvIFRlcnRhbmFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdEZXNrcmlwc2kgTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAnUmVzb2x1c2kgTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdVa3VyYW4gTW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ01vdXNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdKYXJpbmdhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvIEphcmluZ2FuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdJbmZvcm1hc2kgSmFyaW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0xhcGlzYW4gSmFyaW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdCYXRlcmFpIE5pa2VsLUthZG1pdW0gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0ZXJhaSBOaWtlbC1Mb2dhbSBIaWRyaWRhIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdQZXJqYW5qaWFuIEtlcmFoYXNpYWFuIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQnVrdSBjYXRhdGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnSnVtbGFoIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdKdW1sYWggbW9kdWwgUkFNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0p1bWxhaCBrYXJ0dSBncmFmaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoRGlvZGEgUGVtYW5jYXIgQ2FoYXlhIE9yZ2FuaWspJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0JpYXlhIG9wZXJhc2lvbmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ05vbW9yIFBlc2FuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdMYWluLWxhaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0tlbHVhcmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJ1BJTiAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ1BlcmphbmppYW4gS2VtaXRyYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnTm9tb3IgVGVsZXBvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnSmVuaXMgVGVsZXBvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0ludGkgRmlzaWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdQZW5naXJpbWFuIERheWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdEaWJlbGkgZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ0tlZGFsYW1hbiBSYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdVbml0IFJhayAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1J1YW5nYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdLYXJ0dSBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTZXJ0aWZpa2F0IFNTTCAvIFRMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0tvbnRyYWsgUGVuanVhbGFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbGVwb24gU2F0ZWxpdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICdCYXRlcmFpIEFzYW0gVGltYmFsIFRlcnNlZ2VsIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnTm9tb3Igc2VyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdQZXJhbmdrYXQgTHVuYWsgU2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnUGVyamFuamlhbiBMYXlhbmFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnVGFnIExheWFuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnSmVuaXMgU29rZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQZXJhbmdrYXQgbHVuYWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdQZW1iaWNhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnTXVsYWkgQWxhbWF0IElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdQZW55aW1wYW5hbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpc2kgUGVueWltcGFuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdBbmFrIFBlcnVzYWhhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1JpbmdrYXNhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ0tsaWVuIFRpcGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdCZW5hbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdQZXRpcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIGthcnR1IGdyYWZpcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWwgUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ01vbml0b3IgTGF5YXIgU2VudHVoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnTWVuYXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnSGVhZHNldCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlcG9uIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ0thbWVyYSB3ZWInOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydSdW4gU2VhcmNoJ30gPSAnRXNlZ3VpIHJpY2VyY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnQ2VyY2FyZSBhbmNoZSBpbiB2ZXJzaW9uaSBwcmVjZWRlbnRpPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1Zpc3VhbGl6emF6aW9uZSBhZCBhbGJlcm8gcGVyIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdMaXZlbGxvIGRpIHByb2ZvbmRpdMOgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBhdmFudGkvaW5kaWV0cm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTGl2ZWxsbyBtYXNzaW1vIGRpIGNvbGxlZ2FtZW50aSByYWdnaXVudG8gcGVyIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnRWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXppb25pIHN1bGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1N0YXRvIGF0dHVhbGUgZGkgaW1wbGVtZW50YXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdTdGF0byBhdHR1YWxlIGRlbGxcJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdVbHRpbWEgbW9kaWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVWx0aW1hIG1vZGlmaWNhIGRpJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnSSB2b3N0cmkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnUmljZXJjYSBkaSBDb25maWdJdGVtJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVmVycmFubm8gaW1wb3J0YXRlIGxlIHNlZ3VlbnRpIGNsYXNzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdWZXJyYW5ubyBpbXBvcnRhdGkgaSBzZWd1ZW50aSBydW9saSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdTaSBub3RpIGNoZSB2ZXJyYW5ubyBjcmVhdGkgYW5jaGUgaSBjYW1waSBkaW5hbWljaSBlIGxlIGNsYXNzaSBHZW5lcmFsQ2F0YWxvZyBjb3JyaXNwb25kZW50aSBlIG5vbiDDqCBwcmV2aXN0YSBsYSByaW1vemlvbmUgYXV0b21hdGljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdWdW9pIGNvbnRpbnVhcmU/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1NlcnZvbm8gY2xhc3NpIGRpIGVzZW1waW8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0xhIGRlZmluaXppb25lIG5vbiDDqCB1biBoYXNoIFlBTUwgdmFsaWRvLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1Bhbm9yYW1pY2E6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOb24gdmllbmUgZm9ybml0byBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnw4ggbmVjZXNzYXJpbyBhbG1lbm8gdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgc2VsZXppb25hdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTm9uIGhhaSBhY2Nlc3NvIGluIHNjcml0dHVyYSBhIHF1ZXN0byBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZTogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ05lc3N1bmEgZGVmaW5pemlvbmUgw6ggc3RhdGEgZGVmaW5pdGEgcGVyIGxhIGNsYXNzZSAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ1ZvY2UgZGkgY29uZmlndXJhemlvbmUgIiVzIiBub24gdHJvdmF0YSBuZWwgZGF0YWJhc2UhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnSW1wb3NzaWJpbGUgZWxpbWluYXJlIGxcJ0lEIGRpIGNvbmZpZ3VyYXppb25lICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmVzc3VuYSB2ZXJzaW9uZSB0cm92YXRhIHBlciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05vbiB2aWVuZSBmb3JuaXRvIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgbyBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTmVzc3VuIGFjY2Vzc28gw6ggY29uY2Vzc28hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0ltcG9zc2liaWxlIG1vc3RyYXJlIGxhIGNyb25vbG9naWEsIG5vbiB2aWVuZSBmb3JuaXRvIENvbmZpZ0l0ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdJbXBvc3NpYmlsZSBtb3N0cmFyZSBsYSBjcm9ub2xvZ2lhLCBuZXNzdW4gZGlyaXR0byBkaSBhY2Nlc3NvIGNvbmNlc3NvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTnVvdm8gQ29uZmlnSXRlbSAoSUQgPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTnVvdmEgdmVyc2lvbmUgKElEID0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF0byBkaSBkaXN0cmlidXppb25lIGFnZ2lvcm5hdG8gKG51b3ZvPSVzLCB2ZWNjaGlvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGF0byBkZWxsXCdpbmNpZGVudGUgYWdnaW9ybmF0byAobnVvdm89JXMsIHZlY2NoaW89ICVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBlbGltaW5hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnQ29sbGVnYW1lbnRvIGEgJXMgKHRpcG89JXMpIGFnZ2l1bnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdDb2xsZWdhbWVudG8gYSAlcyAodGlwbz0lcykgZWxpbWluYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdEZWZpbml6aW9uZSBkaSBDb25maWdJdGVtIGFnZ2lvcm5hdGEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05vbWUgYWdnaW9ybmF0byAobnVvdm89JXMsIHZlY2NoaW89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXRvICVzIGFnZ2lvcm5hdG8gZGEgIiVzIiBhICIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnVmVyc2lvbmUgJXMgZWxpbWluYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05vbiB2aWVuZSBmb3JuaXRvIENvbmZpZ0l0ZW1JRCBvIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnSW1wb3NzaWJpbGUgbW9zdHJhcmUgbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUsIG5lc3N1biBkaXJpdHRvIGRpIGFjY2Vzc28gY29uY2Vzc28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG5vbiB0cm92YXRvIG5lbCBkYXRhYmFzZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3N0YW1wYXRvIGRhICVzIGEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JpZmVyaW1lbnRvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCBub24gdmFsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05lc3N1biBDbGFzc0lEIMOoIGRhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnTmVzc3VuIGRpcml0dG8gZGkgYWNjZXNzbyBwZXIgcXVlc3RhIGNsYXNzZSBkYXRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnTmVzc3VuIHJpc3VsdGF0byEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWd1cmEgaSByaXN1bHRhdGkgZGVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnSW1wb3NzaWJpbGUgbW9zdHJhcmUgbFwnZWxlbWVudG8sIG5vbiB2aWVuZSBjb25jZXNzbyBhbGN1biBkaXJpdHRvIGRpIGFjY2Vzc28gcGVyIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbm9uIHRyb3ZhdG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05lc3N1bmEgdmVyc2lvbmUgdHJvdmF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2F2dmVydGltZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ2luY2lkZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnTG8gc3RhdG8gZGkgaW1wbGVtZW50YXppb25lIGRpIHF1ZXN0byBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0xvIHN0YXRvIGRpIGluY2lkZW50ZSBkaSBxdWVzdG8gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdOZXNzdW4gcGVybWVzc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJvIG5vbiB2YWxpZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICdQYXJhbWV0cmkgZGkgcmljZXJjYSBub24gdmFsaWRpISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0VsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG1vc3RyYXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcG8gZGkgc3RhdG8gZGkgZGlzdHJpYnV6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUaXBvIGRpIHN0YXRvIGRlbGxcJ2luY2lkZW50ZSBjb3JyZW50ZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdmcmEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyaXppb25pIGRpIGNsYXNzZSBwZXIgbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGV6aW9uYXJlIHVuYSBvIHBpw7kgY2xhc3NpIHBlciBsaW1pdGFyZSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgc2VsZXppb25hYmlsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpemlvbmkgZGkgY2xhc3NlIHBlciBsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGV6aW9uYXJlIHVuYSBvIHBpw7kgY2xhc3NpIHBlciBsaW1pdGFyZSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgc2VsZXppb25hYmlsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJ0RpbmFtaWNvIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljYSAodmVyc2lvbmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1RpcG8gZGkgcmlmZXJpbWVudG8gZGVsIGNvbGxlZ2FtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTZSBxdWVzdG8gY29sbGVnYW1lbnRvIHNpIGFwcGxpY2EgYWwgQ29uZmlnSXRlbSBvIGFsbGEgdmVyc2lvbmUgc3RhdGljYSBkZWxsXCdvZ2dldHRvIGRpIHJpZmVyaW1lbnRvLiBJbCBjYWxjb2xvIGRlbGxvIFN0YXRvIGNvcnJlbnRlIGRlbGxcJ2luY2lkZW50ZSB2aWVuZSBlc2VndWl0byBzb2xvIHN1aSBjb2xsZWdhbWVudGkgZGluYW1pY2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZXppb25hcmUgbFwnYXR0cmlidXRvIGluIGJhc2UgYWwgcXVhbGUgZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIHZlcnJhbm5vIHJpY2VyY2F0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnTGEgc3RydXR0dXJhIGRpIGJhc2Ugbm9uIMOoIHZhbGlkYS4gRm9ybmlyZSB1biBoYXNoIGNvbiBpIGRhdGkgaW4gZm9ybWF0byBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ8OIIG5lY2Vzc2FyaW8gaW5pemlhcmUgbGEgc3RyaW5nYSBZQU1MIGNvbiBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdJbXBvc3NpYmlsZSBlbGltaW5hcmUgbGEgdGFiZWxsYSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOb24gc29ubyBzdGF0aSB0cm92YXRpIGNhbXBpIGRpbmFtaWNpIHJpbGV2YW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0ltcG9zc2liaWxlIGluc2VyaXJlIG5lbGxhIHRhYmVsbGEgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdJbnNlcml0ZSAwIHJpZ2hlIG5lbGxhIHRhYmVsbGEgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ051bWVybyBtYXNzaW1vIGRpIHVuIGVsZW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnNpb25lIFN0cmluZ2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJyb3JlIG5lbGxhIHNpbmNyb25penphemlvbmUgZGVsbGUgZGVmaW5pemlvbmkuIENvbnRyb2xsYXJlIGlsIHJlZ2lzdHJvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0xlIGRlZmluaXppb25pIGRpIElUU01Db25maWdJdGVtIG5vbiBzb25vIHNpbmNyb25penphdGUuIERpc3RyaWJ1aXJlIGxlIG1vZGlmaWNoZSBhaSBjYW1waSBkaW5hbWljaSBkaSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1NjYWR1dG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdNYW51dGVuemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGlhbmlmaWNhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmlwYXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JpdGlyYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1JldmlzaW9uYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0JzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQYW5vcmFtaWNhIGUgY29uZmVybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YXppb25lIGRpIGNsYXNzaS9ydW9saSBlIGRlaSByZWxhdGl2aSBjYW1waSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1NpIMOoIHZlcmlmaWNhdG8gdW4gZXJyb3JlIGR1cmFudGUgbFwnaW1wb3J0YXppb25lIGRlbGxhIGNsYXNzZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIE5hc2Nvc3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBNb3N0cmF0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQ29uc2VudGUgY29uZGl6aW9uaSBkaSByaWNlcmNhIGVzdGVzZSBuZWxsYSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4gQ29uIHF1ZXN0YSBmdW56aW9uZSDDqCBwb3NzaWJpbGUgY2VyY2FyZSwgYWQgZXNlbXBpbywgaWwgbm9tZSBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBjb24gY29uZGl6aW9uaSBkZWwgdGlwbyAiKCprZXkxKiYmKmtleTIqKSIgbyAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0NvbnNlbnRlIGNvbmRpemlvbmkgZGkgcmljZXJjYSBlc3Rlc2UgbmVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLiBDb24gcXVlc3RhIGZ1bnppb25lIMOoIHBvc3NpYmlsZSBjZXJjYXJlLCBhZCBlc2VtcGlvLCBpbCBub21lIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGNvbiBjb25kaXppb25pIGRlbCB0aXBvICIoKmtleTEqJiYqa2V5MiopIiBvICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnQ0lzIGFzc2VnbmF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0lzIGFzc2VnbmF0aSBhbGxhIHNvY2lldMOgIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSXMgYXNzZWduYXRpIGFsbFwndXRlbnphIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0ltcG9zdGF6aW9uaSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDZXJjYSB1biBub21lIHVuaXZvY28gc29sbyBhbGxcJ2ludGVybm8gZGVsbGEgc3Rlc3NhIGNsYXNzZSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIG8gZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBpbCBjaGUgc2lnbmlmaWNhIGNoZSBvZ25pIENvbmZpZ0l0ZW0gZXNpc3RlbnRlIHZpZW5lIHByZXNvIGluIGNvbnNpZGVyYXppb25lIHF1YW5kbyBzaSBjZXJjYW5vIGR1cGxpY2F0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1NjZWdsaWVyZSB1biBtb2R1bG8gcGVyIGFwcGxpY2FyZSB1bm8gc2NoZW1hIGRpIGRlbm9taW5hemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdTY2VnbGllcmUgdW4gbW9kdWxvIHBlciBhcHBsaWNhcmUgdW5vIHNjaGVtYSBudW1lcmljby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnU2NlZ2xpZXJlIHVuIG1vZHVsbyBwZXIgYXBwbGljYXJlIHVubyBzY2hlbWEgZGkgc3RyaW5naGUgZGkgdmVyc2lvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnU2NlZ2xpZXJlIGdsaSBhdHRyaWJ1dGkgcGVyIGF0dGl2YXJlIGxhIGNyZWF6aW9uZSBkaSB1bmEgbnVvdmEgdmVyc2lvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ1NjZWdsaWVyZSBsZSBjYXRlZ29yaWUgZGEgYXNzZWduYXJlIGEgcXVlc3RhIGNsYXNzZSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cmkgcGVyIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsYSBjb2xvbm5hIHBlciBsYSBwYW5vcmFtaWNhIGRpIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2xvbm5lIGNoZSBwb3Nzb25vIGVzc2VyZSBmaWx0cmF0ZSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4gTm90YTogU29ubyBhbW1lc3NpIHNvbG8gZ2xpIGF0dHJpYnV0aSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBlIGkgY2FtcGkgZGluYW1pY2kgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZ2dpdW5naSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdNb2RpZmljYSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRpIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIGNoZSBjb25zZW50ZSBsYSByZWdpc3RyYXppb25lIG5lbGxhIGNyb25vbG9naWEgbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRvIHBlciBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgY2hlIGFnZ2lvcm5hIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBhbGxhIGxvcm8gZGVmaW5pemlvbmUgY29ycmVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnQ29uZmlndXJhIGNyb25vbG9naWEgYXJ0aWNvbGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1N0YW1wYSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmEgbG8gem9vbSBkZWxsXCdvZ2dldHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGFkIGFsYmVybyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnSSBDb25maWdJdGVtIGRlbGxlIHNlZ3VlbnRpIGNsYXNzaSBub24gc2FyYW5ubyBtZW1vcml6emF0aSBzdWwgc2VydmVyIEVsYXN0aWNzZWFyY2guIFBlciBhcHBsaWNhcmUgcXVlc3RvIGFpIENJIGVzaXN0ZW50aSwgw6ggbmVjZXNzYXJpbyBlc2VndWlyZSBsYSBtaWdyYXppb25lIGRlbCBDSSB0cmFtaXRlIGxhIGNvbnNvbGUsIGRvcG8gYXZlciBtb2RpZmljYXRvIHF1ZXN0YSBvcHppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdJIENvbmZpZ0l0ZW0gY29uIGkgc2VndWVudGkgc3RhdGkgZGkgZGlzdHJpYnV6aW9uZSBub24gc2FyYW5ubyBtZW1vcml6emF0aSBzdWwgc2VydmVyIEVsYXN0aWNzZWFyY2guIFBlciBhcHBsaWNhcmUgcXVlc3RvIGFpIENJIGVzaXN0ZW50aSwgw6ggbmVjZXNzYXJpbyBlc2VndWlyZSBsYSBtaWdyYXppb25lIGRlbCBDSSB0cmFtaXRlIGxhIGNvbnNvbGUsIGRvcG8gYXZlciBtb2RpZmljYXRvIHF1ZXN0YSBvcHppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0ZSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBwZXIgcGFnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnRGF0YWJhc2UgZGkgZ2VzdGlvbmUgZGVsbGEgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdNb2R1bG8gZGkgbWFzc2EgZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZvY2UgZGkgY29uZmlndXJhemlvbmUgcmljZXJjYSByb3V0ZXIgYmFja2VuZCBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyZWEgZSBnZXN0aXNjaSBsZSBkZWZpbml6aW9uaSBwZXIgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyZWEgYmlnbGlldHRpIHBlciBpIENvbmZpZ0l0ZW0gaW4gbW9tZW50aSBzcGVjaWZpY2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0kgY2xpZW50aSBwb3Nzb25vIHZlZGVyZSBsZSB2ZXJzaW9uaSBzdG9yaWNoZSBkZWkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0kgY2xpZW50aSBoYW5ubyBsYSBwb3NzaWJpbGl0w6AgZGkgcGFzc2FyZSBtYW51YWxtZW50ZSB0cmEgbGUgdmVyc2lvbmkgc3RvcmljaGUgZGkgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0aSBwcmVkZWZpbml0aSBkYSB1c2FyZSBuZWxsXCdhdHRyaWJ1dG8gcGVyIGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLiBFc2VtcGlvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9YW5ubztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PXVsdGltbztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0aSBwcmVkZWZpbml0aSBkYSB1c2FyZSBuZWxsXCdhdHRyaWJ1dG8gcGVyIGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLiBFc2VtcGlvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pcmUgbGUgYXppb25pIGluIGN1aSDDqCBkaXNwb25pYmlsZSB1biBwdWxzYW50ZSBkaSBpbXBvc3RhemlvbmUgbmVsIHdpZGdldCBkZWdsaSBvZ2dldHRpIGNvbGxlZ2F0aSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBTaSBub3RpIGNoZSBxdWVzdGUgYXppb25pIGRldm9ubyBhdmVyIHJlZ2lzdHJhdG8gaSBzZWd1ZW50aSBmaWxlIEpTIGUgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBlIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSB1bm8gc2NoZW1hIFRlbXBsYXRlOjpUb29sa2l0IHBlciBsZSBzdHJpbmdoZSBkaSB2ZXJzaW9uZS4gVXRpbGl6emF0byBzb2xvIHNlIGlsIG1vZHVsbyBTdHJpbmdhIGRpIHZlcnNpb25lIMOoIGltcG9zdGF0byBzdSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmlyZSB1biBpbnNpZW1lIGRpIGNvbmRpemlvbmkgaW4gYmFzZSBhbGxlIHF1YWxpIHVuIGNsaWVudGUgcHXDsiB2ZWRlcmUgdW4gZWxlbWVudG8gZGVsbGEgY29uZmlndXJhemlvbmUuIExlIGNvbmRpemlvbmkgcG9zc29ubyBlc3NlcmUgZmFjb2x0YXRpdmFtZW50ZSBsaW1pdGF0ZSBhIGRldGVybWluYXRpIGdydXBwaSBkaSBjbGllbnRpLiBJbCBub21lIMOoIGxcJ3VuaWNvIGF0dHJpYnV0byBvYmJsaWdhdG9yaW8uIFNlIG5vbiB2ZW5nb25vIGZvcm5pdGUgYWx0cmUgb3B6aW9uaSwgdHV0dGkgZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIHNhcmFubm8gdmlzaWJpbGkgc290dG8gcXVlbGxhIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgZWxpbWluYXJlIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIHV0aWxpenphbmRvIGxcJ2ludGVyZmFjY2lhIGdlbmVyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGkgcGVybWVzc2kgbmVjZXNzYXJpIHBlciBvdHRlbmVyZSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSB1dGlsaXp6YW5kbyBsXCdpbnRlcmZhY2NpYSBnZW5lcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpIHBlcm1lc3NpIG5lY2Vzc2FyaSBwZXIgbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIHV0aWxpenphbmRvIGxcJ2ludGVyZmFjY2lhIGdlbmVyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGF1dG9yaXp6YXppb25pIG5lY2Vzc2FyaWUgcGVyIGltcG9zdGFyZSBnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSB1dGlsaXp6YW5kbyBsXCdpbnRlcmZhY2NpYSBnZW5lcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pc2NlIHVuIG1vZHVsbyBkaSBwYW5vcmFtaWNhIHBlciBtb3N0cmFyZSBsYSB2aXN0YSByaWRvdHRhIGRpIHVuIGVsZW5jbyBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHNlIGxlIGV0aWNoZXR0ZSBkZWwgdGlwbyBkaSBjb2xsZWdhbWVudG8gZGV2b25vIGVzc2VyZSBtb3N0cmF0ZSBuZWxsZSBjb25uZXNzaW9uaSBkZWkgbm9kaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBlc3ByZXNzaW9uaSByZWdvbGFyaSBzaW5nb2xhcm1lbnRlIHBlciBjaWFzY3VuYSBjbGFzc2UgQ29uZmlnSXRlbSBwZXIgY29udHJvbGxhcmUgaWwgbm9tZSBDb25maWdJdGVtIGUgbW9zdHJhcmUgaSBtZXNzYWdnaSBkaSBlcnJvcmUgY29ycmlzcG9uZGVudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGxlIGNvbG9ubmUgZGlzcG9uaWJpbGkgZGVpIENJIG5lbGxhIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUsIGEgc2Vjb25kYSBkZWxsYSBjbGFzc2UgZGVsIENJLiBPZ25pIHZvY2UgZGV2ZSBlc3NlcmUgY29tcG9zdGEgZGEgdW4gbm9tZSBkaSBjbGFzc2UgZSBkYSB1biBhcnJheSBkaSBjYW1waSBkaXNwb25pYmlsaSBwZXIgbGEgY2xhc3NlIGNvcnJpc3BvbmRlbnRlLiBMZSB2b2NpIGRlaSBjYW1waSBkaW5hbWljaSBkZXZvbm8gcmlzcGV0dGFyZSBsbyBzY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhdHRyaWJ1dG8gcHJlZGVmaW5pdG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgcGVyIGxcJ29yZGluYW1lbnRvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYXR0cmlidXRvIHByZWRlZmluaXRvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHBlciBsXCdvcmRpbmFtZW50byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYXR0cmlidXRvIHByZWRlZmluaXRvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHBlciBsXCdvcmRpbmFtZW50byBkZWxsXCdlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBkZWwgcmlzdWx0YXRvIGRlbGxhIHJpY2VyY2EgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgZGkgcXVlc3RhIG9wZXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIHByZWRlZmluaXRvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGUuIFN1OiBpbCBwacO5IHZlY2NoaW8gaW4gY2ltYS4gR2nDuTogbFwndWx0aW1vIGluIGNpbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIHByZWRlZmluaXRvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLiBTdTogaWwgcGnDuSB2ZWNjaGlvIGluIGNpbWEuIEdpw7k6IGlsIHBpw7kgcmVjZW50ZSBpbiBjaW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnb3JkaW5lIHByZWRlZmluaXRvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbCByaXN1bHRhdG8gZGVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkaSBxdWVzdGEgb3BlcmF6aW9uZS4gU3U6IGlsIHBpw7kgdmVjY2hpbyBpbiBjaW1hLiBHacO5OiBsXCd1bHRpbW8gaW4gY2ltYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIHByZWRlZmluaXRlIGRlaSBDSSBuZWxsYSBwYW5vcmFtaWNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCBhIHNlY29uZGEgZGVsbGEgY2xhc3NlIGRlbCBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIGNvbXBvc3RhIGRhIHVuIG5vbWUgZGkgY2xhc3NlIGUgZGEgdW4gYXJyYXkgZGkgY2FtcGkgZGlzcG9uaWJpbGkgcGVyIGxhIGNsYXNzZSBjb3JyaXNwb25kZW50ZS4gTGUgdm9jaSBkZWkgY2FtcGkgZGluYW1pY2kgZGV2b25vIHJpc3BldHRhcmUgbG8gc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluaXNjZSBsYSBwcm9mb25kaXTDoCBwcmVkZWZpbml0YSBkZWxsZSByZWxhemlvbmkgZGEgbW9zdHJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdhdHRyaWJ1dG8gcHJlZGVmaW5pdG8gZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBwZXIgbGEgc2NoZXJtYXRhIGRpIHJpY2VyY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYXR0cmlidXRvIGRpIHJpY2VyY2EgcHJlZGVmaW5pdG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgcGVyIGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lLiBFc2VtcGlvOiAiS2V5IiBkZXZlIGF2ZXJlIGlsIG5vbWUgZGVsIGNhbXBvIGRpbmFtaWNvLCBpbiBxdWVzdG8gY2FzbyBcJ1hcJywgIkNvbnRlbnQiIGRldmUgYXZlcmUgaWwgdmFsb3JlIGRlbCBjYW1wbyBkaW5hbWljbywgYSBzZWNvbmRhIGRlbCB0aXBvIGRpIGNhbXBvIGRpbmFtaWNvLCBUZXh0OiBcJ3VuIHRlc3RvXCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgZSBvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBzb3R0by1vZ2dldHRvIHByZWRlZmluaXRvIGRlbGxhIGNsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSBkaXNwb25pYmlsaSBkZWkgQ0kgbmVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSwgYSBzZWNvbmRhIGRlbGxhIGNsYXNzZSBkZWwgQ0kuIE9nbmkgdm9jZSBkZXZlIGVzc2VyZSBjb21wb3N0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGRhIHVuIGFycmF5IGRpIGNhbXBpIGRpc3BvbmliaWxpIHBlciBsYSBjbGFzc2UgY29ycmlzcG9uZGVudGUuIExlIHZvY2kgZGVpIGNhbXBpIGRpbmFtaWNpIGRldm9ubyByaXNwZXR0YXJlIGxvIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmlzY2UgbFwnYWx0ZXp6YSBkZWwgY29tcG9uZW50ZSBkZWxsXCdlZGl0b3IgZGkgdGVzdG8gcmljY28gcGVyIHF1ZXN0YSBzY2hlcm1hdGEuIEluc2VyaXJlIHVuIG51bWVybyAocGl4ZWwpIG8gdW4gdmFsb3JlIHBlcmNlbnR1YWxlIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBudW1lcm8gZGkgcmlnaGUgcGVyIENJIGxcJ2VkaXRvciBkZWxsZSBkZWZpbml6aW9uaSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBuZWxsXCdpbnRlcmZhY2NpYSBkaSBhbW1pbmlzdHJhemlvbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsXCdvcmRpbmUgZGVnbGkgc3RhdGkgZGVnbGkgaW5jaWRlbnRpIGRhIGFsdG8gKGVzLiBjcml0aWNvKSBhIGJhc3NvIChlcy4gZnVuemlvbmFsZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGdsaSBzdGF0aSBkaSBkaXN0cmlidXppb25lIHBlcnRpbmVudGkgaW4gY3VpIGkgdGlja2V0IGNvbGxlZ2F0aSBwb3Nzb25vIGluZmx1aXJlIHN1bGxvIHN0YXRvIGRpIHVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBsaW1pdGUgZGkgcmljZXJjYSBwZXIgbGEgc2NoZXJtYXRhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pc2NlIGlsIGxpbWl0ZSBkaSByaWNlcmNhIHBlciBsYSBzY2hlcm1hdGEgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmlzY2UgaWwgbGltaXRlIGRpIHJpY2VyY2EgcGVyIGxhIHNjaGVybWF0YSBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBpbCBsaW1pdGUgZGkgcmljZXJjYSBwZXIgbGEgc2NoZXJtYXRhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBsZSBjb2xvbm5lIGRpIHZpc3VhbGl6emF0ZSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBkaSBDSXMgbmVsbGEgdmlzdGEgY29tcGxlc3NhIGRlbGxhIHRhYmVsbGEgZGVpIGNvbGxlZ2FtZW50aSBwZXIgdHV0dGUgbGUgY2xhc3NpIENJLiBTZSBub24gw6ggcHJlc2VudGUgYWxjdW5hIHZvY2UsIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGxlIGNvbG9ubmUgcHJlZGVmaW5pdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmlzY2UgbGUgY29sb25uZSB2aXN1YWxpenphdGUgZGVnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgbmVsbGEgdmlzdGEgY29tcGxlc3NhIGRlbGxhIHRhYmVsbGEgZGVpIGNvbGxlZ2FtZW50aSwgYSBzZWNvbmRhIGRlbGxhIGNsYXNzZSBDSS4gT2duaSB2b2NlIGRldmUgZXNzZXJlIHByZWNlZHV0YSBkYSB1biBub21lIGRpIGNsYXNzZSBlIGR1ZSBwdW50aSAoYWQgZXNlbXBpbyBDb21wdXRlcjo6KS4gRXNpc3Rvbm8gYWxjdW5pIGF0dHJpYnV0aSBDSSBjb211bmkgYSB0dXR0aSBnbGkgZWxlbWVudGkgZGVsbGEgY29uZmlndXJhemlvbmUgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcjogQ29tcHV0ZXI6Ok5vbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gUGVyIG1vc3RyYXJlIHNpbmdvbGkgYXR0cmlidXRpIENJIGNvbWUgZGVmaW5pdGkgbmVsbGEgZGVmaW5pemlvbmUgQ0ksIMOoIG5lY2Vzc2FyaW8gdXRpbGl6emFyZSBpbCBzZWd1ZW50ZSBzY2hlbWEgKGVzZW1waW8gcGVyIGxhIGNsYXNzZSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBTZSBub24gw6ggcHJlc2VudGUgYWxjdW5hIHZvY2UgcGVyIHVuYSBjbGFzc2UgQ0ksIHZlbmdvbm8gdmlzdWFsaXp6YXRlIGxlIGNvbG9ubmUgcHJlZGVmaW5pdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHF1YWxpIHZvY2kgc29ubyBkaXNwb25pYmlsaSBwZXIgbFwnIkF6aW9uZSIgbmVsIHRlcnpvIGxpdmVsbG8gZGVsbGEgc3RydXR0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaXNjZSBxdWFsaSB2b2NpIHNvbm8gZGlzcG9uaWJpbGkgbmVsIHByaW1vIGxpdmVsbG8gZGVsbGEgc3RydXR0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmlzY2UgcXVhbGkgdm9jaSBzb25vIGRpc3BvbmliaWxpIG5lbCBzZWNvbmRvIGxpdmVsbG8gZGVsbGEgc3RydXR0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmlzY2UgcXVhbGUgdGlwbyBkaSBjb2xsZWdhbWVudG8gKGRlbm9taW5hdG8gZGFsbGEgcHJvc3BldHRpdmEgZGVsIHRpY2tldCkgcHXDsiBpbmZsdWlyZSBzdWxsbyBzdGF0byBkaSB1biBlbGVtZW50byBkZWxsYSBjb25maWd1cmF6aW9uZSBjb2xsZWdhdG8gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5pc2NlIHF1YWxlIHRpcG8gZGkgdGlja2V0IHB1w7IgaW5mbHVpcmUgc3VsbG8gc3RhdG8gZGkgdW4gZWxlbWVudG8gZGVsbGEgY29uZmlndXJhemlvbmUgY29sbGVnYXRvIENJLiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBZ2dpb3JuYW1lbnRvIGRlbGxhIGRlZmluaXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdFbGltaW5hIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ1N0YXRvIGRpIGRlcGxvcmF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ29sb3JlIGRlbGxvIHN0YXRvIGRpIGRpc3RyaWJ1emlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnU3RhdG8gZGkgZGlzdHJpYnV6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bG8gZXZlbnRvIHBlciBjYW1waSBkaW5hbWljaSBjaGUgY29udHJhc3NlZ25hIGxlIGRlZmluaXppb25pIGRlZ2xpIGVsZW1lbnRpIGRlbGxhIGNvbmZpZ3VyYXppb25lIGNvbWUgbm9uIHNpbmNyb25penphdGUsIHNlIGkgY2FtcGkgZGluYW1pY2kgY2hlIGxlIGNvbnRlbmdvbm8gY2FtYmlhbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1waSBkaW5hbWljaSB2aXN1YWxpenphdGkgbmVsbGEgc2NoZXJtYXRhIGRlbCBjYW1wbyBJVFNNIGFnZ2l1bnRpdmEgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1waSBkaW5hbWljaSB2aXN1YWxpenphdGkgbmVsbGEgc2NoZXJtYXRhIGRpIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcGkgZGluYW1pY2kgdmlzdWFsaXp6YXRpIG5lbGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWJpbGl0YSBsYSBmdW56aW9uZSBkaSBhemlvbmUgaW4gYmxvY2NvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIGFmZmluY2jDqSBpbCBmcm9udGVuZCBkZWxsXCdhZ2VudGUgZnVuemlvbmkgc3UgcGnDuSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBhbGxhIHZvbHRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnQWJpbGl0YSBsYSBmdW56aW9uZSBkaSBhemlvbmUgaW4gYmxvY2NvIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIHNvbG8gcGVyIGkgZ3J1cHBpIGVsZW5jYXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdBYmlsaXRhL2Rpc2FiaWxpdGEgbGEgZnVuemlvbmFsaXTDoCBkaSBjb250cm9sbG8gZGVsbGUgdm9jaSBkaSBjb25maWd1cmF6aW9uZSBJVFNNIHBlciBpIG5vbWkgdW5pdm9jaS4gUHJpbWEgZGkgYWJpbGl0YXJlIHF1ZXN0YSBvcHppb25lLCDDqCBuZWNlc3NhcmlvIGNvbnRyb2xsYXJlIGlsIHNpc3RlbWEgcGVyIHZlcmlmaWNhcmUgY2hlIG5vbiB2aSBzaWFubyBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBnacOgIGVzaXN0ZW50aSBjb24gbm9taSBkdXBsaWNhdGkuIMOIIHBvc3NpYmlsZSBmYXJsbyBjb24gaWwgY29tYW5kbyBkZWxsYSBjb25zb2xlIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWxvIGV2ZW50byBwZXIgaW1wb3N0YXJlIGxvIHN0YXRvIGRpIGNvbmZpZ3VyYXppb25lIHN1IHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBpIGRlbGxcJ2luZGljZSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSwgdXRpbGl6emF0aSBwZXIgbGEgcmljZXJjYSBmdWxsLXRleHQuIEkgY2FtcGkgc29ubyBhbmNoZSBtZW1vcml6emF0aSwgbWEgbm9uIHNvbm8gb2JibGlnYXRvcmkgcGVyIGxhIGZ1bnppb25hbGl0w6AgY29tcGxlc3NpdmEuIExcJ2luY2x1c2lvbmUgZGVnbGkgYWxsZWdhdGkgcHXDsiBlc3NlcmUgZGlzYXR0aXZhdGEgaW1wb3N0YW5kbyBsYSB2b2NlIHN1IDAgbyBjYW5jZWxsYW5kb2xhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ2FtcGkgbWVtb3JpenphdGkgbmVsbFwnaW5kaWNlIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lLCB1dGlsaXp6YXRpIHBlciBhbHRyaSBzY29waSBvbHRyZSBhbGxhIHJpY2VyY2EgZnVsbC10ZXh0LiBQZXIgbGEgZnVuemlvbmFsaXTDoCBjb21wbGV0YSwgdHV0dGkgaSBjYW1waSBzb25vIG9iYmxpZ2F0b3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1BlciBvZ25pIHdlYnNlcnZpY2UgKGNoaWF2ZSkgw6ggcG9zc2liaWxlIGRlZmluaXJlIHVuIGFycmF5IGRpIGNsYXNzaSAodmFsb3JlKSBzdSBjdWkgbGltaXRhcmUgbFwnaW1wb3J0YXppb25lLiBQZXIgdHV0dGUgbGUgY2xhc3NpIHNjZWx0ZSwgbyBwZXIgdHV0dGUgbGUgY2xhc3NpIGVzaXN0ZW50aSwgZ2xpIGF0dHJpYnV0aSBpZGVudGlmaWNhdGl2aSBkb3ZyYW5ubyBlc3NlcmUgc2NlbHRpIG5lbGxhIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludm9jYXRvcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhemlvbmUgZGVsIG1vZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBlciBpbCBsaXZlbGxvIGRpIGludm9jYXppb25lIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYXppb25lIGRlbCBtb2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwZXIgaWwgbGl2ZWxsbyBkaSBpbnZvY2F6aW9uZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhemlvbmUgZGVsIG1vZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBlciBpbCBsaXZlbGxvIGRpIGludm9jYXppb25lIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdTdGF0byBJbmNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdTdGF0byBkZWxsXCdpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGUgZ2xpIHN0YXRpIGRpIGRpc3RyaWJ1emlvbmUgbmVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlIGdsaSBzdGF0aSBkZWdsaSBpbmNpZGVudGkgbmVsbGEgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOdW1lcm8gbWFzc2ltbyBkaSB2b2NpIGRpIGNvbmZpZ3VyYXppb25lIGRhIHZpc3VhbGl6emFyZSBuZWwgcmlzdWx0YXRvIGRpIHF1ZXN0YSBvcGVyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsbyBwZXIgY29udHJvbGxhcmUgaWwgZ3J1cHBvIHJlc3BvbnNhYmlsZSBwZXIgdW5hIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bG8gcGVyIHZlcmlmaWNhcmUgaWwgZ3J1cHBvIHJlc3BvbnNhYmlsZSBkaSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bG8gcGVyIGdlbmVyYXJlIGxlIHN0YXRpc3RpY2hlIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTW9kdWxvIE5vbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWVybyBNb2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtZXJvIGRpIHZvY2kgZGkgY29uZmlndXJhemlvbmUgZGEgdmlzdWFsaXp6YXJlIGluIG9nbmkgcGFnaW5hIGRpIHVuIHJpc3VsdGF0byBkaSByaWNlcmNhIG5lbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVtZXJvIGRpIHZvY2kgZGkgY29uZmlndXJhemlvbmUgZGEgdmlzdWFsaXp6YXJlIGluIG9nbmkgcGFnaW5hIGRpIHVuIHJpc3VsdGF0byBkaSByaWNlcmNhIG5lbGxcJ2ludGVyZmFjY2lhIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09nZ2V0dGkgZGEgY2VyY2FyZSwgcXVhbnRlIHZvY2kgZSBxdWFsaSBhdHRyaWJ1dGkgbW9zdHJhcmUuIEdsaSBhdHRyaWJ1dGkgZGkgQ29uZmlnSXRlbSBkZXZvbm8gZXNzZXJlIG1lbW9yaXp6YXRpIGVzcGxpY2l0YW1lbnRlIHRyYW1pdGUgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnVmlzdGEgR2xvYmFsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgbGUgY2F0ZWdvcmllIGRlbGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgcGVyIGkgZmlsdHJpIGRlbGxlIGNvbG9ubmUgZGVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBwaWNjb2xpLiBOb3RhIGJlbmU6IGltcG9zdGFuZG8gXCdBdHRpdm9cJyBzdSAwLCBzaSBpbXBlZGlyw6AgYWdsaSBhZ2VudGkgZGkgbW9kaWZpY2FyZSBsZSBpbXBvc3RhemlvbmkgZGkgcXVlc3RvIGdydXBwbyBuZWxsZSBsb3JvIHByZWZlcmVuemUgcGVyc29uYWxpLCBtYSBzaSBwZXJtZXR0ZXLDoCBhZ2xpIGFtbWluaXN0cmF0b3JpIGRpIG1vZGlmaWNhcmUgbGUgaW1wb3N0YXppb25pIGRpIHVuIGFsdHJvIHV0ZW50ZS4gVXNhcmUgXCdHcnVwcG8gZGkgcHJlZmVyZW56ZVwnIHBlciBjb250cm9sbGFyZSBpbiBxdWFsZSBhcmVhIHF1ZXN0ZSBpbXBvc3RhemlvbmkgZGV2b25vIGVzc2VyZSB2aXN1YWxpenphdGUgbmVsbFwnaW50ZXJmYWNjaWEgdXRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSSBwYXJhbWV0cmkgcGVyIGdsaSBzdGF0aSBkaSBkaXN0cmlidXppb25lIGNvbG9yYW5vIG5lbGxhIHZpc3RhIGRlbGxlIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgZ2xpIHN0YXRpIGRpIGRpc3RyaWJ1emlvbmUgbmVsbGEgdmlzdGEgZGVsbGUgcHJlZmVyZW56ZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaSBncnVwcGkgZGkgcGVybWVzc2kgZGkgZXNlbXBpbyBkZWdsaSBhdHRyaWJ1dGkgZGVsIGNhdGFsb2dvIGdlbmVyYWxlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIGRlaSBub21pIGRlbGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIG51bWVyaWNvIGRlbGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsZSBwYWdpbmUgKG5lbGxlIHF1YWxpIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBzb25vIG1vc3RyYXRpKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBpbCBtb2R1bG8gc3RyaW5nYSBkaSB2ZXJzaW9uZSBwZXIgbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBwZXIgaWwgbW9kdWxvIGRlbCB0b29sa2l0IGRpIG1vZGVsbGkgZGkgc3RyaW5naGUgZGkgdmVyc2lvbmUgcGVyIGxlIGNsYXNzaSBkaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSB2aXN0YSBwcmVmZXJlbnplIGRlbGxcJ2ludGVyZmFjY2lhIGRlbGxcJ2FnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHBlciBsXCdhdHRpdmF6aW9uZSBkZWxsYSB2ZXJzaW9uZSBwZXIgbGUgY2xhc3NpIGRpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHZpc3RhIHByZWZlcmVuemUgZGVsbFwnaW50ZXJmYWNjaWEgZGVsbFwnYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ0VzZWd1ZSBsXCdhemlvbmUgY29uZmlndXJhdGEgcGVyIG9nbmkgZXZlbnRvIChjb21lIEludm9rZXIpIHBlciBvZ25pIFdlYnNlcnZpY2UgY29uZmlndXJhdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwcG8gZGkgYXV0b3JpenphemlvbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcml6emF6aW9uaSBuZWNlc3NhcmllIHBlciB1dGlsaXp6YXJlIGxcJ2F6aW9uZSBkaSBjb2xsZWdhbWVudG8gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgcmljZXJjYSBkZWdsaSBlbGVtZW50aSBkZWxsYSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcml6emF6aW9uaSBuZWNlc3NhcmllIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSByaWNlcmNhIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBdXRvcml6emF6aW9uaSBuZWNlc3NhcmllIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBkaSB2aXN1YWxpenphemlvbmUgYWQgYWxiZXJvIGRlZ2xpIGVsZW1lbnRpIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtZXNzaSBuZWNlc3NhcmkgcGVyIHV0aWxpenphcmUgbGEgc2NoZXJtYXRhIGRpIHpvb20gZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWVzc2kgbmVjZXNzYXJpIHBlciB1dGlsaXp6YXJlIGxhIHNjaGVybWF0YSBBZ2dpdW5naSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBJVFNNIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQXV0b3JpenphemlvbmkgbmVjZXNzYXJpZSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgSVRTTSBkaSBtYXNzYSBuZWxsXCdpbnRlcmZhY2NpYSBkZWxsXCdhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgbW9kaWZpY2EgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGVsbFwnZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgSVRTTSBkZWxsYSBjcm9ub2xvZ2lhIG5lbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1lc3NpIG5lY2Vzc2FyaSBwZXIgdXRpbGl6emFyZSBsYSBzY2hlcm1hdGEgZGkgc3RhbXBhIGRlbGxcJ2VsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIElUU00gbmVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUHJpdmlsZWdpIHJpY2hpZXN0aSBwZXIgZWxpbWluYXJlIGdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDZXJjYSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0ltcG9zdGEgYXV0b21hdGljYW1lbnRlIGxvIHN0YXRvIGRlbGxcJ2luY2lkZW50ZSBkaSB1biBlbGVtZW50byBkZWxsYSBjb25maWd1cmF6aW9uZSBxdWFuZG8gdW4gdGlja2V0IMOoIGNvbGxlZ2F0byBhIHVuIGVsZW1lbnRvIGRlbGxhIGNvbmZpZ3VyYXppb25lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0ltcG9zdGEgbG8gc3RhdG8gZGkgZGlzdHJpYnV6aW9uZSBuZWxsYSBzY2hlcm1hdGEgZGkgbWFzc2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbXBvc3RhIGxvIHN0YXRvIGRlbGxcJ2luY2lkZW50ZSBuZWxsYSBzY2hlcm1hdGEgaW4gYmxvY2NvIGRlbGxcJ2FydGljb2xvIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IGNoZSBjb25zZW50ZSBkaSBjb2xsZWdhcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgY29uIHVuIGFsdHJvIG9nZ2V0dG8gbmVsbGEgdmlzdGEgem9vbSBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgYWNjZWRlcmUgYWxsYSBjcm9ub2xvZ2lhIGRpIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHBhbm9yYW1pY2EgZGVnbGkgZWxlbWVudGkgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBhY2NlZGVyZSBhbGxhIGNyb25vbG9naWEgZGkgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgdmlzdGEgem9vbSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgZWxpbWluYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHN1YSB2aXN0YSB6b29tIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIHZpc3VhbGl6emFyZSBpIGNvbGxlZ2FtZW50aSBhbGxlIHZvY2kgZGkgY29uZmlndXJhemlvbmUgY29tZSB1bmEgc3RydXR0dXJhIGFkIGFsYmVyby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBkdXBsaWNhcmUgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUgbmVsbGEgcGFub3JhbWljYSBkZWdsaSBlbGVtZW50aSBkaSBjb25maWd1cmF6aW9uZSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIGR1cGxpY2FyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBzdWEgdmlzdGEgem9vbSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBtb2RpZmljYXJlIHVuIGVsZW1lbnRvIGRpIGNvbmZpZ3VyYXppb25lIG5lbGxhIHN1YSB2aXN0YSB6b29tIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1biBjb2xsZWdhbWVudG8gbmVsIG1lbnUgcGVyIHRvcm5hcmUgaW5kaWV0cm8gbmVsbGEgdmlzdGEgem9vbSBkZWxsYSB2b2NlIGRpIGNvbmZpZ3VyYXppb25lIGRlbGxcJ2ludGVyZmFjY2lhIGFnZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW4gY29sbGVnYW1lbnRvIG5lbCBtZW51IHBlciBzdGFtcGFyZSB1biBlbGVtZW50byBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBzdWEgdmlzdGEgem9vbSBkZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVuIGNvbGxlZ2FtZW50byBuZWwgbWVudSBwZXIgaW5ncmFuZGlyZSB1bmEgdm9jZSBkaSBjb25maWd1cmF6aW9uZSBuZWxsYSBwYW5vcmFtaWNhIGRlbGxlIHZvY2kgZGkgY29uZmlndXJhemlvbmUgZGVsbFwnaW50ZXJmYWNjaWEgYWdlbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIGxhIGNyb25vbG9naWEgZGVnbGkgYXJ0aWNvbGkgZGkgY29uZmlndXJhemlvbmUgKG9yZGluZSBpbnZlcnNvKSBuZWxsXCdpbnRlcmZhY2NpYSBhZ2VudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0xhIGNhdGVnb3JpYSBwcmVkZWZpbml0YSBjaGUgdmllbmUgbW9zdHJhdGEgc2Ugbm9uIMOoIHNlbGV6aW9uYXRhIG5lc3N1bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICdMXCdpZGVudGlmaWNhdG9yZSBwZXIgdW4gZWxlbWVudG8gZGkgY29uZmlndXJhemlvbmUsIGFkIGVzLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gTFwnaW1wb3N0YXppb25lIHByZWRlZmluaXRhIMOoIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQXR0aXZhIGF1dG9tYXRpY2FtZW50ZSBsXCdpbnZvY2F0b3JlIGRpIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpb25lIEVzcHJlc3Npb25lIHN0cmluZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2lvbmUgTW9kdWxvIFN0cmluZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnVmVyc2lvbmUgVHJpZ2dlcic7CiAgICAkU2VsZi0+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+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTnVtZXJvIGRpIGludmVudGFyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDb3N0aSBkaSBpbnZlc3RpbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOdW1lcm8gZGkgZmF0dHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1Rhc3RpZXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChkaXNwbGF5IGEgY3Jpc3RhbGxpIGxpcXVpZGkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoZGlvZG8gYSBlbWlzc2lvbmUgbHVtaW5vc2EpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1RlbGVmb25vIGZpc3NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ1BvcnRhdGlsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWRpbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICdMaXZlbGxvIDE6IGxpdmVsbG8gZmlzaWNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xpdmVsbG8gMjogTGl2ZWxsbyBkaSBjb2xsZWdhbWVudG8gZGF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnTGl2ZWxsbyAzOiBsaXZlbGxvIGRpIHJldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnTGl2ZWxsbyAzOiBMaXZlbGxvIGRpIHJldGUgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMaXZlbGxvIDQ6IGxpdmVsbG8gZGkgdHJhc3BvcnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdMaXZlbGxvIDU6IGxpdmVsbG8gZGkgc2Vzc2lvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGl2ZWxsbyA2OiBMaXZlbGxvIGRpIHByZXNlbnRhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICdMaXZlbGxvIDc6IExpdmVsbG8gYXBwbGljYXppb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXR0byBkaSBsb2NhemlvbmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0dG8gZGkgbGljZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnQ2hpYXZlIGRpIGxpY2VuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVGlwbyBkaSBsaWNlbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdQZXJpb2RvIGRpIGxpY2VuemEgZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdQZXJpb2RvIGRpIGxpY2VuemEgZmlubyBhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdCYXR0ZXJpYSBhbCBsaXRpbyBmZXJybyBmb3NmYXRvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWEgYWdsaSBpb25pIGRpIGxpdGlvIChMaS1pb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnQ29udHJhdHRvIGRpIHByZXN0aXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdTaXR1YXRvIGluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ0xvbmdpdHVkaW5lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnUHJvZHV0dG9yZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnQ2FwYWNpdMOgIGRpIGNhcmljbyBtYXNzaW1hIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkaSBtZW1vcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pLVJhY2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJ051bWVybyBkaSBjZWxsdWxhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxlL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWxsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyaXppb25lIGRlbCBtb2RlbGxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ1Jpc29sdXppb25lIGRlbCBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ0RpbWVuc2lvbmkgZGVsIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdNb3VzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnUmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm1hemlvbmkgc3VsbGEgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYXppb25pIHN1bGxhIHJldGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ0xpdmVsbG8gZGkgcmV0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdHRlcmlhIGFsIG5pY2hlbC1jYWRtaW8gKE5pQ2QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnQmF0dGVyaWEgYWwgbmljaGVsLW1ldGFsbG8gaWRydXJvIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdBY2NvcmRvIGRpIG5vbiBkaXZ1bGdhemlvbmUgKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICdUYWNjdWlubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ051bWVybyBkaSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnTnVtZXJvIGRpIG1vZHVsaSBSQU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnTnVtZXJvIGRpIHNjaGVkZSBncmFmaWNoZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTW9uaXRvciBPTEVEIChkaW9kbyBvcmdhbmljbyBhIGVtaXNzaW9uZSBkaSBsdWNlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdDb3N0aSBvcGVyYXRpdmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTnVtZXJvIGRcJ29yZGluZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FsdHJvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdVc2NpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnQWNjb3JkbyBkaSBwYXJ0ZW5hcmlhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOdW1lcm8gZGkgdGVsZWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RpcG8gZGkgdGVsZWZvbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdOdWNsZWkgZmlzaWNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnRXJvZ2F6aW9uZSBkaSBlbmVyZ2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnQWNxdWlzdGF0byBwcmVzc28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1Byb2ZvbmRpdMOgIGRlbCByYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnVW5pdMOgIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdTdGFuemEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTY2hlZGEgU0lNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhdGkgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXR0byBkaSB2ZW5kaXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbGVmb25vIHNhdGVsbGl0YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ0JhdHRlcmlhIGFsIHBpb21ibyBzaWdpbGxhdGEgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdOdW1lcm8gZGkgc2VyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgcGVyIHNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXR0byBkaSBzZXJ2aXppbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ0V0aWNoZXR0YSBkaSBzZXJ2aXppbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUaXBvIGRpIHByZXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdBbHRvcGFybGFudGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0luZGlyaXp6byBJUCBkaSBwYXJ0ZW56YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnSW1tYWdhenppbmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ1BhcnRpemlvbmUgZGkgYXJjaGl2aWF6aW9uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0ZpbGlhbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ1NpbnRlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUaGluIENsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRmlsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ0ZvbGdvcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbGUgZGVsbGEgc2NoZWRhIGdyYWZpY2EgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ1JBTSB0b3RhbGUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciB0b3VjaHNjcmVlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJ1RvcnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdIdWIgVVNCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnQ3VmZmllIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb25vIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/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+eydSdW4gU2VhcmNoJ30gPSAn5qSc57Si44KS5a6f6KGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ+ODl+ODrOODk+ODpeODvOaZguOAgeS7peWJjeOBruODkOODvOOCuOODp+ODs+OCguaknOe0ouWvvuixoeOBqOOBl+OBvuOBmeOBi++8nyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+OCs+ODs+ODleOCo+OCsOmgheebruOBruODhOODquODvOODk+ODpeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+ODh+ODl+OCueODrOODmeODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+OCuuODvOODoOOCpOODsy/jgrrjg7zjg6DjgqLjgqbjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbeOBruacgOWkp+ODquODs+OCr+ODrOODmeODq+OBq+mBlOOBl+OBn++8gSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+ani+aIkOOCouOCpOODhuODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6Dmg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn54++5Zyo44Gu44OH44OX44Ot44Kk44O744K544OG44O844K/44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfnj77lnKjjga7jgqTjg7Pjgrfjg4fjg7Pjg4jjga7jgrnjg4bjg7zjgr/jgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn5pyA57WC5pu05paw5pel5pmCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+acgOe1guabtOaWsOiAhSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ+ioreWumumgheebric7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICfoqK3lrprpoIXnm67mpJzntKInOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfku6XkuIvjga7jgq/jg6njgrnjgYzjgqTjg7Pjg53jg7zjg4jjgZXjgozjgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn5Lul5LiL44Gu5b255Ymy44GM44Kk44Oz44Od44O844OI44GV44KM44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ+WvvuW/nOOBmeOCi+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODieOBqEdlbmVyYWxDYXRhbG9n44Kv44Op44K544KC5L2c5oiQ44GV44KM44CB6Ieq5YuV55qE44Gr5YmK6Zmk44GV44KM44Gq44GE44GT44Go44Gr5rOo5oSP44GX44Gm44GP44Gg44GV44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn57aa6KGM44GX44G+44GZ44GL77yfJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0V4YW1wbGVDbGFzc2Vz44GM5b+F6KaB77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ+Wumue+qeOBr+acieWKueOBqiBZQU1MIOODj+ODg+OCt+ODpeOBp+OBr+OBguOCiuOBvuOBm+OCk+OAgic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ+S4gOimpzog5qeL5oiQ44Ki44Kk44OG44OgJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JROOBjOaMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ+WwkeOBquOBj+OBqOOCgjHjgaTjga7pgbjmip7jgZXjgozjgZ/mp4vmiJDjgqLjgqTjg4bjg6DjgYzlv4XopoHjgafjgZnvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfjgZPjga7mp4vmiJDjgqLjgqTjg4bjg6Djgbjjga7mm7jjgY3ovrzjgb/jgqLjgq/jgrvjgrnmqKnjgYzjgYLjgorjgb7jgZvjgpM6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ+OCr+ODqeOCuSVz44Gu5a6a576p44GM5a6a576p44GV44KM44Gm44GE44G+44Gb44KT77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6AgIiVzIuOBjOODh+ODvOOCv+ODmeODvOOCueOBq+imi+OBpOOBi+OCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ+ani+aIkOOCouOCpOODhuODoElEJXPjgpLliYrpmaTjgafjgY3jgb7jgZvjgpPjgafjgZfjgZ/vvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ0NvbmZpZ0l0ZW1JRCVz44Gu44OQ44O844K444On44Oz44GM6KaL44Gk44GL44KK44G+44Gb44KT77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JROOAgUR1cGxpY2F0ZUlE44CBQ2xhc3NJROOBr+aMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn44Ki44Kv44K744K55qip44Gv44GC44KK44G+44Gb44KT77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+WxpeattOOCkuihqOekuuOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OBjOOAgUNvbmZpZ0l0ZW1JROOBr+aMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+WxpeattOOCkuihqOekuuOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAguOCouOCr+OCu+OCueaoqeOBr+S4juOBiOOCieOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn5paw44GX44GE5qeL5oiQ44Ki44Kk44OG44OgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn5paw44GX44GE44OQ44O844K444On44Oz77yISUQgPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn44OH44OX44Ot44Kk44O744K544OG44O844K/44K544GM5pu05paw44GV44KM44G+44GX44Gf44CC77yI5paw6KaPPSVz44CB5YmNPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOeKtuaFi+OBjOabtOaWsOOBleOCjOOBvuOBl+OBn++8iOaWsOimjz0lc+OAgeWPpOOBhD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuWJiumZpCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJXPvvIjjgr/jgqTjg5c9JXPvvInjgbjjga7jg6rjg7Pjgq/jgYzov73liqDjgZXjgozjgb7jgZfjgZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyVz77yI44K/44Kk44OXPSVz77yJ44G444Gu44Oq44Oz44Kv44GM5YmK6Zmk44GV44KM44G+44GX44GfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVt5a6a576p44GM5pu05paw44GV44KM44G+44GX44Gf77yISUQgPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn5ZCN5YmN44GM5pu05paw44GV44KM44G+44GX44Gf77yI5paw6KaPPSVz44CB5Y+k44GEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn5bGe5oCnJXPjgYwgIiVzIuOBi+OCiSAiJXMi44Gr5pu05paw44GV44KM44G+44GX44GfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ+ODkOODvOOCuOODp+ODsyVz44GM5YmK6Zmk44GV44KM44G+44GX44GfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JROOBvuOBn+OBr1ZlcnNpb25JROOBr+aMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLooajnpLrjgafjgY3jgb7jgZvjgpPjgILjgqLjgq/jgrvjgrnmqKnjga/jgYLjgorjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQlc+OBr+ODh+ODvOOCv+ODmeODvOOCueOBq+imi+OBpOOBi+OCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn5qeL5oiQ44Ki44Kk44OG44OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICclc+OBpyVz44Gn5Y2w5Yi344GV44KM44G+44GX44GfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfnlKjkvosnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdDbGFzc0lE44GM54Sh5Yq544Gn44GZ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ2xhc3NJROOBr+aMh+WumuOBleOCjOOBpuOBhOOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ+OBk+OBruOCr+ODqeOCueOBruOCouOCr+OCu+OCueaoqeOBr+OBguOCiuOBvuOBm+OCk++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn57WQ5p6c44Gq44GXISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruaknOe0oue1kOaenCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44KS6KGo56S644Gn44GN44G+44Gb44KT44CC5qeL5oiQ44Ki44Kk44OG44Og44Gu44Ki44Kv44K744K55qip44Gv5LiO44GI44KJ44KM44Gm44GE44G+44Gb44KT77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW3jgYzopovjgaTjgYvjgorjgb7jgZvjgpPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAn44OQ44O844K444On44Oz44Gv6KaL44Gk44GL44KK44G+44Gb44KT44Gn44GX44Gf77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn6YCa5bi46YGL55SoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICforablkYonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfjgqTjg7Pjgrfjg4fjg7Pjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+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+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAn44OZ44O844K55qeL6YCg44GM54Sh5Yq544Gn44GZ44CCWUFNTOW9ouW8j+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/jgorjga7mnIDlpKfmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAn44OQ44O844K444On44Oz5paH5a2X5YiXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ+Wumue+qeOBruWQjOacn+OBq+OCqOODqeODvOOBjOeZuueUn+OBl+OBvuOBl+OBn+OAguODreOCsOOCkueiuuiqjeOBl+OBpuOBj+OBoOOBleOBhOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0lUU01Db25maWdJdGVt44Gu5a6a576p44GM5ZCM5pyf44GV44KM44Gm44GE44G+44Gb44KT44CCSVRTTUNvbmZpZ0l0ZW3jga7li5XnmoTjg5XjgqPjg7zjg6vjg4njga7lpInmm7TjgpLlsZXplovjgZfjgabjgY/jgaDjgZXjgYTjgIInOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+acn+mZkOWIh+OCjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ+ODoeODs+ODhuODiuODs+OCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ+ODkeOCpOODreODg+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn6KiI55S7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+S/rueQhic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn5byV6YCAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+ODrOODk+ODpeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn44OG44K544OIIC8gUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ+amguimgeOBqOeiuuiqjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICfjgq/jg6njgrkv5b255Ymy44Go44Gd44Gu6Zai6YCj44OV44Kj44O844Or44OJ44Gu44Kk44Oz44Od44O844OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn44Kv44Op44K544Gu44Kk44Oz44Od44O844OI5Lit44Gr44Ko44Op44O844GM55m655Sf44GX44G+44GX44Gf44CCJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDpnZ7ooajnpLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIOihqOekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qSc57Si44Gr44GK44GE44Gm44CB5ouh5by15qSc57Si5p2h5Lu244KS6Kix5Y+v44GX44G+44GZ44CC44GT44Gu5qmf6IO944Gr44KI44KK44CBIigqa2V5MSomKmtleTIqKSAi44KEIigqa2V5MSp8KmtleTIqKSAi44Gu44KI44GG44Gq5p2h5Lu244Gn6Kit5a6a6aCF55uu5ZCN44KS5qSc57Si44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ+OCq+OCueOCv+ODnuODvOOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruioreWumumgheebruaknOe0ouOBq+OBiuOBhOOBpuOAgeaknOe0ouadoeS7tuOCkuaLoeW8teOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAguOBk+OBruapn+iDveOCkuS9v+eUqOOBmeOCi+OBqOOAgSIoKmtleTEqJiprZXkyKikgIuOBvuOBn+OBryIoKmtleTEqfCprZXkyKikgIuOBruOCiOOBhuOBquadoeS7tuOBp+ioreWumumgheebruWQjeOCkuaknOe0ouOBp+OBjeOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICflibLjgorlvZPjgabjgonjgozjgZ9DSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAn6aGn5a6i5LyB5qWt44Gr5Ymy44KK5b2T44Gm44KJ44KM44GfQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfpoaflrqLjg6bjg7zjgrbjg7zjgavlibLjgorlvZPjgabjgonjgozjgZ9DSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQuOBruioreWumic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn5ZCM44GYQ29uZmlnSXRlbeOCr+ODqeOCue+8iCBcJ2NsYXNzXCfvvInlhoXjgb7jgZ/jga/jgrDjg63jg7zjg5Djg6vvvIggXCdnbG9iYWxcJ++8ieWGheOBp+OBruOBv+S4gOaEj+OBruWQjeWJjeOCkueiuuiqjeOBl+OBvuOBmeOAguOBk+OCjOOBr+OAgemHjeikh+OCkuaknOe0ouOBmeOCi+OBqOOBjeOBq+aXouWtmOOBrkNvbmZpZ0l0ZW3jgYzjgZnjgbnjgabogIPmha7jgZXjgozjgovjgZPjgajjgpLmhI/lkbPjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ+WRveWQjeOCueOCreODvOODoOOCkuW8t+WItuOBmeOCi+ODouOCuOODpeODvOODq+OCkumBuOaKnuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAn55Wq5Y+344K544Kt44O844Og44KS5by35Yi244GZ44KL44Oi44K444Ol44O844Or44KS6YG45oqe44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ+ODkOODvOOCuOODp+ODs+aWh+Wtl+WIl+OCueOCreODvOODoOOCkuW8t+WItuOBmeOCi+ODouOCuOODpeODvOODq+OCkumBuOaKnuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ+aWsOOBl+OBhOODkOODvOOCuOODp+ODs+OCkuS9nOaIkOOBmeOCi+ODiOODquOCrOODvOOBqOOBquOCi+WxnuaAp+OCkumBuOaKnuOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfjgZPjga7oqK3lrprpoIXnm67jgq/jg6njgrnjgavlibLjgorlvZPjgabjgovjgqvjg4bjgrTjg6rjgpLpgbjmip7jgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdDb25maWdJdGVt5qaC6KaB44Gu44Kr44Op44Og6Kit5a6a6aCF55uu44OV44Kj44Or44K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7oqK3lrprpoIXnm67mpoLopoHjgafjg5XjgqPjg6vjgr/jg6rjg7PjgrDjgafjgY3jgovliJfjgILms6jmhI86IOOCs+ODs+ODleOCo+OCsOmgheebruWxnuaAp+OBqOWLleeahOODleOCo+ODvOODq+ODiSAoRHluYW1pY0ZpZWxkX05hbWVYKSDjga7jgb/oqLHlj6/jgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn5qeL5oiQ44Ki44Kk44OG44OgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLov73liqDjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLkv67mraPjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIVXZWLjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7lsaXmrbTjgpLoqJjpjLLjgZnjgovmp4vmiJDjgqLjgqTjg4bjg6Djga7jgqTjg5njg7Pjg4jjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn44Kz44Oz44OV44Kj44Kw6aCF55uu44KS54++5Zyo44Gu5a6a576p44Gr5pu05paw44GZ44KL44Kz44Oz44OV44Kj44Kw6aCF55uu44Kk44OZ44Oz44OI44Oi44K444Ol44O844Or44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q20JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOCkuWNsOWItyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruOCuuODvOODoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ+ioreWumumgheebruODhOODquODvOODk+ODpeODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfoqK3lrprpoIXnm67jg5Djg7zjgrjjg6fjg7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAn5Lul5LiL44Gu44Kv44Op44K544GuQ29uZmlnSXRlbXPjga9FbGFzdGljc2VhcmNo44K144O844OQ44Gr5L+d5a2Y44GV44KM44G+44Gb44KT44CC5pei5a2Y44GuQ0njgavpgannlKjjgZnjgovjgavjga/jgIHjgZPjga7jgqrjg5fjgrfjg6fjg7PjgpLlpInmm7TjgZfjgZ/lvozjgavjgIHjgrPjg7Pjgr3jg7zjg6vntYznlLHjgadDSeODnuOCpOOCsOODrOODvOOCt+ODp+ODs+OCkuWun+ihjOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfku6XkuIvjga7jg4fjg5fjg63jgqTnirbmhYvjga5Db25maWdJdGVtc+OBr+OAgUVsYXN0aWNzZWFyY2jjgrXjg7zjg5Djgavkv53lrZjjgZXjgozjgb7jgZvjgpPjgILml6LlrZjjga5DSeOBq+mBqeeUqOOBmeOCi+OBq+OBr+OAgeOBk+OBruOCquODl+OCt+ODp+ODs+OCkuWkieabtOOBl+OBn+W+jOOBq+OAgeOCs+ODs+OCveODvOODq+e1jOeUseOBp0NJ44Oe44Kk44Kw44Os44O844K344On44Oz44KS5a6f6KGM44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruWItumZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn44Oa44O844K444GC44Gf44KK44Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu6KGo56S65Yi26ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfmp4vmiJDnrqHnkIbjg4fjg7zjgr/jg5njg7zjgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruS4gOaLrOODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7mpJzntKLjg5Djg4Pjgq/jgqjjg7Pjg4njg6vjg7zjgr/jg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn5qeL5oiQ44Ki44Kk44OG44Og44Gu5L2c5oiQ44Go566h55CG44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn54m55a6a44Gu5pmC54K544GnQ29uZmlnSXRlbXPjga7jg4HjgrHjg4Pjg4jjgpLkvZzmiJDjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn6aGn5a6i44Gv6YGO5Y6744GuQ0njg5Djg7zjgrjjg6fjg7PjgpLopovjgovjgZPjgajjgYzjgafjgY3jgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn6aGn5a6i44Gv44CB6YGO5Y6744GuQ0njg5Djg7zjgrjjg6fjg7PjgpLmiYvli5XjgafliIfjgormm7/jgYjjgovjgZPjgajjgYzjgafjgY3jgovjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfoqK3lrprpoIXnm67mpJzntKLnlLvpnaLjga7lsZ7mgKfjgafkvb/nlKjjgZnjgovjg4fjg5Xjgqnjg6vjg4jjg4fjg7zjgr/jgILkvovvvJoiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9Mjsi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn44Kz44Oz44OV44Kj44Kw6aCF55uu5qSc57Si55S76Z2i44Gu5bGe5oCn44Gn5L2/55So44GZ44KL44OH44OV44Kp44Or44OI44OH44O844K/44CC5L6L77yaIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn44Oq44Oz44Kv44GV44KM44Gf44Kq44OW44K444Kn44Kv44OIIOOCpuOCo+OCuOOCp+ODg+ODiCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpIOOBp+ioreWumuODnOOCv+ODs+OBjOS9v+eUqOOBp+OBjeOCi+OCouOCr+OCt+ODp+ODs+OCkuWumue+qeOBl+OBvuOBmeOAguOBk+OCjOOCieOBruOCouOCr+OCt+ODp+ODs+OBq+OBr+OAgUNvcmUuQWxsb2NhdGlvbkxpc3QuY3Nz44CBQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc+OAgUNvcmUuVUkuVGFibGUuU29ydC5qc+OAgUNvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpz44CB44GK44KI44GzIENvcmUuQWdlbnQuTGlua09iamVjdC5qcyDjga4gSlMg44GK44KI44GzIENTUyDjg5XjgqHjgqTjg6vjgYznmbvpjLLjgZXjgozjgabjgYTjgovlv4XopoHjgYzjgYLjgovjgZPjgajjgavms6jmhI/jgZfjgabjgY/jgaDjgZXjgYTjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ+ODkOODvOOCuOODp+ODs+aWh+Wtl+WIl+eUqOOBriBUZW1wbGF0ZTo6VG9vbGtpdCDjgrnjgq3jg7zjg6DjgpLlrprnvqnjgZfjgb7jgZnjgILjg5Djg7zjgrjjg6fjg7PmloflrZfliJfjg6Ljgrjjg6Xjg7zjg6vjgYwgVGVtcGxhdGVUb29sa2l0IOOBq+ioreWumuOBleOCjOOBpuOBhOOCi+WgtOWQiOOBq+OBruOBv+S9v+eUqOOBleOCjOOBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn6aGn5a6i44GM6Kit5a6a6aCF55uu44KS6KaL44KL44GT44Go44KS6Kix5Y+v44GV44KM44KL5LiA6YCj44Gu5p2h5Lu244KS5a6a576p44GX44G+44GZ44CC5p2h5Lu244Gv44CB44Kq44OX44K344On44Oz44Gn54m55a6a44Gu6aGn5a6i44Kw44Or44O844OX44Gr5Yi26ZmQ44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CC5ZCN5YmN44Gv5ZSv5LiA44Gu5b+F6aCI5bGe5oCn44Gn44GZ44CC5LuW44Gu44Kq44OX44K344On44Oz44GM5oyH5a6a44GV44KM44Gm44GE44Gq44GE5aC05ZCI44CB44GZ44G544Gm44Gu6Kit5a6a6aCF55uu44GM44Gd44Gu44Kr44OG44K044Oq44Gu5LiL44Gr6KGo56S644GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfjgrjjgqfjg43jg6rjg4Pjgq/jg7vjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjgpLmtLvnlKjjgZfjgabmp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCuOOCp+ODjeODquODg+OCr+OCpOODs+OCv+ODvOODleOCp+OCpOOCueOCkua0u+eUqOOBl+OBpuani+aIkOOCouOCpOODhuODoOOCkuWPluW+l+OBmeOCi+aoqemZkOOCkuWumue+qeOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn44K444Kn44ON44Oq44OD44Kv44Kk44Oz44K/44O844OV44Kn44Kk44K544KS5rS755So44GX44Gm5qeL5oiQ44Ki44Kk44OG44Og44KS5qSc57Si44GZ44KL5qip6ZmQ44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdHZW5lcmljIEludGVyZmFjZeOCkuS9v+eUqOOBl+OBpklUU03mp4vmiJDpoIXnm67jgpLoqK3lrprjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44KS5a6a576p44GX44Gm44CB5qeL5oiQ44Ki44Kk44OG44Og44Gu44Oq44K544OI44Gu5bCP44GV44Gq44OT44Ol44O844KS6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ+ODjuODvOODieOBruaOpee2muOBq+ODquODs+OCr+OCv+OCpOODl+OBruODqeODmeODq+OCkuihqOekuuOBmeOCi+OBi+OBqeOBhuOBi+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn5ZCEQ29uZmlnSXRlbeOCr+ODqeOCueOBruato+imj+ihqOePvuOCkuWAi+WIpeOBq+Wumue+qeOBl+OBpuOAgUNvbmZpZ0l0ZW3lkI3jgpLnorroqo3jgZfjgIHlr77lv5zjgZnjgovjgqjjg6njg7zjg6Hjg4Pjgrvjg7zjgrjjgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSeOCr+ODqeOCueOBq+W/nOOBmOOBpuOAgeioreWumumgheebruOBruamguimgeOBp+WIqeeUqOWPr+iDveOBqkNJ44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC5ZCE6aCF55uu44Gv44CB44Kv44Op44K55ZCN44Go44CB5a++5b+c44GZ44KL44Kv44Op44K544Gn5Yip55So5Y+v6IO944Gq44OV44Kj44O844Or44OJ44Gu6YWN5YiX44GL44KJ5qeL5oiQ44GV44KM44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CC5YuV55qE44OV44Kj44O844Or44OJ44Gu44Ko44Oz44OI44Oq44Gv44CBRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDjgrnjgq3jg7zjg6DjgavlvpPjgo/jgarjgZHjgozjgbDjgarjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODleOCp+ODvOOCueOBruioreWumumgheebruaknOe0oue1kOaenOOBruioreWumumgheebruOCveODvOODiOOBruODh+ODleOCqeODq+ODiOOBruioreWumumgheebruWxnuaAp+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qSc57Si57WQ5p6c44Gu6Kit5a6a6aCF55uu44K944O844OI44Gu44OH44OV44Kp44Or44OI44Gu6Kit5a6a6aCF55uu5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn44GT44Gu5pON5L2c44Gu44Kz44Oz44OV44Kj44Kw6aCF55uu5qSc57Si57WQ5p6c44Gu44Kz44Oz44OV44Kj44Kw6aCF55uu44K944O844OI44Gu44OH44OV44Kp44Or44OI44Gu44Kz44Oz44OV44Kj44Kw6aCF55uu5bGe5oCn44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7oqK3lrprpoIXnm67mpJzntKLntZDmnpzjga7jg4fjg5Xjgqnjg6vjg4jjga7oqK3lrprpoIXnm67poIbluo/jgpLlrprnvqnjgZfjgb7jgZnjgILkuIo6IOacgOOCguWPpOOBhOOCguOBruOBjOS4iuOAgkRvd246IOacgOaWsOOBjOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn44Kr44K544K/44Oe44Kk44Oz44K/44OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qSc57Si57WQ5p6c44Gu44OH44OV44Kp44Or44OI44Gu6Kit5a6a6aCF55uu6aCG5bqP44KS5a6a576p44GX44G+44GZ44CC5LiKOiDlj6TjgYTpoIbjgavooajnpLrjgZXjgozjgb7jgZnjgILkuIvvvJrmnIDmlrDjgYzkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn44GT44Gu5pON5L2c44Gu44Kz44Oz44OV44Kj44Kw6aCF55uu5qSc57Si57WQ5p6c44Gu44OH44OV44Kp44Or44OI44Gu44Kz44Oz44OV44Kj44Kw6aCF55uu6aCG5bqP44KS5a6a576p44GX44G+44GZ44CCVXA65Y+k44GE6aCG44CCRG93bu+8muacgOaWsOOBjOS4iuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnQ0njgq/jg6njgrnjgavlv5zjgZjjgabjgIHoqK3lrprpoIXnm67jga7mpoLopoHjgavooajnpLrjgZXjgozjgotDSeOBruODh+ODleOCqeODq+ODiOOBruWIl+OCkuWumue+qeOBl+OBvuOBmeOAguWQhOmgheebruOBr+OAgeOCr+ODqeOCueWQjeOBqOOAgeWvvuW/nOOBmeOCi+OCr+ODqeOCueOBp+WIqeeUqOWPr+iDveOBquODleOCo+ODvOODq+ODieOBrumFjeWIl+OBi+OCieani+aIkOOBleOCjOOBquOBkeOCjOOBsOOBquOCiuOBvuOBm+OCk+OAguWLleeahOODleOCo+ODvOODq+ODieOBruOCqOODs+ODiOODquOBr+OAgUR5bmFtaWNGaWVsZF9GaWVsZE5hbWXjgrnjgq3jg7zjg6DjgavlvpPjgo/jgarjgZHjgozjgbDjgarjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn6KGo56S644GV44KM44KL44OH44OV44Kp44Or44OI44Gu6Zai5L+C44Gu5rex44GV44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+ioreWumumgheebruaknOe0oueUu+mdouOBruODh+ODleOCqeODq+ODiOOBruihqOekuuioreWumumgheebruaknOe0ouWxnuaAp+OCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn44Kz44Oz44OV44Kj44Kw6aCF55uu5qSc57Si55S76Z2i44Gr44OH44OV44Kp44Or44OI44Gn6KGo56S644GV44KM44KL44Kz44Oz44OV44Kj44Kw6aCF55uu5qSc57Si5bGe5oCn44KS5a6a576p44GX44G+44GZ44CC5L6LOiAiS2V5ICLjgavjga/jg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4njga7lkI3liY0gKOOBk+OBruWgtOWQiOOBryBcJ1hcJynjgIEiQ29udGVudCIg44Gr44Gv44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44Gu44K/44Kk44OX44Gr5b+c44GY44Gm44OA44Kk44OK44Of44OD44Kv44O744OV44Kj44O844Or44OJ44Gu5YCk44CBVGV4dDogXCdhIHRleHRcJ+OAgURyb3Bkb3duOiBcJzFcJ+OAgURhdGUvVGltZe+8mlwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMO+8m1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDHvvJtTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU577ybXCfjgIHjgb7jgZ/jga8gXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAn5qeL5oiQ44Ki44Kk44OG44Og44Gu44Kv44Op44K544Gu44OH44OV44Kp44Or44OI44Gu44K144OW44Kq44OW44K444Kn44Kv44OI44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSeOCr+ODqeOCueOBq+W/nOOBmOOBpuOAgeioreWumumgheebruOBruamguimgeOBp+WIqeeUqOWPr+iDveOBqkNJ44Gu5YiX44KS5a6a576p44GX44G+44GZ44CC5ZCE6aCF55uu44Gv44CB44Kv44Op44K55ZCN44Go44CB5a++5b+c44GZ44KL44Kv44Op44K544Gn5Yip55So5Y+v6IO944Gq44OV44Kj44O844Or44OJ44Gu6YWN5YiX44GL44KJ5qeL5oiQ44GV44KM44Gq44GR44KM44Gw44Gq44KK44G+44Gb44KT44CC5YuV55qE44OV44Kj44O844Or44OJ44Gu44Ko44Oz44OI44Oq44Gv44CBRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDjgrnjgq3jg7zjg6DjgavlvpPjgo/jgarjgZHjgozjgbDjgarjgorjgb7jgZvjgpPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn44GT44Gu55S76Z2i44Gu44Oq44OD44OBIOODhuOCreOCueODiCDjgqjjg4fjgqPjgr/jg7wg44Kz44Oz44Od44O844ON44Oz44OI44Gu6auY44GV44KS5a6a576p44GX44G+44GZ44CC5pWw5YCkICjjg5Tjgq/jgrvjg6spIOOBvuOBn+OBr+ODkeODvOOCu+ODs+ODiOWApCAo55u45a++KSDjgpLlhaXlipvjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn566h55CG44Kk44Oz44K/44O844OV44Kn44Kk44K5IENsIOWumue+qeOCqOODh+OCo+OCv+OBruihjOaVsOOCkuWumue+qeOBmeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfjgqTjg7Pjgrfjg4fjg7Pjg4jnirbmhYvjga7pq5jvvIjkvos6IOWNsemZuu+8ieOBi+OCieS9ju+8iOS+izog5oOF5aCx77yJ44G444Gu44Kk44Oz44K344OH44Oz44OI54q25oWL44Gu6aCG5bqP44KS5a6a576p44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn44Oq44Oz44Kv44GV44KM44Gf44OB44Kx44OD44OI44GMQ0njga7jgrnjg4bjg7zjgr/jgrnjgavlvbHpn7/jgpLkuI7jgYjjgovlj6/og73mgKfjgYzjgYLjgovjgIHplqLpgKPjgZnjgovjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6Djga7nlLvpnaLjga7mpJzntKLliLbpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6Djga7mpJzntKLnlLvpnaLjga7mpJzntKLliLbpmZDjgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtIOeUu+mdouOBruaknOe0ouWItumZkOOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gg55S76Z2i44Gu5qSc57Si5Yi26ZmQ44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ+WFqOOBpuOBriBDSSDjgq/jg6njgrnjga7jg6rjg7Pjgq8g44OG44O844OW44Or6KSH5ZCI44OT44Ol44O844Gr6KGo56S644GV44KM44KLIENJIOOBruWIl+OCkuWumue+qeOBl+OBvuOBmeOAgiDjgqjjg7Pjg4jjg6rjgYzjgarjgYTloLTlkIjjga/jgIHjg4fjg5Xjgqnjg6vjg4jjga7liJfjgYzooajnpLrjgZXjgozjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0NJIOOCr+ODqeOCueOBq+W/nOOBmOOBpuOAgeODquODs+OCryDjg4bjg7zjg5bjg6vopIflkIjjg5Pjg6Xjg7zjgavooajnpLrjgZXjgozjgosgQ0kg44Gu5YiX44KS5a6a576p44GX44G+44GZ44CCIOWQhOOCqOODs+ODiOODquOBq+OBr+OAgeOCr+ODqeOCueWQjeOBqOS6jOmHjeOCs+ODreODs+OCkuaOpemgrei+nuOBqOOBl+OBpuS7mOOBkeOCi+W/heimgeOBjOOBguOCiuOBvuOBmSAo5L6LOiBDb21wdXRlcjo6KeOAguWFqOOBpuOBriBDSSDjgavlhbHpgJrjgZnjgosgQ0kg5bGe5oCn44GM44GE44GP44Gk44GL44GC44KK44G+44GZ44CCICjjgq/jg6njgrkgQ29tcHV0ZXIg44Gu5L6LOiBDb21wdXRlcjo6TmFtZeOAgUNvbXB1dGVyOjpDdXJEZXBsU3RhdGXjgIFDb21wdXRlcjo6Q3JlYXRlVGltZSnjgIAgQ0kg5a6a576p44Gn5a6a576p44GV44KM44Gm44GE44KL5YCL44CF44GuIENJIOWxnuaAp+OCkuihqOekuuOBmeOCi+OBq+OBr+OAgeasoeOBruOCueOCreODvOODoOOCkuS9v+eUqOOBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmSAo44Kv44Op44K5IENvbXB1dGVyIOOBruS+iyk6IENvbXB1dGVyOjpIYXJkRGlzazo6MeOAgUNvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjHjgIAgQ0kg44Kv44Op44K544Gu44Ko44Oz44OI44Oq44GM44Gq44GE5aC05ZCI44Gv44CB44OH44OV44Kp44Or44OI44Gu5YiX44GM6KGo56S644GV44KM44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSDmp4vmiJDpoIXnm64gQUNMIOani+mAoOOBruesrCAzIOODrOODmeODq+OBp+OAgeOAjOOCouOCr+OCt+ODp+ODs+OAjeOBq+S9v+eUqOOBp+OBjeOCi+mgheebruOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g5qeL5oiQ6aCF55uuIEFDTCDmp4vpgKDjga7nrKwgMSDjg6zjg5njg6vjgafliKnnlKjlj6/og73jgarpoIXnm67jgpLlrprnvqnjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSDmp4vmiJDpoIXnm64gQUNMIOani+mAoOOBruesrCAyIOODrOODmeODq+OBp+WIqeeUqOWPr+iDveOBqumgheebruOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfjg6rjg7Pjgq/jgZXjgozjgZ9DSeOBruOCueODhuODvOOCv+OCueOBq+W9semfv+OBmeOCi+ODquODs+OCr+OBruOCv+OCpOODl++8iOODgeOCseODg+ODiOOBruims+eCueOBi+OCieWQjeWJjeOBjOS7mOOBkeOCieOCjOOBvuOBme+8ieOCkuWumue+qeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+ODquODs+OCr+OBleOCjOOBn0NJ44Gu44K544OG44O844K/44K544Gr5b2x6Z+/44GZ44KL44OB44Kx44OD44OI44Gu44K/44Kk44OX44KS5a6a576p44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAn5a6a576p44Gu5pu05pawJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAn44OH44OX44Or44K544OG44O844OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICfjg4fjg5fjg63jgqTjg7vjgrnjg4bjg7zjgr/jgrnjga7jgqvjg6njg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn5bGV6ZaL54q25oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ+OCs+ODlOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ+ODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODieODu+OCpOODmeODs+ODiOODu+ODouOCuOODpeODvOODq+OBr+OAgeODgOOCpOODiuODn+ODg+OCr+ODu+ODleOCo+ODvOODq+ODieOBjOWkieabtOOBleOCjOOBn+WgtOWQiOOAgeOCs+ODs+ODleOCo+OCsOODu+OCouOCpOODhuODoOOBruWumue+qeOBjOWQjOacn+OBleOCjOOBpuOBhOOBquOBhOOBqOODnuODvOOCr+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544GuIElUU03jg5XjgqPjg7zjg6vjg4nnlLvpnaLjgavooajnpLrjgZnjgovjg4DjgqTjg4rjg5/jg4Pjgq/jg7vjg5XjgqPjg7zjg6vjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6aGn5a6i44Kk44Oz44K/44O844OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qaC6KaB55S76Z2i44Gr6KGo56S644GV44KM44KL5YuV55qE44OV44Kj44O844Or44OJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruioreWumumgheebruaknOe0oueUu+mdouOBq+ihqOekuuOBleOCjOOCi+WLleeahOODleOCo+ODvOODq+ODieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfmi4XlvZPogIXjg5Xjg63jg7Pjg4jjgqjjg7Pjg4njgYzkuIDluqbjgavopIfmlbDjga7oqK3lrprpoIXnm67jgafmqZ/og73jgZnjgovjgojjgYbjgavoqK3lrprpoIXnm67kuIDmi6zmk43kvZzmqZ/og73jgpLmnInlirnjgavjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ+ODquOCueODiOOBleOCjOOBn+OCsOODq+ODvOODl+OBruani+aIkOOCouOCpOODhuODoOS4gOaLrOWHpueQhuapn+iDveOBruOBv+OCkuacieWKueOBq+OBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdJVFNN44Gu6Kit5a6a6aCF55uu44GM5LiA5oSP44Gq5ZCN5YmN44Gn44GC44KL44GL44Gp44GG44GL44KS44OB44Kn44OD44Kv44GZ44KL5qmf6IO944Gu5pyJ5Yq5L+eEoeWKueOCkuioreWumuOBl+OBvuOBmeOAguOBk+OBruOCquODl+OCt+ODp+ODs+OCkuacieWKueOBq+OBmeOCi+WJjeOBq+OAgemHjeikh+OBl+OBn+WQjeWJjeOCkuaMgeOBpOaXouWtmOOBruioreWumumgheebruOBjOOBquOBhOOBi+OCt+OCueODhuODoOOCkuODgeOCp+ODg+OCr+OBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAguOBk+OCjOOBr+OAgeOCs+ODs+OCveODvOODq+OCs+ODnuODs+ODiSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMg44Gn5a6f6KGM44Gn44GN44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ+ODgeOCseODg+ODiOani+aIkOOCouOCpOODhuODoOOBruODquODs+OCr+OBq+ani+aIkOOCouOCpOODhuODoOOBruOCueODhuODvOOCv+OCueOCkuioreWumuOBmeOCi+OCpOODmeODs+ODiOODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICflhajmlofmpJzntKLjgavkvb/nlKjjgZXjgozjgovoqK3lrprpoIXnm67jgqTjg7Pjg4fjg4Pjgq/jgrnjga7jg5XjgqPjg7zjg6vjg4njgILjg5XjgqPjg7zjg6vjg4njgoLkv53lrZjjgZXjgozjgb7jgZnjgYzjgIHlhajkvZPnmoTjgarmqZ/og73jgavjga/lv4XpoIjjgafjga/jgYLjgorjgb7jgZvjgpPjgILjgqjjg7Pjg4jjg6rjgpIgMCDjgavoqK3lrprjgZnjgovjgYvjgIHliYrpmaTjgZnjgovjgZPjgajjgafjgIHmt7vku5jjg5XjgqHjgqTjg6vjga7jgqTjg7Pjgq/jg6vjg7zjg4njgpLnhKHlirnjgavjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ+ioreWumumgheebruOCpOODs+ODh+ODg+OCr+OCueOBq+agvOe0jeOBleOCjOOCi+ODleOCo+ODvOODq+ODieOBp+OAgeWFqOaWh+aknOe0ouS7peWkluOBq+S9v+eUqOOBleOCjOOCi+OAguWujOWFqOOBquapn+iDveOBruOBn+OCgeOBq+OAgeOBmeOBueOBpuOBruODleOCo+ODvOODq+ODieOBr+W/hemgiOOBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ+WQhFdlYuOCteODvOODk+OCuSjjgq3jg7wp44Gr5a++44GX44Gm44CB44Kk44Oz44Od44O844OI44KS5Yi26ZmQ44GZ44KL44Kv44Op44K544Gu6YWN5YiXKOWApCnjgpLlrprnvqnjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgILpgbjmip7jgZXjgozjgZ/jgZnjgbnjgabjga7jgq/jg6njgrnjgIHjgYLjgovjgYTjga/ml6LlrZjjga7jgZnjgbnjgabjga7jgq/jg6njgrnjgavjgaTjgYTjgabjgIHjgqTjg7Pjg5zjg7zjgqvjga7oqK3lrprjgaforZjliKXlsZ7mgKfjgpLpgbjmip7jgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIGludm9rZXLjg6zjgqTjg6Tjg7zjga5HZW5lcmljSW50ZXJmYWNl44Oi44K444Ol44O844Or55m76Yyy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnQ29uZmlnSXRlbUZldGNoIGludm9rZXLjg6zjgqTjg6Tjg7zjga5HZW5lcmljSW50ZXJmYWNl44Oi44K444Ol44O844Or55m76Yyy44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCBpbnZva2Vy44Os44Kk44Ok44O844GuR2VuZXJpY0ludGVyZmFjZeODouOCuOODpeODvOODq+eZu+mMsuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIOioreWumumgheebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ+ani+aIkOOCouOCpOODhuODoOOBruS4gOimpyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICfjgqTjg7Pjgrfjgrnjg4bjg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ+OCpOODs+OCt+ODh+ODs+ODiOOCueODhuODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Kr44K544K/44Oe44O844Kk44Oz44K/44O844OV44Kn44O844K544Gu6Kit5a6a6aCF55uu5qSc57Si44Gr44OH44OX44Ot44Kk44Oh44Oz44OI44K544OG44O844OI44GM5ZCr44G+44KM44KL44KI44GG44Gr44Gq44KK44G+44GX44Gf44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCq+OCueOCv+ODnuODvOOCpOODs+OCv+ODvOODleOCp+ODvOOCueOBruioreWumumgheebruaknOe0ouOBq+OCpOODs+OCt+ODh+ODs+ODiOeKtuaFi+OCkuWQq+OCgeOCi+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfjgZPjga7mk43kvZzjga7ntZDmnpzjgavooajnpLrjgZXjgozjgovjgrPjg7Pjg5XjgqPjgrDpoIXnm67jga7mnIDlpKfmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfjgq/jg6njgrnjgpLmi4XlvZPjgZnjgovjgrDjg6vjg7zjg5fjgpLjg4Hjgqfjg4Pjgq/jgZnjgovjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLmi4XlvZPjgZnjgovjgrDjg6vjg7zjg5fjgpLjg4Hjgqfjg4Pjgq/jgZnjgovjg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICfmp4vmiJDjgr/jgqTjg4bjg6Djga7jg6zjg53jg7zjg4jjgpLnlJ/miJDjgZnjgovjgZ/jgoHjga7jg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICflkI3liY3jg6Ljgrjjg6Xjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ+ODiuODs+ODkOODvOODu+ODouOCuOODpeODvOODqyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg7zjg5Xjgqfjg7zjgrnjga7mpJzntKLntZDmnpzjga7lkITjg5rjg7zjgrjjgavooajnpLrjgZXjgozjgovoqK3lrprpoIXnm67jga7mlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Kr44K544K/44Oe44O844Kk44Oz44K/44O844OV44Kn44O844K544Gu5qSc57Si57WQ5p6c44Gu5ZCE44Oa44O844K444Gr6KGo56S644GV44KM44KL6Kit5a6a6aCF55uu44Gu5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ+aknOe0ouOBmeOCi+OCquODluOCuOOCp+OCr+ODiOOAgeOCqOODs+ODiOODquaVsOOAgeihqOekuuOBmeOCi+WxnuaAp+OAgkNvbmZpZ0l0ZW0g44Gu5bGe5oCn44Gv44CB5piO56S655qE44GrIEVsYXN0aWNzZWFyY2gg57WM55Sx44Gn5L+d5a2Y44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ+amguimgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gu6Kit5a6a6aCF55uu44Kv44Op44K544Gu44Kr44OG44K044Oq44Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5bCP6Kit5a6a6aCF55uu5qaC6KaB44Gu5YiX44OV44Kj44Or44K/55So44Gu44OR44Op44Oh44O844K/44Gn44GZ44CC5rOo5oSPOiBcJ0FjdGl2ZVwnIOOCkiAwIOOBq+ioreWumuOBmeOCi+OBqOOAgeOCqOODvOOCuOOCp+ODs+ODiOOBr+WAi+S6uuioreWumuOBp+OBk+OBruOCsOODq+ODvOODl+OBruioreWumuOCkue3qOmbhuOBp+OBjeOBquOBj+OBquOCiuOBvuOBmeOBjOOAgeeuoeeQhuiAheOBr+S7luOBruODpuODvOOCtuOBruioreWumuOCkue3qOmbhuOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAglByZWZlcmVuY2VHcm91cFwnIOOCkuS9v+eUqOOBl+OBpuOAgeOBk+OCjOOCieOBruioreWumuOCkuODpuODvOOCtuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOBqeOBruOCqOODquOCouOBq+ihqOekuuOBmeOCi+OBi+OCkuWItuW+oeOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44OH44OX44Ot44Kk44Oh44Oz44OI44Gu44OR44Op44Oh44O844K/44Gv44CB5ouF5b2T6ICFV2Vi44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gn6Imy44KS56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gn44OH44OX44Ot44Kk54q25oWL44Gu44OR44Op44Oh44O844K/JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ+OCuOOCp+ODjeODqeODq+ODu+OCq+OCv+ODreOCsOOBruWxnuaAp+OBruaoqemZkOOCsOODq+ODvOODl+OBruioreWumuWApOS+i+OBp+OBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODleOCp+ODvOOCueOBrueSsOWig+ioreWumuODk+ODpeODvOOBruioreWumumgheebruOCr+ODqeOCueOBruWQjeWJjeODouOCuOODpeODvOODq+OBruODkeODqeODoeODvOOCv+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gu6Kit5a6a6aCF55uu44Kv44Op44K544Gu55Wq5Y+344Oi44K444Ol44O844Or44Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ+ODmuODvOOCuOOBruODkeODqeODoeODvOOCv++8iOani+aIkOOCouOCpOODhuODoOOBjOihqOekuuOBleOCjOOBvuOBme+8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg5Xjgqfjg7zjgrnjga7nkrDlooPoqK3lrprjg5Pjg6Xjg7zjga7oqK3lrprpoIXnm67jgq/jg6njgrnjga7jg5Djg7zjgrjjg6fjg7PmloflrZfliJfjg6Ljgrjjg6Xjg7zjg6vjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfjgqjjg7zjgrjjgqfjg7Pjg4jjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7nkrDlooPoqK3lrprjg5Pjg6Xjg7zjga7oqK3lrprpoIXnm67jgq/jg6njgrnnlKjjga7jg5Djg7zjgrjjg6fjg7PmloflrZfliJfjg4bjg7Pjg5fjg6zjg7zjg4jjg4Tjg7zjg6vjgq3jg4Pjg4jjg6Ljgrjjg6Xjg7zjg6vjga7jg5Hjg6njg6Hjg7zjgr/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44OV44Kn44O844K544Gu55Kw5aKD6Kit5a6a44OT44Ol44O844Gu6Kit5a6a6aCF55uu44Kv44Op44K544Gu44OQ44O844K444On44Oz44OI44Oq44Ks44O844Gu44OR44Op44Oh44O844K/44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn6Kit5a6a44GV44KM44Gf5ZCEV2Vi44K144O844OT44K544Gu5ZCE44Kk44OZ44Oz44OI44Gr5a++44GX44Gm77yISW52b2tlcuOBqOOBl+OBpu+8ieioreWumuOBleOCjOOBn+OCouOCr+OCt+ODp+ODs+OCkuWun+ihjOOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn5qip6ZmQ44Kw44Or44O844OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Ko44O844K444Kn44Oz44OI44Kk44Oz44K/44O844OV44Kn44Kk44K544GnSVRTTeani+aIkOmgheebrua3u+S7mOOCouOCr+OCt+ODp+ODs+OCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn5qeL5oiQ44Ki44Kk44OG44Og55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5qSc57Si55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Kr44K544K/44Oe44O844Kk44Oz44K/44O844OV44Kn44O844K544GuSVRTTeani+aIkOmgheebruaknOe0oueUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp0lUU03mp4vmiJDpoIXnm67jg4Tjg6rjg7zjg5Pjg6Xjg7znlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K55qeL5oiQ44Ki44Kk44OG44Og44Gu44K644O844Og55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn5qeL5oiQ44Ki44Kk44OG44Og44Gu6L+95Yqg55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+OCqOODvOOCuOOCp+ODs+ODiOOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruS4gOaLrElUU03oqK3lrprpoIXnm67nlLvpnaLjgpLkvb/nlKjjgZnjgovjgZ/jgoHjgavlv4XopoHjgarmqKnpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gn5qeL5oiQ44Ki44Kk44OG44Og44Gu57eo6ZuG55S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBruWxpeattOeUu+mdouOCkuS9v+eUqOOBmeOCi+OBn+OCgeOBq+W/heimgeOBquaoqemZkCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICFV2Vi44Kk44Oz44K/44OV44Kn44O844K544Gn5qeL5oiQ44Ki44Kk44OG44Og44Gu5Y2w5Yi355S76Z2i44KS5L2/55So44GZ44KL44Gf44KB44Gr5b+F6KaB44Gq5qip6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLliYrpmaTjgZnjgovjgZ/jgoHjgavlv4XopoHjgarnibnmqKknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfmp4vmiJDjgqLjgqTjg4bjg6DjgpLmpJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+ODgeOCseODg+ODiOOBjENJ44Gr44Oq44Oz44Kv44GV44KM44Gm44GE44KL5aC05ZCI44CBQ0njga7jgqTjg7Pjgrfjg4fjg7Pjg4jjga7jgrnjg4bjg7zjgr/jgrnjgpLoh6rli5XnmoTjgavoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7kuIDmi6znlLvpnaLjgafjg4fjg5fjg63jgqTnirbmhYvjgpLoqK3lrprjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu5LiA5ous55S76Z2i44Gn44Kk44Oz44K344OH44Oz44OI44Gu44K544OG44O844K/44K544KS6Kit5a6a44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu44K644O844OgIOODk+ODpeODvOOBp+OAgeani+aIkOOCouOCpOODhuODoOOCkuWIpeOBruOCquODluOCuOOCp+OCr+ODiOOBq+ODquODs+OCr+OBp+OBjeOCi+OCiOOBhuOBq+OBmeOCi+ODoeODi+ODpeODvOWGheOBruODquODs+OCr+OCkuihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruani+aIkOOCouOCpOODhuODoOOBruamguimgeOBq+OBguOCi+ani+aIkOOCouOCpOODhuODoOOBruWxpeattOOBq+OCouOCr+OCu+OCueOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7jgrrjg7zjg6Ag44OT44Ol44O844Gn5qeL5oiQ44Ki44Kk44OG44Og44Gu5bGl5q2044Gr44Ki44Kv44K744K544GZ44KL44Gf44KB44Gu44Oq44Oz44Kv44KS44Oh44OL44Ol44O844Gr6KGo56S644GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn44Oh44OL44Ol44O844Gr44Oq44Oz44Kv44KS6KGo56S644GX44Gm44CB5ouF5b2T6ICFV2Vi44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844Og6KGo56S644Gn6Kit5a6a6aCF55uu44KS5YmK6Zmk44GX44G+44GZ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfoqK3lrprpoIXnm67jga7jg6rjg7Pjgq/jgpLjg4Tjg6rjg7zooajnpLrjgZnjgovjgZ/jgoHjga7jg6rjg7Pjgq/jgpLjg6Hjg4vjg6Xjg7zjgavooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7mpoLopoHjgafmp4vmiJDjgqLjgqTjg4bjg6DjgpLopIfoo73jgZnjgovjgZ/jgoHjga7jg6Hjg4vjg6Xjg7zjga7jg6rjg7Pjgq/jgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844OgIOODk+ODpeODvOOBp+ani+aIkOOCouOCpOODhuODoOOCkuikh+ijveOBmeOCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu44K644O844OgIOODk+ODpeODvOOBp+ani+aIkOOCouOCpOODhuODoOOCkue3qOmbhuOBmeOCi+OBn+OCgeOBruODoeODi+ODpeODvOOBruODquODs+OCr+OCkuihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5ouF5b2T6ICF44Kk44Oz44K/44O844OV44Kn44Kk44K544Gu5qeL5oiQ44Ki44Kk44OG44Og44Gu44K644O844OgIOODk+ODpeODvOOBq+aIu+OCi+OBn+OCgeOBruODquODs+OCr+OCkuODoeODi+ODpeODvOOBq+ihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAheOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBruOCuuODvOODoCDjg5Pjg6Xjg7zjgafmp4vmiJDjgqLjgqTjg4bjg6DjgpLljbDliLfjgZnjgovjgZ/jgoHjga7jg6Hjg4vjg6Xjg7zjga7jg6rjg7Pjgq/jgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmi4XlvZPogIXjgqTjg7Pjgr/jg7zjg5XjgqfjgqTjgrnjga7mp4vmiJDjgqLjgqTjg4bjg6Djga7mpoLopoHjgafmp4vmiJDjgqLjgqTjg4bjg6DjgpLmi6HlpKfjgZnjgovjgZ/jgoHjga7jg6Hjg4vjg6Xjg7zjga7jg6rjg7Pjgq/jgpLooajnpLrjgZfjgb7jgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aLheW9k+iAhVdlYuOCpOODs+OCv+ODvOODleOCp+OCpOOCueOBp+ani+aIkOOCouOCpOODhuODoOOBruWxpeattO+8iOmAhumghu+8ieOCkuihqOekuuOBl+OBvuOBmeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICfkvZXjgoLpgbjmip7jgZXjgozjgabjgYTjgarjgYTloLTlkIjjgavooajnpLrjgZXjgozjgovjg4fjg5Xjgqnjg6vjg4jjga7jgqvjg4bjgrTjg6rjg7zjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ+ani+aIkOOCouOCpOODhuODoOOBruitmOWIpeWtkOOAgiBDb25maWdJdGVt77yD44CBTXlDb25maWdJdGVt77yD44CBIOODh+ODleOCqeODq+ODiOOBr0NvbmZpZ0l0ZW3vvIPjgafjgZnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0NvbmZpZ0l0ZW1GZXRjaCBpbnZva2Vy44KS6Ieq5YuV55qE44Gr6LW35YuV44GZ44KL44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfjg5Djg7zjgrjjg6fjg7PmloflrZfliJflvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn44OQ44O844K444On44Oz5paH5a2X5YiX44Oi44K444Ol44O844OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ+ODkOODvOOCuOODp+ODs+ODu+ODiOODquOCrOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn44Kt44Oj44OD44K344Ol44GV44KM44Gf44OV44Kj44O844Or44OJ44Gu5L6d5a2Y6Zai5L+C44KS44OB44Kn44OD44Kv44GZ44KL44GT44Go44Gn44CBQ29uZmlnSXRlbUFDTOOBruWun+ihjOOCkuWbnumBv+OBp+OBjeOCi+OBi+OBqeOBhuOBi+OAguOBk+OCjOOBr+ODleOCqeODvOODoOOBruODreODvOODieaZgumWk+OCkuaUueWWhOOBmeOCi+OBk+OBqOOBjOOBp+OBjeOCi+OBjOOAgUFDTE1vZHVsZSDjgpIgSVRTTUNvbmZpZ0l0ZW0tIOOBqCBGb3JtLVJldHVyblR5cGUg44Gn5L2/55So44GZ44KL5aC05ZCI44Gv54Sh5Yq544Gr44GX44Gq44GR44KM44Gw44Gq44KJ44Gq44GE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfjganjga7kuIDoiKznmoTjgarmg4XloLHjgYzjg5jjg4Pjg4Djg7zjgavooajnpLrjgZXjgozjgabjgYTjgovjgYvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfjgq/jg6njgrknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn44Kw44Ot44O844OQ44OrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn5qyh44Gu55Sf55SjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICflho3nlJ/nlKMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ+eUn+eUoyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVe+8mjE3LjXjgqTjg7Pjg4HvvIg0NC40NWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlXvvJoyMeOCpOODs+ODge+8iDUzLjM0Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1Ve+8mjI2LjI144Kk44Oz44OB77yINjYuNjhjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFXvvJozMS4144Kk44Oz44OB77yIODAuMDFjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOeOCpOODs+ODgeODqeODg+OCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVXvvJoxLjc144Kk44Oz44OB77yINC40NWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVe+8mjM144Kk44Oz44OB77yIODguOWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIx44Kk44Oz44OB44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVe+8mjM4LjXjgqTjg7Pjg4HvvIg5Ny43OWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIz44Kk44Oz44OB44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNuOCpOODs+ODge+8iDYwMG1t77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRV77yaNDLjgqTjg7Pjg4HvvIgxMDYuNjhjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3Ve+8mjQ3LjI144Kk44Oz44OB77yIMTIwLjAyY23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlXvvJozLjXjgqTjg7Pjg4HvvIg4Ljg5Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVe+8mjUyLjXjgqTjg7Pjg4HvvIgxMzMuMzVjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjXjgqTjg7Pjg4HvvIg4MDBtbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVe+8mjU3Ljc144Kk44Oz44OB77yIMTQ2LjY4Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS4044Kk44Oz44OB77yIOTAwbW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlXvvJo2M+OCpOODs+ODge+8iDE2MC4wMmNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjTjgqTjg7Pjg4HvvIgxMDAwbW3vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVXvvJo2OC4yNeOCpOODs+ODge+8iDE3My4zNWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1XvvJo1LjI144Kk44Oz44OB77yIMTMuMzRjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJV77yaNzMuNeOCpOODs+ODge+8iDE4Ni42OWNt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0My4z44Kk44Oz44OB77yIMTEwMG1t77yJ77yaJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVV77yaNzguNzXjgqTjg7Pjg4HvvIgyMDAuMDJjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4y44Kk44Oz44OB77yIMTIwMG1t77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhV77yaODTjgqTjg7Pjg4HvvIgyMTMuMzZjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRV77yaN+OCpOODs+ODge+8iDE3Ljc4Y23vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1Ve+8mjguNzXjgqTjg7Pjg4HvvIgyMi4yM2Nt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlXvvJoxMC4144Kk44Oz44OB77yIMjYuNjdjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3Ve+8mjEyLjI144Kk44Oz44OB77yIMzEuMTJjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4Ve+8mjE044Kk44Oz44OB77yIMzUuNTZjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5Ve+8mjE1Ljc144Kk44Oz44OB77yINDAuMDFjbe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ+S8muioiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ+OCouODieODrOOCueWJsuOCiuW9k+OBpic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn566h55CG6ICFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ+OCouODiuODreOCsOmbu+ipsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ+OCouODl+ODqeOCpOOCouODs+OCueODu+OCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ+ODkOODg+ODhuODquODvOWuuemHj++8iEFo77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ+ODkOODg+ODhuODquODvOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ+ani+eviSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn44OQ44K544O744Kk44Oz44K/44O844OV44Kn44O844K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BV44Kv44Op44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICflrrnph48gKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ+OCsOODqeODleOCo+ODg+OCr+OCueOCq+ODvOODiTHmnprjgYLjgZ/jgorjga7lrrnph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfjgqvjg7zjg4nnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICfjgqvjg7zjg4njg6rjg7zjg4Djg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAn44Kr44O844OJ44Gu56iu6aGeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfjgq/jg6njgqTjgqLjg7Pjg4joqLzmmI7mm7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn44Kv44Op44Kk44Ki44Oz44OI44O744K944OV44OI44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ+mhp+WuouOCq+ODhuOCtOODquODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfjgq/jg63jg4Pjgq/jg6zjg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ+OCr+ODreODg+OCr+OCueODlOODvOODiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAn44Kz44O844OJ572y5ZCN6Ki85piO5pu4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICfpm7voqbHkvJrorbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfjgrPjg7PjgrXjg6vjg4bjgqPjg7PjgrDlpZHntIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ+mAo+e1oeWFiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn6LKp5aOy5Luj55CG5bqXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAn44Kz44Oz44OG44OK566h55CGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAn5aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICflpZHntITjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICflpZHntITmnJ/plpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn5aWR57SE5pyf6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ+OCs+ODvOODieODrOOCuembu+ipse+8iERFQ1Tpm7voqbHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn44Kz44K544OI5Y2Y5L2NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn44Op44Kk44K744Oz44K55pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfkvZzmiJDml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ+OCq+OCueOCv+ODoOODqeODg+OCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAn44OH44Kj44O844Ko44Kk44OB44K344O844OU44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQ5LqI57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlPjgrXjg7zjg5Djg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAn44OH44Kj44O044KjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ+iri+axguabuOOBruaXpeS7mCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn5rOo5paH5pelJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfjg6/jg6njg7Pjg4jlj5blvpfml6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn44Oq44Oq44O844K55pelJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfjg4fjgrnjgq/jg4jjg4Pjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICfjg4fjgqPjgrnjg5fjg6zjgqTjg53jg7zjg4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfmlofmm7jnvbLlkI3oqLzmmI7mm7gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJ44Op44OD44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfpm7vlrZDjg6Hjg7zjg6voqLzmmI7mm7jvvIhTL01JTUUg6Ki85piO5pu477yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ+mbh+eUqOWlkee0hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ+e1guS6hklQ44Ki44OJ44Os44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAn44K144Od44O844OI57WC5LqGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn5pyJ5Yq55pyf6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICflpJbku5jjgZHjg4/jg7zjg4njg4njg6njgqTjg5YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICfjg5XjgqHjgqTjgqLjgqbjgqnjg7zjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfjg5XjgqHjg7zjg6DjgqbjgqfjgqInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICfjg5Xjg6njgqTjg5vjgqTjg7zjg6vjg7vjgqjjg43jg6vjgq7jg7zosq/olLUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfjg5Xjgqnjg7zjg6Djg5XjgqHjgq/jgr/jg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ+ODleODqeODs+ODgeODo+OCpOOCuuWlkee0hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ+ODleODquODvOOCpuOCp+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICfkuIDoiKzmg4XloLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfjgrDjg6njg5XjgqPjg4Pjgq/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+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAn5oqV6LOH44Kz44K544OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn44Kk44Oz44Oc44Kk44K555Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn44Kt44O844Oc44O844OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDROODouODi+OCv+ODvO+8iOa2suaZtuODh+OCo+OCueODl+ODrOOCpO+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVE44Oi44OL44K/44O877yI55m65YWJ44OA44Kk44Kq44O844OJ77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ+WbuuWumumbu+ipsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfjg47jg7zjg4hQQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ+e3r+W6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ+ODrOOCpOODpOODvDHvvJrniannkIbjg6zjgqTjg6Tjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn44Os44Kk44Ok44O8Mu+8muODh+ODvOOCv+ODquODs+OCr+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAn44Os44Kk44Ok44O8M++8muODjeODg+ODiOODr+ODvOOCr+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfjg6zjgqTjg6Tjg7wz77ya44ON44OD44OI44Ov44O844Kv44O744Os44Kk44Ok44O877yI44K544O844OR44O844ON44OD44OI77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJ+ODrOOCpOODpOODvDTvvJrjg4jjg6njg7Pjgrnjg53jg7zjg4jjg7vjg6zjgqTjg6Tjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ+ODrOOCpOODpOODvDXvvJrjgrvjg4Pjgrfjg6fjg7Pjg7vjg6zjgqTjg6Tjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAn44Os44Kk44Ok44O8Nu+8muODl+ODrOOCvOODs+ODhuODvOOCt+ODp+ODs+ODu+ODrOOCpOODpOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ+ODrOOCpOODpOODvDfvvJrjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7Pjg7vjg6zjgqTjg6Tjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn44Oq44O844K55aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAn44Op44Kk44K744Oz44K55aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICfjg6njgqTjgrvjg7Pjgrnjgq3jg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAn44Op44Kk44K744Oz44K544Gu56iu6aGeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICfjg6njgqTjgrvjg7PjgrnmnJ/plpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfjg6njgqTjgrvjg7PjgrnmnJ/plpMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJ+ODquODs+mFuOmJhOODquODgeOCpuODoO+8iExpRmVQTzTvvInpm7vmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ+ODquODgeOCpuODoOOCpOOCquODs++8iExpLWlvbu+8ieODkOODg+ODhuODquODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ+ODreODvOODs+Wlkee0hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn5omA5Zyo5ZywJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ+e1jOW6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ+ODoeODvOOCq+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAn5pyA5aSn6LKg6I235a656YePIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICfjg6Hjg6Ljg6rjg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICfjg6Hjg6Ljg6rjg7zjgr/jgqTjg5cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ+ODn+ODi+ODqeODg+OCryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn5pC65biv6Zu76Kmx55Wq5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ+ODouODkOOCpOODqy/ntYTjgb/ovrzjgb8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICfjg6Ljg4fjg6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICfjg6Ljg4fjg6voqqzmmI4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn44Oi44OL44K/44O86Kej5YOP5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ+ODouODi+OCv+ODvOOCteOCpOOCuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ+ODnuOCpuOCuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn44ON44OD44OI44Ov44O844KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ+ODjeODg+ODiOODr+ODvOOCr+aDheWgsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn44ON44OD44OI44Ov44O844Kv5oOF5aCxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfjg43jg4Pjg4jjg6/jg7zjgq/lsaQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfjg4vjg4PjgrHjg6vjgqvjg4njg5/jgqbjg6DvvIhOaUNk77yJ6Zu75rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAn44OL44OD44Kx44Or5rC057Sg6Zu75rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ+enmOWvhuS/neaMgeWlkee0hO+8iE5EQe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ+ODjuODvOODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ0NQVeaVsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdSQU3jg6Ljgrjjg6Xjg7zjg6vmlbAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn44Kw44Op44OV44Kj44OD44Kv44Kr44O844OJ44Gu5p6a5pWwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVE44Oi44OL44K/44O877yI5pyJ5qmf55m65YWJ44OA44Kk44Kq44O844OJ77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ+WWtualreiyu+eUqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICfms6jmlofnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfku5YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ+WHuuWKmyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICfmmpfoqLznlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICfmmpfoqLznlarlj7cyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJ1BVSyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJ1BVSyAyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJ+ODkeODvOODiOODiuODvOOCt+ODg+ODl+Wlkee0hCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ+mbu+ipseeVquWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAn6Zu76Kmx44K/44Kk44OXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAn44OV44Kj44K444Kr44Or44O744Kz44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn44OR44Ov44O844O744OH44Oq44OQ44Oq44O8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAn44Gn6LO85YWl44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfjg6njg4Pjgq/jga7lpaXooYzjgY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICfjg6njg4Pjgq/jg6bjg4vjg4Pjg4ggKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICflrqTlhoUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU3jgqvjg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExT6Ki85piO5pu4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAn5aOy6LK35aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ+ihm+aYn+mbu+ipsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICflr4bplonlnovpiZvok4Tpm7vmsaAgKFNMQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICfjgrfjg6rjgqLjg6vnlarlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAn44K144O844OQ44O844O744K944OV44OI44Km44Kn44KiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn44K144O844OT44K55aWR57SEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAn44K144O844OT44K544K/44KwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ+OCveOCseODg+ODiOOCv+OCpOODlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ+OCveODleODiOOCpuOCp+OCoic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ+OCueODlOODvOOCq+ODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfjgrnjgr/jg7Pjg4Djg7zjg4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ+mWi+Wni0lQ44Ki44OJ44Os44K5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICfjgrnjg4jjg6zjg7zjgrgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfjgrnjg4jjg6zjg7zjgrjjg7vjg5Hjg7zjg4bjgqPjgrfjg6fjg7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICflrZDkvJrnpL4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ+amguimgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ+OCt+ODs+OCr+ODqeOCpOOCouODs+ODiCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn44K544Os44OD44OJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn44K144Oz44OA44O844Oc44Or44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfjgrDjg6njg5XjgqPjg4Pjgq/jgrnjgqvjg7zjg4lSQU3lkIjoqIjvvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ+WQiOioiFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfjgr/jg4Pjg4Hjgrnjgq/jg6rjg7zjg7Pjg6Ljg4vjgr/jg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICfjgr/jg6/jg7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQuODj+ODlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ+ODluOCpOOCuOODvOOCqOODvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICfjgYvjgZ3jgYbjgbjjgYTjgYTjgY3jgoLjgYYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZS44OY44OD44OJ44K744OD44OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAn44OQ44O844OB44Oj44Or44Oq44Oz44KvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQ44OV44Kp44OzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfjgqbjgqfjg5bjgqvjg6Hjg6knOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydSdW4gU2VhcmNoJ30gPSAn6rKA7IOJIOyLpO2WiSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfsnbTsoIQg67KE7KCE7JeQ7ISc64+EIOqygOyDie2VmOyLnOuCmOyalD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICfqtazshLEg7ZWt66qp7JqpIO2KuOumrOu3sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+q5iuydtCDroIjrsqgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICftmZXrjIAv7LaV7IaMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ+q1rOyEsSDtla3rqqnsnZgg7LWc64yAIOunge2BrCDroIjrsqjsl5Ag64+E64us7ZaI7Iq164uI64ukISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+q1rOyEsSDtla3rqqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn6rWs7ISxIO2VreuqqSDsoJXrs7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn7ZiE7J6sIOuwsO2PrCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ+2YhOyerCDsnbjsi5zrjZjtirgg7IOB7YOcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+uniOyngOuniSDrs4Dqsr3rkKgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAn66eI7KeA66eJIOuzgOqyveyekCc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ+q1rOyEsSDtla3rqqknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn6rWs7ISxIO2VreuqqSDqsoDsg4knOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfri6TsnYwg7YG0656Y7Iqk66W8IOqwgOyguOyYteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn64uk7J2MIOyXre2VoOydhCDqsIDsoLjsmLXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ+2VtOuLuSDrj5nsoIEg7ZWE65Oc7JmAIOydvOuwmCDsubTtg4jroZzqt7gg7YG0656Y7Iqk64+EIOyDneyEseuQmOupsCDsnpDrj5nsnLzroZwg7KCc6rGw65CY7KeAIOyViuuKlOuLpOuKlCDsoJDsl5Ag7Jyg7J2Y7ZWY7IS47JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ+qzhOyGjSDsp4TtlontlZjsi5zqsqDsirXri4jquYw/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ+yYiOygnCDtgbTrnpjsiqTqsIAg7ZWE7JqU7ZWp64uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICfsoJXsnZjsl5Ag7Jyg7Zqo7ZWcIFlBTUwg7ZW07Iuc6rCAIOyXhuyKteuLiOuLpC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfqsJzsmpQ6IElUU00g6rWs7ISxIO2VreuqqSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUTqsIAg7KeA7KCV65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICfshKDtg53tlZwg6rWs7ISxIO2VreuqqeydtCDtlZjrgpgg7J207IOBIO2VhOyalO2VqeuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICfsnbQg6rWs7ISxIO2VreuqqeyXkCDrjIDtlZwg7JOw6riwIOq2jO2VnOydtCDsl4bsirXri4jri6Q6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICftgbTrnpjsiqTsl5Ag64yA7ZWcIOygleydmOqwgCDsoJXsnZjrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn642w7J207YSw67Kg7J207Iqk7JeQ7IScIOq1rOyEsSDtla3rqqkgIiVzIuulvCDssL7snYQg7IiYIOyXhuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfqtazshLEg7ZWt66qpIElEICVz66W8IOyCreygnO2VoCDsiJgg7JeG7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnQ29uZmlnSXRlbUlEICVz7JeQIOuMgO2VnCDrsoTsoITsnYQg7LC+7J2EIOyImCDsl4bsirXri4jri6QhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ+q1rOyEsSDtla3rqqkgSUQsIOykkeuztSBJRCDrmJDripQg7YG0656Y7IqkIElE6rCAIOyngOygleuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfslaHshLjsiqQg6raM7ZWc7J20IOyXhuyKteuLiOuLpCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn7Z6I7Iqk7Yag66as66W8IO2RnOyLnO2VoCDsiJgg7JeG6rOgLCBDb25maWdJdGVtSUTqsIAg7KeA7KCV65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfquLDroZ3snYQg7ZGc7Iuc7ZWgIOyImCDsl4bsnLzrqbAg7JWh7IS47IqkIOq2jO2VnOydtCDrtoDsl6zrkJjsp4Ag7JWK7JWY7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn7IOIIOq1rOyEsSDtla3rqqkoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfsg4gg67KE7KCEIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfrsLDtj6wg7IOB7YOcIOyXheuNsOydtO2KuOuQqCjsg4g9JXMsIOydtOyghD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn7J247Iuc642Y7Yq4IOyDge2DnCDsl4XrjbDsnbTtirgo7IOIPSVzLCDsnbTsoIQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn6rWs7ISxIO2VreuqqShJRD0lcykg7IKt7KCc65CoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAncyjsnKDtmJU9JXMp7JeQIOuMgO2VnCDrp4HtgazqsIAg7LaU6rCA65CY7JeI7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAncyjsnKDtmJU9JXMp7JeQIOuMgO2VnCDrp4Htgawg7IKt7KCc65CoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfqtazshLEg7ZWt66qpIOygleydmCDsl4XrjbDsnbTtirjrkKgoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn7J2066aEIOyXheuNsOydtO2KuCjsg4g9JXMsIOydtOyghD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfsho3shLEgJXPqsIAgIiVzIuyXkOyEnCAiJXMi66GcIOyXheuNsOydtO2KuOuQmOyXiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn67KE7KCEICVzIOyCreygnOuQqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfqtazshLEg7ZWt66qpIElEIOuYkOuKlCDrsoTsoIQgSUTqsIAg7KeA7KCV65CY7KeAIOyViuyVmOyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn7ISk7KCVIO2VreuqqeydhCDtkZzsi5ztlaAg7IiYIOyXhuycvOupsCDslaHshLjsiqQg6raM7ZWc7J20IOyXhuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXPrpbwg642w7J207YSw67Kg7J207Iqk7JeQ7IScIOywvuydhCDsiJgg7JeG7Iq164uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAn6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAn7JeQ7IScICVz6rCAIOyduOyHhO2WiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ+ywuOqzoCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ+yemOuqu+uQnCBDbGFzc0lE7J6F64uI64ukISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NsYXNzSUTqsIAg7KCc6rO165CY7KeAIOyViuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfsnbQg7YG0656Y7Iqk7JeQIOuMgO2VnCDslaHshLjsiqQg6raM7ZWc7J20IOu2gOyXrOuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfqsrDqs7wg7JeG7J2MISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ+q1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn7ZWt66qp7J2EIO2RnOyLnO2VoCDsiJgg7JeG7Iq164uI64ukLiDqtazshLEg7ZWt66qp7JeQIOuMgO2VnCDslaHshLjsiqQg6raM7ZWc7J20IOu2gOyXrOuQmOyngCDslYrslZjsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ+q1rOyEsSDtla3rqqnsnYQg7LC+7J2EIOyImCDsl4bsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ+uyhOyghOydhCDssL7snYQg7IiYIOyXhuyKteuLiOuLpCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfsmrTsmIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+qyveqzoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ+yduOyLnOuNmO2KuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn7J20IOq1rOyEsSDtla3rqqnsnZgg67Cw7Y+sIOyDge2DnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+ydtCDqtazshLEg7ZWt66qp7J2YIOyduOyLnOuNmO2KuCDsg4Htg5wnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfruYTtl4jqsIAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn7ZWE7YSw6rCAIOycoO2aqO2VmOyngCDslYrsirXri4jri6QhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfqsoDsg4kg66ek6rCc67OA7IiY6rCAIOyemOuqu+uQmOyXiOyKteuLiOuLpCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICftkZzsi5zrkJwg6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfrsLDtj6wg7IOB7YOcIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICftmITsnqwg7J247Iuc642Y7Yq4IOyDge2DnCDsnKDtmJUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn7IKs7J20JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfqtazshLEg7ZWt66qp7J2YIO2BtOuemOyKpCDsoJztlZwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+2VmOuCmCDsnbTsg4HsnZgg7YG0656Y7Iqk66W8IOyEoO2Dne2VmOyXrCDshKDtg50g6rCA64ql7ZWcIOq1rOyEsSDtla3rqqnsnYQg7KCc7ZWc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn6rWs7ISxIO2VreuqqeydmCDtgbTrnpjsiqQg7KCc7ZWcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn7ZWY64KYIOydtOyDgeydmCDtgbTrnpjsiqTrpbwg7ISg7YOd7ZWY7JesIOyEoO2DnSDqsIDriqXtlZwg6rWs7ISxIO2VreuqqeydhCDsoJztlZztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAn64+Z7KCBKOq1rOyEsSDtla3rqqkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfsoJXsoIEo67KE7KCEKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfrp4Htgawg7LC47KGwIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfsnbQg66eB7YGs6rCAIOq1rOyEsSDtla3rqqnsl5Ag7KCB7Jqp65CY64qU7KeAIOuYkOuKlCDssLjsobAg6rCc7LK07J2YIOygleyggSDrsoTsoITsl5Ag7KCB7Jqp65CY64qU7KeAIOyXrOu2gOyeheuLiOuLpC4g7ZiE7J6sIOyduOyLnOuNmO2KuCDsg4Htg5wg6rOE7IKw7J2AIOuPmeyggSDrp4Htgazsl5DshJzrp4wg7IiY7ZaJ65Cp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ+q1rOyEsSDtla3rqqnsnYQg6rKA7IOJ7ZWgIOyGjeyEseydhCDshKDtg53tlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICfquLDrs7gg6rWs7KGw6rCAIOycoO2aqO2VmOyngCDslYrsirXri4jri6QuIFlBTUwg7ZiV7Iud7J2YIOuNsOydtO2EsCDtlbTsi5zrpbwg7J6F66Cl7ZWY7IS47JqULic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1lBTUwg66y47J6Q7Je07J2AIFwnLS0tXCfroZwg7Iuc7J6R7ZW07JW8IO2VqeuLiOuLpC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnY29uZmlnaXRlbV9saW5rIO2FjOydtOu4lOydhCDsoJzqsbDtlaAg7IiYIOyXhuyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ+q0gOugqCDrj5nsoIEg7ZWE65Oc66W8IOywvuydhCDsiJgg7JeG7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ2NvbmZpZ2l0ZW1fbGluayDthYzsnbTruJTsl5Ag7IK97J6F7ZWgIOyImCDsl4bsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdjb25maWdpdGVtX2xpbmsg7YWM7J2067iU7JeQIO2WiSAw6rCc66W8IOyCveyehe2WiOyKteuLiOuLpC4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn7ZWY64KY7J2YIOyalOyGjOydmCDstZzrjIAg6rCc7IiYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ+uyhOyghCDrrLjsnpDsl7QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn7KCV7J2YIOuPmeq4sO2ZlCDspJEg7Jik66WY6rCAIOuwnOyDne2WiOyKteuLiOuLpC4g66Gc6re466W8IO2ZleyduO2VtCDso7zshLjsmpQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn64+Z6riw7ZmU65CY7KeAIOyViuydgCBJVFNNQ29uZmlnSXRlbSDsoJXsnZjqsIAg7J6I7Iq164uI64ukLiBJVFNNQ29uZmlnSXRlbSDrj5nsoIEg7ZWE65OcIOuzgOqyvSDsgqztla3snYQg67Cw7Y+s7ZWY7IS47JqULic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn66eM66OM65CoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn7Jyg7KeAIOq0gOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ+2MjOydvOufvyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn6rOE7ZqN65CcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+yImOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn7J2A7Ye0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+qygO2GoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn7YWM7Iqk7Yq4L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICfqsJzsmpQg67CPIO2ZleyduCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICftgbTrnpjsiqQv7Jet7ZWgIOuwjyDqtIDroKgg7ZWE65OcIOqwgOyguOyYpOq4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ+2BtOuemOyKpCDqsIDsoLjsmKTquLAg7KSR7JeQIOyYpOulmOqwgCDrsJzsg53tlojsirXri4jri6QuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDsiKjquYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIO2RnOyLnOuQqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDieyXkOyEnCDtmZXsnqUg6rKA7IOJIOyhsOqxtOydhCDtl4jsmqntlanri4jri6QuIOydtCDquLDriqXsnYQg7IKs7Jqp7ZWY66m0IOyYiOulvCDrk6TslrQgIigqa2V5MSomJiprZXkyKikiIOuYkOuKlCAiKCprZXkxKnx8KmtleTIqKSLsmYAg6rCZ7J2AIOyhsOqxtOycvOuhnCDqtazshLEg7ZWt66qpIOydtOumhOydhCDqsoDsg4ntlaAg7IiYIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDshKTsoJUg7ZWt66qpIOqygOyDieyXkOyEnCDtmZXsnqUg6rKA7IOJIOyhsOqxtOydhCDtl4jsmqntlanri4jri6QuIOydtCDquLDriqXsnYQg7IKs7Jqp7ZWY66m0IOyYiOulvCDrk6TslrQgIigqa2V5MSomJiprZXkyKikiIOuYkOuKlCAiKCprZXkxKnx8KmtleTIqKSLsmYAg6rCZ7J2AIOyhsOqxtOycvOuhnCDqtazshLEg7ZWt66qpIOydtOumhOydhCDqsoDsg4ntlaAg7IiYIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn7ZWg64u565CcIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfqs6DqsJ3sgqzsl5Ag7ZWg64u565CcIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAn6rOg6rCdIOyCrOyaqeyekOyXkOqyjCDtlaDri7nrkJwgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIg7ISk7KCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfrj5nsnbztlZwg6rWs7ISx7ZWt66qpIO2BtOuemOyKpChcJ2NsYXNzXCcpIOuYkOuKlCDsoITsl60oXCdnbG9iYWxcJykg64K07JeQ7ISc66eMIOqzoOycoO2VnCDsnbTrpoTsnYQg7ZmV7J247ZWY66+A66GcIOykkeuzteydhCDssL7snYQg65WMIOq4sOyhtOydmCDrqqjrk6Ag6rWs7ISx7ZWt66qp7J20IOqzoOugpOuQqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ+uqheuqhSDssrTqs4Trpbwg7KCB7Jqp7ZWgIOuqqOuTiOydhCDshKDtg53tlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICfrsojtmLgg7LK06rOE66W8IOyggeyaqe2VoCDrqqjrk4jsnYQg7ISg7YOd7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfrsoTsoIQg66y47J6Q7Je0IOyytOqzhOulvCDsoIHsmqntlaAg66qo65OI7J2EIOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfsg4gg67KE7KCEIOyDneyEseydhCDtirjrpqzqsbDtlaAg7IaN7ISx7J2EIOyEoO2Dne2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAn7J20IOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7JeQIO2VoOuLue2VoCDsubTthYzqs6Drpqzrpbwg7ISg7YOd7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ+q1rOyEsSDtla3rqqkg6rCc7JqU7JeQIOuMgO2VnCDsl7Qg6rWs7ISxIO2VreuqqSDtlYTthLAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQ7IScIO2VhO2EsOunge2VoCDsiJgg7J6I64qUIOyXtOyeheuLiOuLpC4g7LC46rOgOiDqtazshLEg7ZWt66qpIOyGjeyEseqzvCDrj5nsoIEg7ZWE65OcKER5bmFtaWNGaWVsZF9OYW1lWCkg66eMIO2XiOyaqeuQqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAn6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn6rWs7ISxIO2VreuqqSDstpTqsIAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAn6rWs7ISxIO2VreuqqSDtjrjsp5EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCDquLDroZ3sl5Ag66Gc6rmF7ZWgIOyImCDsnojripQg6rWs7ISxIO2VreuqqSDsnbTrsqTtirgg66qo65OI7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICfqtazshLEg7ZWt66qp7J2EIO2YhOyerCDsoJXsnZjroZwg7JeF642w7J207Yq47ZWY64qUIOq1rOyEsSDtla3rqqkg7J2067Kk7Yq4IOuqqOuTiOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICfqtazshLEg7ZWt66qpIOq4sOuhnS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn6rWs7ISxIO2VreuqqSDsnbjsh4QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn6rWs7ISxIO2VreuqqSDtmZXrjIAv7LaV7IaMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ+q1rOyEsSDtla3rqqkg7Yq466asIOuztOq4sCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICfqtazshLEg7ZWt66qpIOuyhOyghCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfri6TsnYwg7YG0656Y7Iqk7J2YIOq1rOyEsSDtla3rqqnsnYAgRWxhc3RpY3NlYXJjaCDshJzrsoTsl5Ag7KCA7J6l65CY7KeAIOyViuyKteuLiOuLpC4g7J2066W8IOq4sOyhtCBDSeyXkCDsoIHsmqntlZjroKTrqbQg7J20IOyYteyFmOydhCDrs4Dqsr3tlZwg7ZuEIOy9mOyGlOydhCDthrXtlbQgQ0kg66eI7J206re466CI7J207IWY7J2EIOyLpO2Wie2VtOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ+uLpOydjCDrsLDtj6wg7IOB7YOc7J2YIOq1rOyEsSDtla3rqqnsnYAgRWxhc3RpY3NlYXJjaCDshJzrsoTsl5Ag7KCA7J6l65CY7KeAIOyViuyKteuLiOuLpC4g7J2066W8IOq4sOyhtCBDSeyXkCDsoIHsmqntlZjroKTrqbQg7J20IOyYteyFmOydhCDrs4Dqsr3tlZwg7ZuEIOy9mOyGlOydhCDthrXtlbQgQ0kg66eI7J206re466CI7J207IWY7J2EIOyLpO2Wie2VtOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ+q1rOyEsSDtla3rqqkg7KCc7ZWcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICftjpjsnbTsp4Dri7kg6rWs7ISxIO2VreuqqSDsoJztlZwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfqtazshLEg6rSA66asIOuNsOydtO2EsOuyoOydtOyKpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ+q1rOyEsSDtla3rqqkg7J286rSEIOuqqOuTiC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDiSDrsLHsl5Trk5wg65287Jqw7YSw7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfqtazshLEg7ZWt66qp7JeQIOuMgO2VnCDsoJXsnZjrpbwg66eM65Ok6rOgIOq0gOumrO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICftirnsoJUg7Iuc7KCQ7JeQIOq1rOyEsSDtla3rqqnsl5Ag64yA7ZWcIO2LsOy8k+ydhCDrp4zrk63ri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ+qzoOqwneydgCDqs7zqsbAgQ0kg67KE7KCE7J2EIOuzvCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfqs6DqsJ3snYAg7J207KCEIENJIOuyhOyghCDqsITsl5Ag7IiY64+Z7Jy866GcIOyghO2ZmO2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOydmCDsho3shLHsl5Ag7IKs7Jqp7ZWgIOq4sOuzuCDrjbDsnbTthLDsnoXri4jri6QuIOyYiDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qpIOqygOyDiSDtmZTrqbTsnZgg7IaN7ISx7JeQIOyCrOyaqe2VoCDquLDrs7gg642w7J207YSw7J6F64uI64ukLiDsmIg6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICfrp4Htgawg6rCd7LK0IOychOygr+yXkOyEnCDshKTsoJUg67KE7Yq87J2EIOyCrOyaqe2VoCDsiJjsnojripQg7JWh7IWYIOygleydmCAoTGlua09iamVjdCA6OiBWaWV3TW9kZSA9ICJjb21wbGV4IikuIOydtOufrO2VnCDsnpHsl4XsnYAg64uk7J2MIEpTIOuwjyBDU1Mg7YyM7J287J2EIOuTseuhne2VtOyVvO2VqeuLiOuLpC4gQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfrsoTsoIQg66y47J6Q7Je07JeQIOuMgO2VnCDthZztlIzrpr86Ou2ItO2CtyDssrTqs4Trpbwg7KCV7J2Y7ZWp64uI64ukLiDrsoTsoIQg66y47J6Q7Je0IOuqqOuTiOydtCBUZW1wbGF0ZVRvb2xraXTsnLzroZwg7ISk7KCV65CcIOqyveyasOyXkOunjCDsgqzsmqnrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfqs6DqsJ3snbQg6rWs7ISxIO2VreuqqeydhCDrs7wg7IiYIOyeiOuPhOuhnSDtl4jsmqnrkJjripQg7KGw6rG0IOynke2VqeydhCDsoJXsnZjtlanri4jri6QuIOyhsOqxtOydgCDshKDtg53soIHsnLzroZwg7Yq57KCVIOqzoOqwnSDqt7jro7nsnLzroZwg7KCc7ZWc7ZWgIOyImCDsnojsirXri4jri6QuIOydtOumhOydgCDsnKDsnbztlZwg7ZWE7IiYIOyGjeyEseyeheuLiOuLpC4g64uk66W4IOyYteyFmOydhCDsp4DsoJXtlZjsp4Ag7JWK7Jy866m0IOuqqOuToCDqtazshLEg7ZWt66qp7J20IO2VtOuLuSDsubTthYzqs6Drpqwg7JWE656Y7JeQIO2RnOyLnOuQqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+ydvOuwmCDsnbjthLDtjpjsnbTsiqTrpbwg7IKs7Jqp7ZWY7JesIElUU00g6rWs7ISxIO2VreuqqeydhCDsgq3soJztlZjripQg642wIO2VhOyalO2VnCDqtoztlZzsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn7J2867CYIOyduO2EsO2OmOydtOyKpOulvCDsgqzsmqntlZjsl6wgSVRTTSDqtazshLEg7ZWt66qp7J2EIOqwgOyguOyYpOuKlCDrjbAg7ZWE7JqU7ZWcIOq2jO2VnOydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfsnbzrsJgg7J247YSw7Y6Y7J207Iqk66W8IOyCrOyaqe2VmOyXrCBJVFNNIOq1rOyEsSDtla3rqqnsnYQg6rKA7IOJ7ZWY64qUIOuNsCDtlYTsmpTtlZwg6raM7ZWc7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+ydvOuwmCDsnbjthLDtjpjsnbTsiqTrpbwg7IKs7Jqp7ZWY7JesIElUU00g6rWs7ISxIO2VreuqqeydhCDshKTsoJXtlZjripQg642wIO2VhOyalO2VnCDqtoztlZzsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qpIOuqqeuhneydmCDsnpHsnYAg67O06riw66W8IO2RnOyLnO2VmOuKlCDqsJzsmpQg66qo65OI7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn64W465OcIOyXsOqysOyXkCDrp4Htgawg7Jyg7ZiVIOugiOydtOu4lOydhCDtkZzsi5ztlaDsp4Ag7Jes67aA66W8IOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ+qwgSDqtazshLEg7ZWt66qpIO2BtOuemOyKpOyXkCDrjIDtlbQg6rCc67OE7KCB7Jy866GcIOygleq3nOyLneydhCDsoJXsnZjtlZjsl6wg6rWs7ISxIO2VreuqqSDsnbTrpoTsnYQg7ZmV7J247ZWY6rOgIO2VtOuLuSDsmKTrpZgg66mU7Iuc7KeA66W8IO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSDtgbTrnpjsiqTsl5Ag65Sw6528IOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQ7IScIOyCrOyaqSDqsIDriqXtlZwgQ0kg7Je07J2EIOygleydmO2VqeuLiOuLpC4g6rCBIO2VreuqqeydgCDtgbTrnpjsiqQg7J2066aE6rO8IO2VtOuLuSDtgbTrnpjsiqTsl5DshJwg7IKs7JqpIOqwgOuKpe2VnCDtlYTrk5wg67Cw7Je066GcIOq1rOyEseuQmOyWtOyVvCDtlanri4jri6QuIOuPmeyggSDtlYTrk5wg7ZWt66qp7J2AIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg7Iqk7YKk66eI66W8IOuUsOudvOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvOydmCDqtazshLEg7ZWt66qpIOygleugrOydhCDsnITtlZwg6riw67O4IOq1rOyEsSDtla3rqqkg7IaN7ISx7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+qzoOqwnSDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg6rKw6rO87J2YIOq1rOyEsSDtla3rqqkg7KCV66Cs7J2EIOychO2VnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsho3shLHsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ+ydtCDsnpHsl4XsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg6rKw6rO87J2YIOq1rOyEsSDtla3rqqkg7KCV66Cs7JeQIOuMgO2VnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsho3shLHsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7zsl5DshJwg6riw67O4IOq1rOyEsSDtla3rqqkg7Iic7ISc66W8IOygleydmO2VqeuLiOuLpC4g7JyE7Kq9OiDqsIDsnqUg7Jik656Y65CcIO2VreuqqeydhCDrp6gg7JyE7JeQIOuwsOy5mO2VqeuLiOuLpC4g7JWE656Y66GcOiDstZzsi6Ag7ZWt66qp7J20IOunqCDsnITsl5Ag7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDiSDqsrDqs7zsl5DshJwg6riw67O4IOq1rOyEsSDtla3rqqkg7Iic7ISc66W8IOygleydmO2VqeuLiOuLpC4g7JyE7Kq9OiDqsIDsnqUg7Jik656Y65CcIO2VreuqqeydhCDrp6gg7JyE7JeQIO2RnOyLnO2VqeuLiOuLpC4g7JWE656Y66GcOiDstZzsi6Ag7ZWt66qp7J2EIOunqCDsnITsl5Ag67Cw7LmY7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfsnbQg7J6R7JeF7J2YIOq1rOyEsSDtla3rqqkg6rKA7IOJIOqysOqzvOyXkOyEnCDquLDrs7gg6rWs7ISxIO2VreuqqSDsiJzshJzrpbwg7KCV7J2Y7ZWp64uI64ukLiDsnITroZw6IOqwgOyepSDsmKTrnpjrkJwg7ZWt66qp7J2EIOychOyXkCDtkZzsi5ztlanri4jri6QuIOyVhOuemOuhnDog7LWc7IugIO2VreuqqeydhCDrp6gg7JyE7JeQIOuwsOy5mO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIO2BtOuemOyKpOyXkCDrlLDrnbwg6rWs7ISxIO2VreuqqSDqsJzsmpTsl5Ag7ZGc7Iuc65CY64qUIENJ7J2YIOq4sOuzuCDsl7TsnYQg7KCV7J2Y7ZWp64uI64ukLiDqsIEg7ZWt66qp7J2AIO2BtOuemOyKpCDsnbTrpoTqs7wg7ZW064u5IO2BtOuemOyKpOyXkCDsgqzsmqkg6rCA64ql7ZWcIO2VhOuTnCDrsLDsl7TroZwg6rWs7ISx65CY7Ja07JW8IO2VqeuLiOuLpC4g64+Z7KCBIO2VhOuTnCDtla3rqqnsnYAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDsiqTtgqTrp4jrpbwg65Sw65287JW8IO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn7ZGc7Iuc7ZWgIOq4sOuzuCDqtIDqs4Qg6rmK7J2066W8IOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn6rWs7ISxIO2VreuqqSDqsoDsg4kg7ZmU66m07JeQIOq4sOuzuOyggeycvOuhnCDtkZzsi5zrkJjripQg6rWs7ISxIO2VreuqqSDqsoDsg4kg7IaN7ISx7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ+q1rOyEsSDtla3rqqkg6rKA7IOJIO2ZlOuptOyXkCDquLDrs7jsoIHsnLzroZwg7ZGc7Iuc65CY64qUIOq1rOyEsSDtla3rqqkg6rKA7IOJIOyGjeyEseydhCDsoJXsnZjtlanri4jri6QuIOyYiDogIu2CpCLripQg64+Z7KCBIO2VhOuTnOydmCDsnbTrpoQo7J20IOqyveyasCBcJ1hcJyksICLsvZjthZDsuKAi64qUIOuPmeyggSDtlYTrk5wg7Jyg7ZiV7JeQIOuUsOudvCDrj5nsoIEg7ZWE65Oc7J2YIOqwkijthY3siqTtirg6IFwn7YWN7Iqk7Yq4XCcsIOuTnOuhreuLpOyatDogXCcxXCcsIOuCoOynnC/si5zqsIQp7J207Ja07JW8IO2VqeuLiOuLpDogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwXCc7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg67CPIOuYkOuKlCBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdcJ0lUU01Db25maWdJdGVtXCcg7YG0656Y7Iqk7J2YIOq4sOuzuCDtlZjsnIQg6rCd7LK066W8IOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0NJIO2BtOuemOyKpOyXkCDrlLDrnbwg6rWs7ISxIO2VreuqqSDqsJzsmpTsl5DshJwg7IKs7JqpIOqwgOuKpe2VnCBDSSDsl7TsnYQg7KCV7J2Y7ZWp64uI64ukLiDqsIEg7ZWt66qp7J2AIO2BtOuemOyKpCDsnbTrpoTqs7wg7ZW064u5IO2BtOuemOyKpOyXkOyEnCDsgqzsmqkg6rCA64ql7ZWcIO2VhOuTnCDrsLDsl7TroZwg6rWs7ISx65CY7Ja07JW8IO2VqeuLiOuLpC4g64+Z7KCBIO2VhOuTnCDtla3rqqnsnYAgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDsiqTtgqTrp4jrpbwg65Sw65287JW8IO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAn7J20IO2ZlOuptOydmCDshJzsi53snojripQg7YWN7Iqk7Yq4IO2OuOynkeq4sCDqtazshLEg7JqU7IaM7J2YIOuGkuydtOulvCDsoJXsnZjtlanri4jri6QuIOyIq+yekCAo7ZS97IWAKSDrmJDripQg7Y287IS87Yq4IOqwkiAo7IOB64yAKeydhCDsnoXroKXtlZjsi63si5zsmKQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+q0gOumrOyekCDsnbjthLDtjpjsnbTsiqTsl5DshJwgQ0kg7KCV7J2YIO2OuOynkeq4sOydmCDtlokg7IiY66W8IOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAn7J247Iuc642Y7Yq4IOyDge2DnOydmCDsiJzshJzrpbwg64aS7J2MKOyYiDog7YGs66as7Iuc7YOIKeyXkOyEnCDrgq7snYwo7JiIOiDquLDriqUp7Jy866GcIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICfsl7DqsrDrkJwg7Yuw7LyT7J20IENJ7J2YIOyDge2DnOyXkCDsmIHtlqXsnYQg7KSEIOyImCDsnojripQg6rSA66CoIOuwsO2PrCDsg4Htg5zrpbwg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0g7ZmU66m07J2YIOqygOyDiSDsoJztlZzsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg7ZmU66m07J2YIOqygOyDiSDsoJztlZzsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW0g7ZmU66m07J2YIOqygOyDiSDsoJztlZzsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gg7ZmU66m07J2YIOqygOyDiSDsoJztlZzsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfrqqjrk6AgQ0kg7YG0656Y7Iqk7JeQIOuMgO2VtCDrp4Htgawg7YWM7J2067iUIOuzte2VqSDrs7TquLDsl5Ag7ZGc7Iuc65CY64qUIENJIOyXtOydhCDsoJXsnZjtlanri4jri6QuIO2VreuqqeydtCDsl4bsnLzrqbQg6riw67O4IOyXtOydtCDtkZzsi5zrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdDSSDtgbTrnpjsiqTsl5Ag65Sw6528IOunge2BrCDthYzsnbTruJQg67O17ZWpIOuztOq4sOyXkCDtkZzsi5zrkJjripQgQ0kg7Je07J2EIOygleydmO2VqeuLiOuLpC4g6rCBIO2VreuqqSDslZ7sl5DripQg7YG0656Y7IqkIOydtOumhOqzvCDsnbTspJEg7L2c66GgKOyYiDog7Lu07ZOo7YSwOjop7J20IOyZgOyVvCDtlanri4jri6QuIOuqqOuToCBDSeyXkCDqs7XthrXsnLzroZwg7KCB7Jqp65CY64qUIOuqhyDqsIDsp4AgQ0kg7IaN7ISx7J20IOyeiOyKteuLiOuLpCjsmIg6IENvbXB1dGVyIO2BtOuemOyKpOydmCDqsr3smrA6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIENJIOygleydmOyXkCDsoJXsnZjrkJwg64yA66GcIOqwnOuzhCBDSSDsho3shLHsnYQg7ZGc7Iuc7ZWY66Ck66m0IOuLpOydjCDsiqTtgqTrp4jrpbwg7IKs7Jqp7ZW07JW8IO2VqeuLiOuLpCjsmIg6IENvbXB1dGVyIO2BtOuemOyKpOydmCDqsr3smrApOiDsu7Ttk6jthLA6Ou2VmOuTnOuUlOyKpO2BrDo6MSwg7Lu07ZOo7YSwOjrtlZjrk5zrlJTsiqTtgaw6OjE6OuyaqeufiTo6MSwg7Lu07ZOo7YSwOjrtlZjrk5zrlJTsiqTtgaw6OjIsIOy7tO2TqO2EsDo67ZWY65Oc65SU7Iqk7YGsOjoyOjrsmqnrn4k6OjEuIENJIO2BtOuemOyKpOyXkCDrjIDtlZwg7ZWt66qp7J20IOyXhuuKlCDqsr3smrAg6riw67O4IOyXtOydtCDtkZzsi5zrkKnri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSDqtazshLEg7ZWt66qpIEFDTCDqtazsobDsnZgg7IS4IOuyiOynuCDsiJjspIDsl5DshJwgXCfrj5nsnpFcJ+yXkCDsgqzsmqntlaAg7IiYIOyeiOuKlCDtla3rqqnsnYQg7KCV7J2Y7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g6rWs7ISxIO2VreuqqSBBQ0wg6rWs7KGw7J2YIOyyqyDrsojsp7gg7IiY7KSA7JeQ7IScIOyCrOyaqe2VoCDsiJgg7J6I64qUIO2VreuqqeydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0lUU00g6rWs7ISxIO2VreuqqSBBQ0wg6rWs7KGw7J2YIOuRkCDrsojsp7gg7IiY7KSA7JeQ7IScIOyCrOyaqe2VoCDsiJgg7J6I64qUIO2VreuqqeydhCDsoJXsnZjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ+yXsOqysOuQnCBDSeydmCDsg4Htg5zsl5Ag7JiB7Zal7J2EIOuvuOy5oCDsiJgg7J6I64qUIOunge2BrCDsnKDtmJUo7Yuw7LyTIOq0gOygkOyXkOyEnCDrqoXrqoXrkKgp7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfsl7DqsrDrkJwgQ0nsnZgg7IOB7YOc7JeQIOyYge2WpeydhCDspIQg7IiYIOyeiOuKlCDti7DsvJMg7Jyg7ZiV7J2EIOygleydmO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICfsoJXsnZgg7JeF642w7J207Yq4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfqtazshLEg7ZWt66qpIOyCreygnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ+uwsO2PrCDsg4Htg5wg7IOJ7IOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ+uwsO2PrCDsg4Htg5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn7KSR67O1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAn64+Z7KCBIO2VhOuTnCDrs4Dqsr0g7IKs7ZWt7J20IO2PrO2VqOuQnCDqsr3smrAg6rWs7ISxIO2VreuqqSDsoJXsnZjqsIAg64+Z6riw7ZmU65CY7KeAIOyViuydgCDqsoPsnLzroZwg7ZGc7Iuc7ZWY64qUIOuPmeyggSDtlYTrk5wg7J2067Kk7Yq4IOuqqOuTiOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg7LaU6rCAIElUU00g7ZWE65OcIO2ZlOuptOyXkCDtkZzsi5zrkJjripQg64+Z7KCBIO2VhOuTnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqwnOyalCDtmZTrqbTsl5Ag7ZGc7Iuc65CY64qUIOuPmeyggSDtlYTrk5zsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsoDsg4kg7ZmU66m07JeQIO2RnOyLnOuQmOuKlCDrj5nsoIEg7ZWE65Oc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7ZSE65+w7Yq47JeU65Oc7JeQ7IScIO2VnCDrsojsl5Ag65GQIOqwnCDsnbTsg4HsnZgg6rWs7ISxIO2VreuqqeyXkCDrjIDtlbQg7J6R7JeF7ZWgIOyImCDsnojrj4TroZ0g6rWs7ISxIO2VreuqqSDsnbzqtIQg7J6R7JeFIOq4sOuKpeydhCDsgqzsmqkg7ISk7KCV7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAn64KY7Je065CcIOq3uOujueyXkCDrjIDtlbTshJzrp4wg6rWs7ISxIO2VreuqqSDsnbzqtIQg7J6R7JeFIOq4sOuKpeydhCDtmZzshLHtmZTtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ+qzoOycoO2VnCDsnbTrpoTsnbQg7J6I64qU7KeAIElUU00g6rWs7ISxIO2VreuqqeydhCDtmZXsnbjtlZjripQg6riw64ql7J2EIOyCrOyaqS/sgqzsmqkg7JWIIO2VqOycvOuhnCDshKTsoJXtlanri4jri6QuIOydtCDsmLXshZjsnYQg7IKs7JqpIOyEpOygle2VmOq4sCDsoITsl5Ag7Iuc7Iqk7YWc7JeQIOydtOuvuCDsobTsnqztlZjripQg6rWs7ISxIO2VreuqqeyXkCDspJHrs7XrkJwg7J2066aE7J20IOyeiOuKlOyngCDtmZXsnbjtlbTslbwg7ZWp64uI64ukLiDsnbQg7J6R7JeF7J2AIOy9mOyGlCDrqoXroLnsnbggQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVz66W8IOyCrOyaqe2VmOyXrCDsiJjtlontlaAg7IiYIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn7J2067Kk7Yq4IOuqqOuTiOydhCDsgqzsmqntlZjsl6wg7Yuw7LyTLWNvbmZpZ2l0ZW0tbGlua+yXkOyEnCBjb25maWdpdGVtLXN0YXR1c+ulvCDshKTsoJXtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ+yghOyytCDthY3siqTtirgg6rKA7IOJ7JeQIOyCrOyaqeuQmOuKlCDqtazshLEg7ZWt66qpIOyduOuNseyKpOydmCDtlYTrk5zsnoXri4jri6QuIO2VhOuTnOuPhCDsoIDsnqXrkJjsp4Drp4wg7KCE7LK0IOq4sOuKpeyXkCDtlYTsiJjsoIHsnbgg6rKD7J2AIOyVhOuLmeuLiOuLpC4g7LKo67aAIO2MjOydvCDtj6ztlajsnYAg7ZWt66qp7J2EIDDsnLzroZwg7ISk7KCV7ZWY6rGw64KYIOyCreygnO2VmOyXrCDruYTtmZzshLHtmZTtlaAg7IiYIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ+yghOyytCDthY3siqTtirgg6rKA7IOJIOyZuOyXkCDri6Trpbgg7Jqp64+E66GcIOyCrOyaqeuQmOuKlCDqtazshLEg7ZWt66qpIOyduOuNseyKpOyXkCDsoIDsnqXrkJwg7ZWE65Oc7J6F64uI64ukLiDsoITssrQg6riw64ql7J2EIOyCrOyaqe2VmOugpOuptCDrqqjrk6Ag7ZWE65Oc6rCAIO2VhOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICfrqqjrk6Ag7Ju57ISc67mE7IqkKO2CpCnsl5Ag64yA7ZW0IOqwgOyguOyYpOq4sOqwgCDsoJztlZzrkJjripQg7YG0656Y7IqkKOqwkinsnZgg67Cw7Je07J2EIOygleydmO2VoCDsiJgg7J6I7Iq164uI64ukLiDshKDtg53tlZwg66qo65OgIO2BtOuemOyKpCDrmJDripQg66qo65OgIOq4sOyhtCDtgbTrnpjsiqTsl5Ag64yA7ZW0IOyLneuzhCDsho3shLHsnYQg7J2467O07LukIOq1rOyEseyXkOyEnCDshKDtg53tlbTslbwg7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2gg7J2467O07LukIOugiOydtOyWtOyXkCDrjIDtlZwgR2VuZXJpY0ludGVyZmFjZSDrqqjrk4gg65Ox66GdLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCDsnbjrs7Tsu6Qg66CI7J207Ja07JeQIOuMgO2VnCBHZW5lcmljSW50ZXJmYWNlIOuqqOuTiCDrk7HroZ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCDsnbjrs7Tsu6Qg66CI7J207Ja07JeQIOuMgO2VnCBHZW5lcmljSW50ZXJmYWNlIOuqqOuTiCDrk7HroZ0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00g6rWs7ISxIO2VreuqqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00g6rWs7ISxIO2VreuqqSDqsJzsmpQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAn7J247Iuc642Y7Yq4IOyDge2DnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDieyXkCDrsLDtj6wg7IOB7YOc66W8IO2PrO2VqO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOydmCDqtazshLEg7ZWt66qpIOqygOyDieyXkCDsnbjsi5zrjZjtirgg7IOB7YOc66W8IO2PrO2VqO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn7J20IOyekeyXheydmCDqsrDqs7zsl5Ag7ZGc7Iuc7ZWgIOy1nOuMgCDqtazshLEg7ZWt66qpIOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfrqqjrk4jsnYQg7IKs7Jqp7ZWY7JesIO2BtOuemOyKpOulvCDri7Tri7ntlZjripQg6re466O57J2EIO2ZleyduO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfrqqjrk4jsnYQg7YG066at7ZWY7JesIOq1rOyEsSDtla3rqqnsnYQg64u064u57ZWY64qUIOq3uOujueydhCDtmZXsnbjtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn66qo65OI7J2EIOyCrOyaqe2VmOyXrCBJVFNNIOq1rOyEsSDtla3rqqkg7Ya16rOE66W8IOyDneyEse2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfsnbTrpoQg66qo65OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfsiKvsnpAg66qo65OIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwg6rKA7IOJIOqysOqzvOydmCDqsIEg7Y6Y7J207KeA7JeQIO2RnOyLnO2VoCDqtazshLEg7ZWt66qp7J2YIOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn6rOg6rCdIOyduO2EsO2OmOydtOyKpOyXkOyEnCDqsoDsg4kg6rKw6rO87J2YIOqwgSDtjpjsnbTsp4Dsl5Ag7ZGc7Iuc7ZWgIOq1rOyEsSDtla3rqqkg7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfqsoDsg4ntlaAg6rCc7LK0LCDtkZzsi5ztlaAg7ZWt66qpIOyImCwg7ZGc7Iuc7ZWgIOyGjeyEsS4g6rWs7ISxIO2VreuqqSDsho3shLHsnYAgRWxhc3RpY3NlYXJjaOulvCDthrXtlbQg66qF7Iuc7KCB7Jy866GcIOyggOyepe2VtOyVvCDtlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ+qwnOyalC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsnZgg7Lm07YWM6rOg66as7JeQIOuMgO2VnCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yekeydgCDqtazshLEg7ZWt66qpIOqwnOyalOydmCDsl7Qg7ZWE7YSw7JeQIOuMgO2VnCDrp6TqsJwg67OA7IiY7J6F64uI64ukLiDssLjqs6A6IFwn7Zmc7ISxXCfsnYQgMOycvOuhnCDshKTsoJXtlZjrqbQg7IOB64u07JuQ7J20IOqwnOyduCDquLDrs7gg7ISk7KCV7JeQ7IScIOydtCDqt7jro7nsnZgg7ISk7KCV7J2EIO2OuOynke2VoCDsiJgg7JeG7KeA66eMIOq0gOumrOyekOqwgCDri6Trpbgg7IKs7Jqp7J6Q7J2YIOyEpOygleydhCDrjIDsi6Ag7Y647KeR7ZWgIOyImCDsnojsirXri4jri6QuIOyCrOyaqeyekCDsnbjthLDtjpjsnbTsiqTsl5DshJwg7J2065+s7ZWcIOyEpOygleydtCDtkZzsi5zrkKAg7JiB7Jet7J2EIOygnOyWtO2VmOugpOuptCBcJ1ByZWZlcmVuY2VHcm91cFwn7J2EIOyCrOyaqe2VmOyEuOyalC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg67Cw7Y+sIOyDge2DnOydmCDrp6TqsJzrs4DsiJgg7IOJ7IOB7J2EIOyngOygle2VoCDsiJgg7J6I7Iq164uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg67Cw7Y+sIOyDge2DnOyXkCDrjIDtlZwg66ek6rCc67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICfsnbzrsJgg7Lm07YOI66Gc6re4IOyGjeyEseydmCDsmIjsi5wg6raM7ZWcIOq3uOujueyXkCDrjIDtlZwg66ek6rCc67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsnZgg7J2066aEIOuqqOuTiOyXkCDrjIDtlZwg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsnZgg67KI7Zi4IOuqqOuTiOyXkCDrjIDtlZwg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn7Y6Y7J207KeA7J2YIOunpOqwnOuzgOyImCjqtazshLEg7ZWt66qp7J20IO2RnOyLnOuQmOuKlCDtjpjsnbTsp4Ap7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq4sOuzuCDshKTsoJUg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqkg7YG0656Y7Iqk7JeQIOuMgO2VnCDrsoTsoIQg66y47J6Q7Je0IOuqqOuTiOydmCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6riw67O4IOyEpOyglSDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqSDtgbTrnpjsiqTsl5Ag64yA7ZWcIOuyhOyghCDrrLjsnpDsl7Qg7YWc7ZSM66a/IO2ItO2CtyDrqqjrk4jsnZgg66ek6rCcIOuzgOyImOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDquLDrs7gg7ISk7KCVIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qpIO2BtOuemOyKpOyXkCDrjIDtlZwg67KE7KCEIO2KuOumrOqxsOydmCDrp6TqsJwg67OA7IiY7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ+q1rOyEseuQnCDqsIEg7Ju57ISc67mE7Iqk7J2YIOqwgSDsnbTrsqTtirjsl5Ag64yA7ZW0IOq1rOyEseuQnCDsnpHsl4XsnYQgKOyduOuztOy7pOuhnOyEnCkg7IiY7ZaJ7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn6raM7ZWcIOq3uOujuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIOyyqOu2gCDsnpHsl4XsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDqsoDsg4kg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfqs6DqsJ0g7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDqsoDsg4kg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIElUU00g6rWs7ISxIO2VreuqqSDtirjrpqwg67O06riwIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIO2ZleuMgCDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwgSVRTTSDqtazshLEg7ZWt66qpIOy2lOqwgCDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7JeQ7IScIOydvOq0hCBJVFNNIOq1rOyEsSDtla3rqqkg7ZmU66m07J2EIOyCrOyaqe2VmOq4sCDsnITtlbQg7ZWE7JqU7ZWcIOq2jO2VnOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg7Y647KeRIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsl5DshJwg6riw66GdIElUU00g6rWs7ISxIO2VreuqqSDtmZTrqbTsnYQg7IKs7Jqp7ZWY6riwIOychO2VtCDtlYTsmpTtlZwg6raM7ZWc7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkOyEnCBJVFNNIOq1rOyEsSDtla3rqqkg7J247IeEIO2ZlOuptOydhCDsgqzsmqntlZjquLAg7JyE7ZW0IO2VhOyalO2VnCDqtoztlZzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfqtazshLEg7ZWt66qp7J2EIOyCreygnO2VmOugpOuptCDtlYTsmpTtlZwg6raM7ZWc7J20IO2VhOyalO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfqtazshLEg7ZWt66qp7J2EIOqygOyDie2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ+2LsOy8k+ydtCBDSeyXkCDsl7DqsrDrkJjrqbQg7J6Q64+Z7Jy866GcIENJ7J2YIOyduOyLnOuNmO2KuCDsg4Htg5zrpbwg7ISk7KCV7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDsnbzqtIQg7ZmU66m07JeQ7IScIOuwsO2PrCDsg4Htg5zrpbwg7ISk7KCV7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg7J286rSEIO2ZlOuptOyXkOyEnCDsnbjsi5zrjZjtirgg7IOB7YOc66W8IOyEpOygle2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg7ZmV64yAL+y2leyGjCDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqeydhCDri6Trpbgg6rCc7LK07JmAIOyXsOqysO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDrqZTribTsl5Ag7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+yDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg6rWs7ISxIO2VreuqqSDqsJzsmpTsl5Ag7J6I64qUIOq1rOyEsSDtla3rqqnsnZgg6riw66Gd7JeQIOyVoeyEuOyKpO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDrqZTribTsl5Ag7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfrqZTribTsl5Ag7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOydmCDtmZXrjIAg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnZgg6riw66Gd7JeQIOyVoeyEuOyKpO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn66mU64m07JeQIOyDgeuLtOybkCDsnbjthLDtjpjsnbTsiqTsnZgg7ZmV64yAIOuztOq4sOyXkOyEnCDqtazshLEg7ZWt66qp7J2EIOyCreygnO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDtkZzsi5ztlanri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfrqZTribTsl5Ag6rWs7ISxIO2VreuqqSDrp4Htgazrpbwg7Yq466asIOuztOq4sOuhnCDtkZzsi5ztlZjripQg66eB7YGs66W8IO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQIOyeiOuKlCDqtazshLEg7ZWt66qp7J2EIOuzteygnO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDrqZTribTsl5Ag7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfrqZTribTsl5Ag66eB7YGs66W8IO2RnOyLnO2VmOyXrCDsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIO2ZleuMgC/stpXshowg67O06riw7JeQ7IScIOq1rOyEsSDtla3rqqnsnYQg67O17KCc7ZWgIOyImCDsnojsirXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIO2ZleuMgCDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqeydhCDtjrjsp5HtlaAg7IiYIOyeiOuKlCDrp4Htgazrpbwg66mU64m07JeQIO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+uplOuJtOyXkCDsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg7ZmV64yAL+y2leyGjCDrs7TquLDroZwg64+M7JWE6rCIIOyImCDsnojripQg66eB7YGs66W8IO2RnOyLnO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfrqZTribTsl5Ag66eB7YGs66W8IO2RnOyLnO2VmOyXrCDsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIO2ZleuMgCDrs7TquLDsl5DshJwg6rWs7ISxIO2VreuqqeydhCDsnbjsh4TtlaAg7IiYIOyeiOyKteuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfsg4Hri7Tsm5Ag7J247YSw7Y6Y7J207Iqk7J2YIOq1rOyEsSDtla3rqqkg6rCc7JqU7JeQIOyeiOuKlCDqtazshLEg7ZWt66qp7J2EIO2ZleuMgO2VoCDsiJgg7J6I64qUIOunge2BrOulvCDrqZTribTsl5Ag7ZGc7Iuc7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn7IOB64u07JuQIOyduO2EsO2OmOydtOyKpOyXkCDqtazshLEg7ZWt66qpIOq4sOuhneydhCDtkZzsi5ztlanri4jri6Qo7Jet7IicKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn7ISg7YOd65CY7KeAIOyViuydgCDqsr3smrAg7ZGc7Iuc65CY64qUIOq4sOuzuCDsubTthYzqs6DrpqzsnoXri4jri6QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfqtazshLEg7ZWt66qp7J2YIOyLneuzhOyekCjsmIg6IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jKeyeheuLiOuLpC4g6riw67O46rCS7J2AIENvbmZpZ0l0ZW0j7J6F64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnQ29uZmlnSXRlbUZldGNoIOyduOuztOy7pOulvCDsnpDrj5nsnLzroZwg7Yq466as6rGw7ZWp64uI64ukLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAn67KE7KCEIOusuOyekOyXtCDtkZztmITsi50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn67KE7KCEIOusuOyekOyXtCDrqqjrk4gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn67KE7KCEIO2KuOumrOqxsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn7LqQ7Iuc65CcIO2VhOuTnCDsooXsho3shLHsnYQg7ZmV7J247ZWY7JesIENvbmZpZ0l0ZW1BQ0zsnZgg7Iuk7ZaJ7J2EIO2UvO2VoCDsiJgg7J6I64qU7KeAIOyXrOu2gC4g7J20IOyYteyFmOydgCDsiJjsi53snZgg66Gc65SpIOyLnOqwhOydhCDqsJzshKDtlaAg7IiYIOyeiOyngOunjCwgQUNMTW9kdWxl7J2EIElUU01Db25maWdJdGVtIOuwjyBGb3JtLVJldHVyblR5cGVz7JeQIOyCrOyaqe2VmOugpOuKlCDqsr3smrAg67mE7Zmc7ISx7ZmU7ZW07JW8IO2VqeuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ+2XpOuNlOyXkCDtkZzsi5zrkJjripQg7J2867CYIOygleuztOyeheuLiOuLpC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICftgbTrnpjsiqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn6riA66Gc67KMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn7Y+s7Iqk7Yq4IO2UhOuhnOuNleyFmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn7IKs7KCEIOyDneyCsOyEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn7IOd7IKw7ISxJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNy417J247LmYKDQ0LjQ1Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIx7J247LmYKDUzLjM0Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LjI17J247LmYKDY2LjY4Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEuNeyduOy5mCg4MC4wMWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOeyduOy5mCDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLjc17J247LmYKDQuNDVjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNeyduOy5mCg4OC45Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIx7J247LmYIOuemSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LjXsnbjsuZgoOTcuNzljbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjPsnbjsuZgg656ZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMuNuyduOy5mCg2MDBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQy7J247LmYKDEwNi42OGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcuMjXsnbjsuZgoMTIwLjAyY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLjXsnbjsuZgoOC44OWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Mi417J247LmYKDEzMy4zNWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLjXsnbjsuZgoODAwbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Ny43NeyduOy5mCgxNDYuNjhjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNS407J247LmYKDkwMG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjPsnbjsuZgoMTYwLjAyY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LjTsnbjsuZgoMTAwMG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjguMjXsnbjsuZgoMTczLjM1Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUuMjXsnbjsuZgoMTMuMzRjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMuNeyduOy5mCgxODYuNjljbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLjPsnbjsuZgoMTEwMG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4Ljc17J247LmYKDIwMC4wMmNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0Ny4y7J247LmYKDEyMDBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg07J247LmYKDIxMy4zNmNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA37J247LmYKDE3Ljc4Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDguNzXsnbjsuZgoMjIuMjNjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAuNeyduOy5mCgyNi42N2NtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIuMjXsnbjsuZgoMzEuMTJjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE07J247LmYKDM1LjU2Y20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNS43NeyduOy5mCg0MC4wMWNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ+2ajOqzhCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ+yjvOyGjCDtlaDri7knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ+q0gOumrOyekCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfslYTrgqDroZzqt7gg7KCE7ZmUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAn7Ja07ZSM65287J207Ja47IqkIOycoO2YlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ+uwsO2EsOumrCDsmqnrn4koQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ+uwsO2EsOumrCDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfruYzrlKknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ+uyhOyKpCDsnbjthLDtjpjsnbTsiqQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUg7YG0656Y7IqkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICfsmqnrn4koR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn6re4656Y7ZS9IOy5tOuTnOuLuSDsmqnrn4knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfsubTrk5wg67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAn7Lm065OcIOumrOuNlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfsubTrk5wg7Jyg7ZiVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICftgbTrnbzsnbTslrjtirgg7J247Kad7IScJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ+2BtOudvOydtOyWuO2KuCDshoztlITtirjsm6jslrQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn6rOg6rCdIOy5tO2FjOqzoOumrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfsi5zqs4Qg7IaN64+EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICfsi5zqs4Qg7IaN64+EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfsvZTrk5wg7ISc66qFIOyduOymneyEnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn7ZqM7J2Y7JqpIOyghO2ZlCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ+y7qOyEpO2MhSDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ+yXsOudveyymCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn7LSd7YyQIOyXsOudveyymCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ+y7qO2FjOydtOuEiCDqtIDrpqwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICfqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ+qzhOyVvSDsnKDtmJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICfqs4Tslb0g6riw6rCEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ+qzhOyVvSDquLDqsIQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn66y07ISgIOyghO2ZlOq4sChERUNUIOyghO2ZlOq4sCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn67mE7JqpIOuLqOychCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ+udvOydtOyEoOyKpCDsiJgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ+yDneyEsSDrgqDsp5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ+unnuy2pO2YlSDrnpknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Ag7JiI7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMg7ISc67KEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICfshqHsnqUg64Kg7KecJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfso7zrrLgg64Kg7KecJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfrs7Tspp0g6riw6rCEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ+y2nOyLnCDrgqDsp5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+uNsOyKpO2BrO2GsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ+uUlOyKpO2UjOugiOydtCDtj6ztirgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfrrLjshJwg7ISc66qFIOyduOymneyEnCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kg656ZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfsnbTrqZTsnbwg7J247Kad7IScKFMvTUlNRSDsnbjspp3shJwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ+qzoOyaqSDqs4Tslb0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfstZzsooUgSVAg7KO87IaMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAn7KeA7JuQIOyiheujjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ+unjOujjCDrgqDsp5wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ+yZuOyepSDtlZjrk5wg65Oc65287J2067iMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn67Cp7ZmU67K9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAn7Y6M7Juo7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn7ZSM65287J207ZygIOyXkOuEiOyngCDsoIDsnqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICftj7wg7Yyp7YSwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICftlITrnpzssKjsnbTspogg6rOE7JW9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn7ZSE66as7Juo7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ+ydvOuwmCDsoJXrs7QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfqt7jrnpjtlL0g7Lm065OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICfqt7jrnpjtlL0g7Lm065OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn7ZWY65Oc7Juo7Ja0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn7ZWY65Oc7Juo7Ja0IOuqqOuNuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICftlZjrk5zsm6jslrQg66y06rKMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICftl6Trk5zshYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCDtlITroZzthqDsvZwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSUQg67CPIOyVoeyEuOyKpCDqtIDrpqwoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAn7J6s6rOgIOuyiO2YuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ+2IrOyekCDruYTsmqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfshqHsnqUg67KI7Zi4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn7YKk67O065OcJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCDrqqjri4jthLAo7JWh7KCVIOuUlOyKpO2UjOugiOydtCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCDrqqjri4jthLAo67Cc6rSRIOuLpOydtOyYpOuTnCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn7Jyg7ISgIOyghO2ZlCc7CiAgICAkU2VsZi0+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+ybuey6oCc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</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+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Bhc2lyaW5raXRlIMWhxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1Z5a2R5dGkgcGFpZcWha8SFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1RhaXAgcGF0IGllxaFrb3RpIGFua3N0ZXNuxJdzZSB2ZXJzaWpvc2U/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnIkNvbmZpZ0l0ZW0iIG1lZMW+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+dXJuYWzEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdUdXJpdGUgSVRTTUNvbmZpZ0l0ZW0gYXBpYnLEl8W+dGlzLCBrdXJpb3MgbsSXcmEgc2luY2hyb25penVvdG9zLiDErmRpZWtpdGUgc2F2byBJVFNNQ29uZmlnSXRlbSBkaW5hbWluacWzIGxhdWvFsyBwYWtlaXRpbXVzLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnUGFzaWJhaWfEmXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdUZWNobmluxJcgcHJpZcW+acWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdCYW5kb21hc2lzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFudW9qYW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlbW9udGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdJxaHEl2rEmXMgxK8gcGVuc2lqxIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUGVyxb5pxatyxJdraXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0YXZpbWFzIC8ga29reWLEl3MgdcW+dGlrcmluaW1hcyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnQXDFvnZhbGdhIGlyIHBhdHZpcnRpbmltYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnS2xhc2nFsyBpciAoYXJiYSkgdmFpZG1lbsWzIGJlaSBzdSBqYWlzIHN1c2lqdXNpxbMgbGF1a8WzIGltcG9ydGF2aW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0ltcG9ydHVvamFudCBrbGFzxJkgxK92eWtvIGtsYWlkYS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFBhc2zEl3B0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gcGFyb2R5dGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaWTFvmlhIHRhaWt5dGkgacWhcGzEl3N0aW5lcyBwYWllxaFrb3Mgc8SFbHlnYXMgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha2FpLiBOYXVkb2RhbWkgxaFpxIUgZnVua2NpasSFIGdhbGl0ZSBpZcWha290aSwgcHZ6Liwga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhdmFkaW5pbW8gc3UgdG9raW9taXMgc8SFbHlnb21pcywga2FpcCAiKCprZXkxKiYmKmtleTIqKSIgYXJiYSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ0xlaWTFvmlhIHRhaWt5dGkgacWhcGzEl3N0aW5lcyBwYWllxaFrb3Mgc8SFbHlnYXMga2xpZW50xbMgc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb2plLiBOYXVkb2RhbWkgxaFpxIUgZnVua2NpasSFIGdhbGl0ZSBpZcWha290aSwgcHZ6Liwga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHBhdmFkaW5pbW8gc3UgdG9raW9taXMgc8SFbHlnb21pcywga2FpcCAiKCprZXkxKiYmKmtleTIqKSIgYXJiYSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1ByaXNraXJ0aSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnS2xpZW50byDEr21vbmVpIHByaXNraXJ0aSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0tsaWVudG8gbmF1ZG90b2p1aSBwcmlza2lydGkgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgbnVzdGF0eW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnVW5pa2FsYXVzIHBhdmFkaW5pbW8gdGlrcmluYW1hIHRpayB0b2plIHBhxI1pb2plIENvbmZpZ0l0ZW0ga2xhc8SXamUgKCJjbGFzcyIpIGFyYmEgcGFzYXVsaW5pdSBtYXN0dSAoImdsb2JhbCIpLCB0b2TEl2wgaWXFoWthbnQgcGFzaWthcnRvamltxbMgYXRzacW+dmVsZ2lhbWEgxK8ga2lla3ZpZW7EhSBlc2FtxIUgQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1Bhc2lyaW5raXRlIG1vZHVsxK8sIGt1cmlzIHXFvnRpa3JpbnMgcGF2YWRpbmltxbMgc2NoZW3EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1Bhc2lyaW5raXRlIG1vZHVsxK8sIGt1cmlzIHXFvnRpa3JpbnMgbnVtZXJpxbMgc2NoZW3EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnUGFzaXJpbmtpdGUgbW9kdWzErywga3VyaXMgdcW+dGlrcmlucyB2ZXJzaWrFsyBlaWx1xI1pxbMgc2NoZW3EhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdQYXNpcmlua2l0ZSBhdHJpYnV0dXMsIGthZCBixat0xbMgc3VrdXJ0YSBuYXVqYSB2ZXJzaWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdQYXNpcmlua2l0ZSBrYXRlZ29yaWphcywga3VyaWFzIG5vcml0ZSBwcmlza2lydGkgxaFpYWkga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnU3R1bHBlbGlvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgZmlsdHJhaSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnU3R1bHBlbGlhaSwga3VyaXVvcyBnYWxpbWEgZmlsdHJ1b3RpIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLiBQYXN0YWJhOiBMZWlkxb5pYW1pIHRpayBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gYXRyaWJ1dGFpIGlyIGRpbmFtaW5pYWkgbGF1a2FpIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudGFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcHJpZMSXamltYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHJlZGFnYXZpbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcnVva2l0ZSBlbGVtZW50byDEr3Z5a2nFsyBtb2R1bMSvLCBrdXJpcyBsZWlkxb5pYSByZWdpc3RydW90aSBpc3RvcmlqxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnS29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyDEr3Z5a2nFsyBtb2R1bGlzLCBrdXJpcyBhdG5hdWppbmEga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBkYWJhcnRpbsSZIGFwaWJyxJfFvnTEry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGlzdG9yaWphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gc3BhdXNkaW5pbWFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ8WrcnVvdGkgZWxlbWVudG8gcHJpYXJ0aW5pbcSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgbWVkxb5pbyB2YWl6ZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfFoGnFsyBrbGFzacWzIENvbmZpZ0l0ZW1zIG5lYnVzIHNhdWdvbWkgIkVsYXN0aWNzZWFyY2giIHNlcnZlcnlqZS4gTm9yaW50IHRhaSBwcml0YWlreXRpIGVzYW1pZW1zIENJLCBDSSBtaWdyYWNpasSFIHJlaWtpYSBwYWxlaXN0aSBwZXIga29uc29sxJksIHBha2VpdHVzIMWhacSFIHBhcmlua3TEry4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnIkVsYXN0aWNzZWFyY2giIHNlcnZlcnlqZSBuZWJ1cyBzYXVnb21pICJDb25maWdJdGVtcyIgc3UgxaFpb21pcyBkaWVnaW1vIGLFq3Nlbm9taXMuIE5vcmludCB0YWkgcHJpdGFpa3l0aSBlc2FtaWVtcyBDSSwgQ0kgcGVya8SXbGltxIUgcmVpa2lhIHBhbGVpc3RpIHBlciBrb25zb2zEmSwgcGFrZWl0dXMgxaFpxIUgcGFyaW5rdMSvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcmliYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBsaW1pdGFzIHZpZW5hbWUgcHVzbGFweWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnS29uZmlnxatyYWNpam9zIHZhbGR5bW8gZHVvbWVuxbMgYmF6xJcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gbWFzaW5pcyBtb2R1bGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGFpZcWha2EgYWdlbnRvIHPEhXNham9zIGdhbGluaWFtZSBtYXLFoXJ1dGl6YXRvcml1amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1N1a3Vya2l0ZSBpciB0dmFya3lraXRlIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXBpYnLEl8W+dGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ1N1a3VyaWEgIkNvbmZpZ0l0ZW1zIiBiaWxpZXR1cyB0YW0gdGlrcmFpcyBsYWlrbyBtb21lbnRhaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0tsaWVudGFpIGdhbGkgbWF0eXRpIGlzdG9yaW5lcyBDSSB2ZXJzaWphcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS2xpZW50YWkgdHVyaSBnYWxpbXlixJkgcmFua2luaXUgYsWrZHUgcGVyanVuZ3RpIGlzdG9yaW5lcyBDSSB2ZXJzaWphcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdOdW1hdHl0aWVqaSBkdW9tZW55cywga3VyaXVvcyByZWlraWEgbmF1ZG90aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcGFpZcWha29zIGVrcmFubyBhdHJpYnV0dWkuIFBhdnl6ZHlzOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ051bWF0eXRpZWppIGR1b21lbnlzLCBrdXJpdW9zIHJlaWtpYSBuYXVkb3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwYWllxaFrb3MgZWtyYW5vIGF0cmlidXR1aS4gUGF2eXpkeXM6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdBcGlicsSXxb50aSB2ZWlrc211cywga2FpIHN1c2lldMWzIG9iamVrdMWzIHZhbGRpa2x5amUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKSB5cmEgbnVzdGF0eW3FsyBteWd0dWthcy4gQXRrcmVpcGtpdGUgZMSXbWVzxK8sIGthZCDFoWl1b3NlIHZlaWtzbXVvc2UgdHVyaSBixat0aSB1xb5yZWdpc3RydW90aSDFoWllIEpTIGlyIENTUyBmYWlsYWk6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGlyIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmtpdGUgIlRlbXBsYXRlOjpUb29sa2l0IiBzY2hlbcSFLCBza2lydMSFIHZlcnNpasWzIGVpbHV0xJdtcy4gTmF1ZG9qYW1hIHRpayB0YWRhLCBqZWkgdmVyc2lqxbMgZWlsdcSNacWzIG1vZHVsaXMgbnVzdGF0eXRhcyDEryBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdBcGlicsSXxb5raXRlIHPEhWx5Z8WzLCBrdXJpb21pcyBrbGllbnR1aSBsZWlkxb5pYW1hIG1hdHl0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFLCByaW5raW7Ery4gU8SFbHlnYXMgZ2FsaW1hIGFwcmlib3RpIHRhbSB0aWtyb21zIGtsaWVudMWzIGdydXDEl21zLiBQYXZhZGluaW1hcyB5cmEgdmllbmludGVsaXMgcHJpdmFsb21hcyBhdHJpYnV0YXMuIEplaSBraXTFsyBwYXJpbmvEjWnFsyBuZW51cm9keXRhLCB2aXNpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkgYnVzIG1hdG9taSB0b2plIGthdGVnb3Jpam9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhbWkgcmVpa2FsaW5naSBsZWlkaW1haSBpxaF0cmludGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHVzIG5hdWRvamFudCBiZW5kcsSFasSFIHPEhXNhasSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWFtaSByZWlrYWxpbmdpIGxlaWRpbWFpIGdhdXRpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnR1cyBuYXVkb2phbnQgYmVuZHLEhWrEhSBzxIVzYWrEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhbWkgcmVpa2FsaW5naSBsZWlkaW1haSBpZcWha290aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgbmF1ZG9qYW50IGJlbmRyxIVqxIUgc8SFc2FqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSBSZWlrYWxpbmdpIGxlaWRpbWFpIG51c3RhdHl0aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50dXMgbmF1ZG9qYW50IGJlbmRyxIVqxIUgc8SFc2FqxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhIGFwxb52YWxnb3MgbW9kdWzErywgc2tpcnTEhSBtYcW+YWphbSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHPEhXJhxaFvIHZhaXpkdWkgcm9keXRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdOdXN0YXRvLCBhciBtYXpnxbMganVuZ3R5c2UgdHVyaSBixat0aSByb2RvbW9zIG51b3JvZG9zIHRpcG8gZXRpa2V0xJdzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnQXBpYnLEl8W+aWEgcmVndWxpYXJpYXMgacWhcmFpxaFrYXMgYXRza2lyYWkga2lla3ZpZW5haSAiQ29uZmlnSXRlbSIga2xhc2VpLCBrYWQgYsWrdMWzIGdhbGltYSBwYXRpa3JpbnRpICJDb25maWdJdGVtIiBwYXZhZGluaW3EhSBpciByb2R5dGkgYXRpdGlua2FtdXMga2xhaWTFsyBwcmFuZcWhaW11cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOdXN0YXRvIGdhbGltdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXRvam8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHLFq8WhaWF2aW11aSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgcmV6dWx0YXR1b3NlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0xIVqxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHLFq8WhaWF2aW11aSBrbGllbnTFsyBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyByZXp1bHRhdHVvc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0b2pvIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBhdHJpYnV0xIUsIHNraXJ0xIUgxaFpb3Mgb3BlcmFjaWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyByZXp1bHRhdHVpIHLFq8WhaXVvdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdOdXN0YXRvIG51bWF0eXTEhWrEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHR2YXJrxIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIHJlenVsdGF0dW9zZS4gQXVrxaF0eW46IHNlbmlhdXNpYXMgdmlyxaF1amUuIMW9ZW15bjogbmF1amF1c2lhcyB2aXLFoXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ051c3RhdG8gbnVtYXR5dG9qaSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHR2YXJrYSBrbGllbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIHJlenVsdGF0dW9zZS4gQXVrxaF0eW46IHNlbmlhdXNpYXMgdmlyxaF1amUuIMW9ZW15bjogbmF1amF1c2lhcyB2aXLFoXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTnVzdGF0byBudW1hdHl0b2ppIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgdHZhcmthIMWhaW9zIG9wZXJhY2lqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrb3MgcmV6dWx0YXRlLiDEriB2aXLFocWzOiBzZW5pYXVzaWEgdmlyxaF1amUuIMW9ZW15bjogbmF1amF1c2lhcyB2aXLFoXVqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ051c3RhdG8gcGFnYWwgbnV0eWzEl2ppbcSFIHJvZG9tdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0FwaWJyxJfFvmlhbWFzIG51bWF0eXRhc2lzIHJvZG9txbMgc2FudHlracWzIGd5bGlzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdOdXN0YXRvIHBhZ2FsIG51dHlsxJdqaW3EhSByb2RvbcSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICdOdXN0YXRvIHBhZ2FsIG51dHlsxJdqaW3EhSByb2RvbcSFIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgcGFpZcWha29zIGF0cmlidXTEhSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuIFBhdnl6ZHlzOiAiS2V5IiAocmFrdGFzKSB0dXJpIHR1csSXdGkgZGluYW1pbmlvIGxhdWtvIHBhdmFkaW5pbcSFLCDFoWl1byBhdHZlanUgIlgiLCAiQ29udGVudCIgKHR1cmlueXMpIHR1cmkgdHVyxJd0aSBkaW5hbWluaW8gbGF1a28gcmVpa8WhbcSZLCBwcmlrbGF1c2FuxI1pxIUgbnVvIGRpbmFtaW5pbyBsYXVrbyB0aXBvLCAiVGV4dCIgKHRla3N0YXMpOiAiYSB0ZXh0IiAodGVrc3RhcyksICJEcm9wZG93biIgKGnFoXNrbGVpZMW+aWFtYSk6ICIxIiAoacWhc2tsZWlkxb5pYW1hKSwgIkRhdGUvVGltZSIgKGRhdGEgaXIgbGFpa2FzKTogUGFpZcWha2FfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGlyIGFyYmEgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9c2F2YWl0xJc7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0FwaWJyxJfFvmlhIG51bWF0eXTEhWrEryBrbGFzxJdzICJJVFNNQ29uZmlnSXRlbSIgc3Vib2JqZWt0xIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOdXN0YXRvIGdhbGltdXMgS0kgc3R1bHBlbGl1cyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGFwxb52YWxnb2plLCBwcmlrbGF1c29tYWkgbnVvIEtJIGtsYXPEl3MuIEtpZWt2aWVuxIUgxK9yYcWhxIUgdHVyaSBzdWRhcnl0aSBrbGFzxJdzIHBhdmFkaW5pbWFzIGlyIGF0aXRpbmthbW9zIGtsYXPEl3MgZ2FsaW3FsyBsYXVrxbMgbWFzeXZhcy4gRGluYW1pbmnFsyBsYXVrxbMgxK9yYcWhYWkgdHVyaSBhdGl0aWt0aSBzY2hlbcSFIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ051c3RhdG8gxaFpbyBla3Jhbm8gdGVrc3RvIHJlZGFrdG9yaWF1cyBrb21wb25lbnRvIGF1a8WhdMSvLiDErnZlc2tpdGUgc2thacSNacWzIChwaWtzZWxpYWkpIGFyYmEgcHJvY2VudGluxJkgdmVydMSZIChzYW50eWtpbsSXKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnTnVzdGF0byBDSSBhcGlicsSXxb5pbW8gcmVkYWt0b3JpYXVzIGVpbHXEjWnFsyBza2FpxI1pxbMgYWRtaW5pc3RyYXRvcmlhdXMgc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdOdXN0YXRvIMSvdnlraW8gYsWrc2VuxbMgZWlsacWha3VtxIUgbnVvIGF1a8WhdMWzIChwdnouLCBrcml0acWha8WzKSBpa2kgxb5lbcWzIChwdnouLCBmdW5rY2luacWzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdBcGlicsSXxb5pYW1vcyBhdGl0aW5rYW1vcyBkaWVnaW1vIGLFq3Nlbm9zLCBrdXJpb3NlIHN1c2lldGkgYmlsaWV0YWkgZ2FsaSB0dXLEl3RpIMSvdGFrb3MgQ0kgYsWrc2VuYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBBZ2VudElUU01Db25maWdJdGVtIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBDdXN0b21lcklUU01Db25maWdJdGVtIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnTnVzdGF0byBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIGVrcmFubyBwYWllxaFrb3MgcmlixIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ051c3RhdG8gbnVvcm9kxbMgbGVudGVsxJdzIHN1ZMSXdGluZ2FtZSByb2RpbnlqZSByb2RvbXVzIHZpc8WzIGtsYXNpxbMgS0kgc3R1bHBlbGl1cy4gSmVpIMSvcmHFoW8gbsSXcmEsIHJvZG9taSBudW1hdHl0aWVqaSBzdHVscGVsaWFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnTnVzdGF0byBudW9yb2TFsyBsZW50ZWzEl3Mgc3VkxJd0aW5nYW1lIHJvZGlueWplIHJvZG9tdXMgS0kgc3R1bHBlbGl1cywgcHJpa2xhdXNvbWFpIG51byBLSSBrbGFzxJdzLiBQcmllxaEga2lla3ZpZW7EhSDEr3JhxaHEhSB0dXJpIGLFq3RpIMSvcmHFoXl0YXMga2xhc8SXcyBwYXZhZGluaW1hcyBpciBkdmlndWJpIGR2aXRhxaFraWFpICh0LiB5LiBDb21wdXRlcjo6KS4gWXJhIGtlbGV0YXMgQ0kgYXRyaWJ1dMWzLCBrdXJpZSBiZW5kcmkgdmlzaWVtcyBDSSAocGF2eXpkeXMga2xhc8SXcyBDb21wdXRlciAoS29tcGl1dGVyaXMpOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBOb3JpbnQgcGFyb2R5dGkgYXRza2lydXMgQ0kgYXRyaWJ1dHVzLCBhcGlicsSXxb50dXMgQ0kgYXBpYnLEl8W+dHlqZSwgcmVpa2lhIG5hdWRvdGkgdG9racSFIHNjaGVtxIUgKGtsYXPEl3MgQ29tcHV0ZXIgcGF2eXpkeXMpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSmVpIG7El3JhIENJIGtsYXPEl3MgxK9yYcWhbywgcm9kb21pIG51bWF0eXR1b3NpdXMgbnVzdGF0eW11cyBhdGl0aW5rYW50eXMgc3R1bHBlbGlhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSwga3VyaXVvcyBlbGVtZW50dXMgZ2FsaW1hIG5hdWRvdGkgIkFjdGlvbiIgdHJlxI1pYWphbWUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyb3MgbHlneWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ051c3RhdG8sIGt1cmllIGVsZW1lbnRhaSB5cmEgcHJpZWluYW1pIHBpcm1vam8gbHlnaW8gSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdOdXN0YXRvLCBrdXJpZSBlbGVtZW50YWkgeXJhIHByaWVpbmFtaSBhbnRyYWphbWUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyb3MgbHlneWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdBcGlicsSXxb5pYSwga29raW8gdGlwbyBudW9yb2RhICjEr3ZhcmR5dGEgacWhIGJpbGlldG8gcGVyc3Bla3R5dm9zKSBnYWxpIHR1csSXdGkgxK90YWtvcyBzdXNpZXRvcyBDSSBixatrbGVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ051c3RhdG8sIGtva2lvIHRpcG8gYmlsaWV0YXMgZ2FsaSB0dXLEl3RpIMSvdGFrb3Mgc3VzaWV0b3MgQ0kgYsWra2xlaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBcGlicsSXxb5pbW8gYXRuYXVqaW5pbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdJxaF0cmludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0RpZWdpbW8gYsWrc2Vub3Mgc3BhbHZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RpZWdpbW8gYsWrc2VuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdWJsaWthdGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRGluYW1pbmnFsyBsYXVrxbMgxK92eWtpxbMgbW9kdWxpcywga3VyaXMgxb55bWkga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcGlicsSXxb50aXMga2FpcCBuZXNpbmNocm9uaXp1b3RhcywgamVpIHBhc2lrZWnEjWlhIGRpbmFtaW5pYWkgbGF1a2FpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pbmlhaSBsYXVrYWksIHJvZG9taSBhZ2VudG8gc8SFc2Fqb3MgcGFwaWxkb21vIElUU00gbGF1a28gZWtyYW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWluaWFpIGxhdWthaSwgcm9kb21pIGtsaWVudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGFwxb52YWxnb3MgZWtyYW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWluaWFpIGxhdWthaSwgcm9kb21pIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ8SuanVuZ2lhbWEga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIG1hc2luaW8gdmVpa3NtbyBmdW5rY2lqYSwga2FkIGFnZW50byBwcmlla2luxJdqZSBkYWx5amUgdmllbnUgbWV0dSBixat0xbMgZ2FsaW1hIGRpcmJ0aSBzdSBkYXVnaWF1IG5laSB2aWVudSBrb25maWfFq3JhY2lqb3MgZWxlbWVudHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfErmp1bmdpYW1hIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBtYXNpbmlvIHZlaWtzbW8gZnVua2NpamEgdGlrIGnFoXZhcmR5dG9tcyBncnVwxJdtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnxK5qdW5naWFtYSAvIGnFoWp1bmdpYW1hIGZ1bmtjaWphLCBza2lydGEgcGF0aWtyaW50aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgdW5pa2FsaXVzIHBhdmFkaW5pbXVzLiBQcmllxaEgxK9qdW5nZGFtaSDFoWnEhSBwYXJpbmt0xK8sIHR1csSXdHVtxJd0ZSBwYXRpa3JpbnRpLCBhciBqxatzxbMgc2lzdGVtb2plIG7El3JhIGphdSBlc2FtxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBzdSBwYXNpa2FydG9qYW7EjWlhaXMgcGF2YWRpbmltYWlzLiBUYWkgZ2FsaXRlIHBhZGFyeXRpIG5hdWRvZGFtaSBrb25zb2zEl3Mga29tYW5kxIUgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICfErnZ5a2nFsyBtb2R1bGlzLCBza2lydGFzIG51c3RhdHl0aSAidGlja2V0LWNvbmZpZ2l0ZW0tbGluayIga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGLFq3NlbsSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaW5kZWtzbyBsYXVrYWksIG5hdWRvamFtaSB2aXNvIHRla3N0byBwYWllxaFrYWkuIExhdWthaSB0YWlwIHBhdCBzYXVnb21pLCB0YcSNaWF1IG7El3JhIHByaXZhbG9taSBiZW5kcmFpIGZ1bmtjaWphaS4gUHJpZWTFsyDEr3RyYXVraW3EhSBnYWxpbWEgacWhanVuZ3RpIG51c3RhdGFudCDEr3JhxaFvIHJlaWvFoW3EmSAwIGFyYmEgasSvIGnFoXRyaW5hbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaW5kZWtzZSBzYXVnb21pIGxhdWthaSwga3VyaWUgbmF1ZG9qYW1pIG5lIHRpayB2aXNvIHRla3N0byBwYWllxaFrYWksIGJldCBpciBraXRpZW1zIGRhbHlrYW1zLiBLYWQgZnVua2Npam9zIGLFq3TFsyBwaWxuYWkgacWhbmF1ZG90b3MsIHZpc2kgbGF1a2FpIHlyYSBwcml2YWxvbWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnS2lla3ZpZW5haSDFvmluaWF0aW5rbGlvIHBhc2xhdWdhaSAocmFrdGFzKSBnYWxpbWEgYXBpYnLEl8W+dGkga2xhc2nFsyBtYXN5dsSFIChyZWlrxaFtxJcpLCBrdXJpbyBpbXBvcnRhcyB5cmEgcmlib2phbWFzLiBWaXNvbXMgcGFzaXJpbmt0b21zIGtsYXPEl21zIGFyYmEgdmlzb21zIGVzYW1vbXMga2xhc8SXbXMgaWRlbnRpZmlrdW9qYW50eXMgYXRyaWJ1dGFpIHR1csSXcyBixat0aSBwYXNpcmlua3RpIGludm9rZXJpbyBrb25maWfFq3JhY2lqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICciR2VuZXJpY0ludGVyZmFjZSIgbW9kdWxpbyByZWdpc3RyYWNpamEgIkNvbmZpZ0l0ZW1GZXRjaCIgacWha3ZpZXTEl2pvIHNsdW9rc25pdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnIkdlbmVyaWNJbnRlcmZhY2UiIG1vZHVsaW8gcmVnaXN0cmFjaWphICJDb25maWdJdGVtRmV0Y2giIGnFoWt2aWV0xJdqbyBzbHVva3NuaXVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICciR2VuZXJpY0ludGVyZmFjZSIgbW9kdWxpbyByZWdpc3RyYWNpamEgIkNvbmZpZ0l0ZW1GZXRjaCIgacWha3ZpZXTEl2pvIHNsdW9rc25pdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnxK50cmF1a3RpIGRpZWdpbW8gYsWrc2VuYXMgxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrxIUga2xpZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8SudHJhdWt0aSBpbmNpZGVudG8gYsWrc2VuYXMgxK8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBwYWllxaFrxIUga2xpZW50xbMgc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEaWTFvmlhdXNpYXMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsywga3VyaWUgYnVzIHJvZG9taSDFoWlvcyBvcGVyYWNpam9zIHJlenVsdGF0ZSwgc2thacSNaXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsaXMsIHNraXJ0YXMgdcW+IGtsYXPEmSBhdHNha2luZ2FpIGdydXBlaSBwYXRpa3JpbnRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsaXMsIHNraXJ0YXMgcGF0aWtyaW50aSBncnVwxJksIGF0c2FraW5nxIUgdcW+IGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHN0YXRpc3Rpa29zIGdlbmVyYXZpbW8gbW9kdWxpcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdQYXZhZGluaW1vIG1vZHVsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bWVyaW8gbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWfFq3JhY2lqb3MgZWxlbWVudMWzLCByb2RvbcWzIGtpZWt2aWVuYW1lIHBhaWXFoWtvcyByZXp1bHRhdMWzIHB1c2xhcHlqZSBhZ2VudG8gc8SFc2Fqb2plLCBza2FpxI1pdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMsIGt1cmllIGJ1cyByb2RvbWkga2lla3ZpZW5hbWUgcGFpZcWha29zIHJlenVsdGF0xbMgcHVzbGFweWplIGtsaWVudG8gc8SFc2Fqb2plLCBza2FpxI1pdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdMWzLCBrdXJpxbMgcmVpa2lhIGllxaFrb3RpLCBraWVrIMSvcmHFocWzIGlyIGtva2l1cyBhdHJpYnV0dXMgcm9keXRpLiBDb25maWdJdGVtIGF0cmlidXRhaSB0dXJpIGLFq3RpIGFpxaFraWFpIHNhdWdvbWkgcGVyICJFbGFzdGljc2VhcmNoIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnQXDFvnZhbGdhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhaSwgc2tpcnRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMga2xhc2nFsyBrYXRlZ29yaWpvbXMgYWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNYcW+b3Npb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ29zIHN0dWxwZWxpxbMgZmlsdHLFsyBwYXJhbWV0cmFpLiBBdGtyZWlwa2l0ZSBkxJdtZXPErzogbnVzdGHEjWl1cyAiQWN0aXZlIiB2ZXJ0xJkgMCwgYWdlbnRhaSBuZWdhbMSXcyByZWRhZ3VvdGkgdGlrIMWhaW9zIGdydXDEl3MgbnVzdGF0eW3FsyBzYXZvIGFzbWVuaW7El3NlIHBhcmlua3R5c2UsIHRhxI1pYXUgYWRtaW5pc3RyYXRvcmlhbXMgdmlzIHRpZWsgYnVzIGxlaWTFvmlhbWEgcmVkYWd1b3RpIGtpdG8gbmF1ZG90b2pvIG51c3RhdHltdXMuIE5hdWRva2l0ZSAiUHJlZmVyZW5jZUdyb3VwIiwgbm9yxJdkYW1pIHZhbGR5dGksIGt1cmlvamUgc3JpdHlqZSDFoWllIG51c3RhdHltYWkgdHVyxJd0xbMgYsWrdGkgcm9kb21pIG5hdWRvdG9qbyBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfErmRpZWdpbW8gYsWrc2VuxbMgcGFyYW1ldHJhaSBudXNwYWx2aW50aSBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ2RpZWdpbW8gYsWrc2VuxbMgcGFyYW1ldHJhaSBhZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdCZW5kcsWzasWzIGthdGFsb2dvIGF0cmlidXTFsyBsZWlkaW3FsyBncnVwacWzIHBhdnl6ZMW+acWzIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZSBlc2FuxI1pxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIHZhcmTFsyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplIGVzYW7EjWnFsyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNpxbMgbnVtZXJpbyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1B1c2xhcGnFsyAoa3VyaXVvc2Ugcm9kb21pIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50YWkpIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FnZW50byBzxIVzYWpvcyBudW9zdGF0xbMgcm9kaW55amUgZXNhbsSNacWzIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMga2xhc2nFsyB2ZXJzaWpvcyBlaWx1dMSXcyBtb2R1bGlvIHBhcmFtZXRyYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWdlbnRvIHPEhXNham9zIG51b3N0YXTFsyByb2RpbnlqZSBlc2FuxI1pxbMga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBrbGFzacWzIGtvbmZpZ8WrcmFjaWpvcyBlaWx1dMSXcyDFoWFibG9ubyDEr3JhbmtpxbMgcmlua2luaW8gbW9kdWxpbyBwYXJhbWV0cmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZ2VudG8gc8SFc2Fqb3MgbnVvc3RhdMWzIHJvZGlueWplIGVzYW7EjWnFsyBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIGtsYXNpxbMgdmVyc2lqb3MgdHJpZ2VyaW8gcGFyYW1ldHJhaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdBdGxpZWthIHN1a29uZmlnxatydW90xIUgdmVpa3NtxIUga2lla3ZpZW5hbSDEr3Z5a2l1aSAoa2FpcCBJbnZva2VyKSBraWVrdmllbmFpIHN1a29uZmlnxatydW90YWkgxb5pbmlhdGlua2xpbyBwYXNsYXVnYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdMZWlkaW3FsyBncnVwxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gcHJpanVuZ2ltbyB2ZWlrc23EhSBhZ2VudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGVrcmFuxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBsYW5nxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpIG5hdWRvdGkgSVRTTSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzIHBhaWXFoWtvcyBla3JhbsSFIGtsaWVudG8gc8SFc2Fqb2plLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgbWVkxb5pbyBwZXLFvmnFq3JvcyBla3JhbsSFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBwcmlhcnRpbmltbyBla3JhbsSFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSBuYXVkb3RpIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWTEl2ppbW8gbGFuZ8SFIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWksIGthZCBixat0xbMgZ2FsaW1hIG5hdWRvdGkgYWdlbnRvIHPEhXNham9zIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGVrcmFuxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JlaWthbGluZ2kgbGVpZGltYWkgbmF1ZG90aSBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byByZWRhZ2F2aW1vIGVrcmFuxIUgYWdlbnRvIHPEhXNham9qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUmVpa2FsaW5naSBsZWlkaW1haSwga2FkIGLFq3TFsyBnYWxpbWEgbmF1ZG90aSBhZ2VudG8gc8SFc2Fqb3MgaXN0b3Jpam9zIElUU00ga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGVrcmFuxIUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSZWlrYWxpbmdpIGxlaWRpbWFpLCBrYWQgYsWrdMWzIGdhbGltYSBuYXVkb3RpIGFnZW50byBzxIVzYWpvcyBJVFNNIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50byBzcGF1c2RpbmltbyBla3JhbsSFLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnUmVpa2FsaW5nb3MgcHJpdmlsZWdpam9zIG5vcmludCBpxaF0cmludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnR1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdJZcWha290aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMWzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXV0b21hdGnFoWthaSBudXN0YXR5a2l0ZSBLSSBpbmNpZGVudG8gYsWrc2VuxIUsIGthaSBiaWxpZXRhcyBzdXNpZWphbWFzIHN1IEtJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051c3RhdG8gZGllZ2ltbyBixatzZW7EhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGRpZG1lbmluaWFtZSBla3JhbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ051c3RhdG8gaW5jaWRlbnRvIGLFq3NlbsSFIGFnZW50byBzxIVzYWpvcyBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gZGlkbWVuaW7El3Mga29uZmlnxatyYWNpam9zIGVrcmFuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW5pdSByb2RvbWEgbnVvcm9kYSwgbGVpZMW+aWFudGkgc3VzaWV0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFIHN1IGtpdHUgb2JqZWt0dSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWFydGluaW1vIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG8gbWVuaXUgbnVvcm9kxIUsIHNraXJ0xIUgcGFzaWVrdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGlzdG9yaWrEhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ29qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuaXUgcm9kb21hIG51b3JvZGEsIGt1cmlhIGdhbGltYSBwYXNpZWt0aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudG8gaXN0b3JpasSFIGFnZW50byBzxIVzYWpvcyBwcmlhcnRpbmltbyByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvbWEgbWVuaXUgbnVvcm9kYSwgc2tpcnRhIGnFoXRyaW50aSBrb25maWfFq3JhY2lqb3MgZWxlbWVudMSFIGpvIHByaWFydGludGFtZSBhZ2VudG8gc8SFc2Fqb3Mgcm9kaW55amUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdSb2RvIG1lbml1IG51b3JvZMSFLCBrYWQga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBudW9yb2RvcyBixat0xbMgcm9kb21vcyBtZWTFvmlvIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG9tYSBtZW5pdSBudW9yb2RhLCBza2lydGEgZHVibGl1b3RpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUgYWdlbnRvIHPEhXNham9zIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xbMgYXDFvnZhbGdvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbml1IHJvZG9tYSBudW9yb2RhLCBza2lydGEga29uZmlnxatyYWNpam9zIGVsZW1lbnR1aSBkdWJsaXVvdGkgYWdlbnRvIHPEhXNham9zIHByaWFydGluaW1vIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kb21hIG1lbml1IG51b3JvZGEsIHNraXJ0YSByZWRhZ3VvdGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSBhZ2VudG8gc8SFc2Fqb3MgcHJpYXJ0aW50YW1lIHJvZGlueWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVuaXUgcm9kb21hIG51b3JvZGEsIGt1cmlhIGdhbGltYSBncsSvxb50aSDEryBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnRvIHByaWFydGluaW1vIHJvZGluxK8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm9kb21hIG1lbml1IG51b3JvZGEsIHNraXJ0YSBzcGF1c2RpbnRpIGtvbmZpZ8WrcmFjaWpvcyBlbGVtZW50xIUgYWdlbnRvIHPEhXNham9zIHByaWFydGludGFtZSByb2RpbnlqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb2RvbWEgbWVuaXUgbnVvcm9kYSwgc2tpcnRhIHByaWFydGludGkga29uZmlnxatyYWNpam9zIGVsZW1lbnTEhSBhZ2VudG8gc8SFc2Fqb3Mga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBhcMW+dmFsZ29qZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1JvZG8ga29uZmlnxatyYWNpam9zIGVsZW1lbnTFsyBpc3RvcmlqxIUgKGF0dmlya8WhdGluZSB0dmFya2EpIGFnZW50byBzxIVzYWpvamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ051bWF0eXRvamkga2F0ZWdvcmlqYSwga3VyaSByb2RvbWEsIGplaSBuZXBhc2lyaW5rdGEgbsSXIHZpZW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnS29uZmlnxatyYWNpam9zIGVsZW1lbnRvIGlkZW50aWZpa2F0b3JpdXMsIHB2ei4sIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBOdW1hdHl0b2ppIHJlaWvFoW3ElyB5cmEgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdXRvbWF0acWha2FpIHBhbGVpZMW+aWEgQ29uZmlnSXRlbUZldGNoIGludm9rYXRvcmnFsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnNpamEgU3R5Z2luacWzIGVpbHV0xJcgScWhcmFpxaFrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaWpvcyBlaWx1dMSXcyBtb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1ZlcnNpamEgVHJpZ2dlcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdBciBnYWxpbWEgacWhdmVuZ3RpICJDb25maWdJdGVtQUNMIiB2eWtkeW1vIHRpa3JpbmFudCB0YWxweWtsb2plIGVzYW7EjWnFsyBsYXVrxbMgcHJpa2xhdXNvbXliZXMuIFRhaSBnYWxpIHBhZ2VyaW50aSBmb3JtdWxpYXLFsyDEr2vEl2xpbW8gbGFpa8SFLCB0YcSNaWF1IHR1cmkgYsWrdGkgacWhanVuZ3RhLCBqZWkgQUNMTW9kdWxlcyB0dXJpIGLFq3RpIG5hdWRvamFtaSBJVFNNQ29uZmlnSXRlbS0gaXIgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0tva2lhIGJlbmRyYSBpbmZvcm1hY2lqYSBwYXRlaWtpYW1hIGFudHJhxaF0xJdqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAncGFzYXVsaW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWtjaW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJpZcWhcHJvZHVrY2luaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3R5dnVzJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGNvbGlvICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgY29saXMgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBjb2xpbyAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBjb2xpbyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5IGNvbGnFsyBzdG92YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IGNvbGlvICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IGNvbGlhaSAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEgY29saW8gc3RvdmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBjb2xpbyAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzIGNvbGnFsyBzdG92YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IGNvbGlvICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBjb2xpYWkgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IGNvbGlvICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgY29saW8gKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgY29saW8gKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IGNvbGlvICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBjb2xpbyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgY29saW8gKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGNvbGlhaSAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGNvbGlvICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgY29saW8gKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBjb2xpbyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgY29saW8gKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgY29saW8gKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUgY29saW8gKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBjb2xpbyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGNvbGlhaSAoMjEzLDM2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IGNvbGlhaSAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgY29saW8gKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAxMCw1IGNvbGlvICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IGNvbGlvICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGNvbGnFsyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBjb2xpbyAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQXBza2FpdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZHJlc8WzIHByaXNreXJpbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ2luaXMgdGVsZWZvbmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnUHJpZXRhaXNvIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQWt1bXVsaWF0b3JpYXVzIHRhbHBhIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQWt1bXVsaWF0b3JpYXVzIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnUGFzdGF0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ01hZ2lzdHJhbMSXcyBzxIVzYWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIGtsYXPElyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnVGFscGEgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ1ZpZW5vcyB2YWl6ZG8gcGxva8WhdMSXcyB0YWxwYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0tvcnRlbMSXcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnS29ydGVsacWzIHNrYWl0eXR1dmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ0tvcnRlbMSXcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50xbMgc2VydGlmaWthdGFpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0tsaWVudG8gcHJvZ3JhbWluxJcgxK9yYW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdLbGllbnRvIGthdGVnb3JpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnTGFpa3JvZMW+aW8gcm9keWtsxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0xhaWtyb2TFvmnFsyBncmVpdGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb2RvIHBhc2lyYcWheW1vIHNlcnRpZmlrYXRhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29uZmVyZW5jaW5pcyB0ZWxlZm9uYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdLb25zdWx0YXZpbW8gc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ1N1c2lzaWVraXRlIHN1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdTdXNpc2lla2l0ZSBzdSBwbGF0aW50b2p1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnS29udGVpbmVyacWzIHZhbGR5bWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1N1dGFydGllcyB0aXBhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ1N1dGFydGllcyBsYWlrb3RhcnBpcyBudW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnU3V0YXJ0aWVzIGxhaWtvdGFycGlzIGlraSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdCZWxhaWRpcyB0ZWxlZm9uYXMgKERFQ1QgdGVsZWZvbmFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdJxaFsYWlkxbMgdmllbmV0YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdMaWNlbmNpasWzIHNrYWnEjWl1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnU3VrxatyaW1vIGRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1Bhc2lyaW5rdGluaXMgc3RvdmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIHJlemVydnVvdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUyBzZXJ2ZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnU8SFc2thaXRvcyBmYWt0xatyb3MgZGF0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnVcW+c2FreW1vIGRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0dhcmFudGlqb3MgacWhZGF2aW1vIGRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnScWhbGVpZGltbyBkYXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdTdGFsaW5pcyBrb21waXV0ZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9rdW1lbnTFsyBwYXNpcmHFoXltbyBzZXJ0aWZpa2F0YWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIHN0ZWxhxb5hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRWwuIHBhxaF0byBzZXJ0aWZpa2F0YWkgKFMvTUlNRSBzZXJ0aWZpa2F0YWkpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0RhcmJvIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnR2FsaW5pcyBJUCBhZHJlc2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnUGFyYW1vcyBwYWJhaWdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnR2FsaW9qaW1vIGRhdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0nFoW9yaW5pcyBraWV0YXNpcyBkaXNrYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdVZ25pYXNpZW7Elyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ1Byb2dyYW1pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdFbmVyZ2lqb3Mga2F1cGltYXMgc21hZ3JhxI1pdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1vcyBmYWt0b3JpdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW7FoWl6xJdzIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnTmVtb2thbWEgcHJvZ3JhbWluxJcgxK9yYW5nYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdCZW5kcmEgaW5mb3JtYWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdWYWl6ZG8gcGxva8WhdMSXcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnVmFpemRvIHBsb2vFoXTElyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ1RlY2huaW7ElyDEr3JhbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnVGVjaG5pbsSXcyDEr3JhbmdvcyBtb2RlbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1RlY2huaW7El3MgxK9yYW5nb3Mgc3ZvcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdBdXNpbsSXcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIHByb3Rva29sYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnVGFwYXR5YsSXcyBpciBwcmllaWdvcyB2YWxkeW1hcyAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50b3JpbmlzIG51bWVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdJbnZlcnN0cmF2aW1vIGnFoWxhaWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ1PEhXNrYWl0b3MgZmFrdMWrcm9zIG51bWVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdLbGF2aWF0xatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgbW9uaXRvcml1cyAoc2t5c3TFs2rFsyBrcmlzdGFsxbMgZWtyYW5hcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCBtb25pdG9yaXVzICjFoXZpZXNvcyBkaW9kYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1N0YWNpb25hcnVzaXMgdGVsZWZvbmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ05lxaFpb2phbWFzaXMga29tcGl1dGVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdQbGF0dW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnMSBzbHVva3NuaXM6IGZpemluaXMgc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJzIgc2x1b2tzbmlzOiBkdW9tZW7FsyByecWhaW8gc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICczIHNsdW9rc25pczogdGlua2xvIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICczIHNsdW9rc25pczogdGlua2xvIHNsdW9rc25pcyAoc3VwZXJuZXRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnNCBzbHVva3NuaXM6IHRyYW5zcG9ydG8gc2x1b2tzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICc1IHNsdW9rc25pczogc2VzaWpvcyBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnNiBzbHVva3NuaXM6IHBhdGVpa2ltbyBzbHVva3NuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICc3IHNsdW9rc25pczogdGFpa29txbNqxbMgcHJvZ3JhbcWzIHNsdW9rc25pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdOdW9tb3Mgc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbmNpam9zIHN1dGFydGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbmNpam9zIHJha3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaWNlbmNpam9zIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaWNlbmNpam9zIGxhaWtvdGFycGlzIG51byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ0xpY2VuY2lqb3MgbGFpa290YXJwaXMgaWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMacSNaW8gZ2VsZcW+aWVzIGZvc2ZhdG8gKExpRmVQTzQpIGFrdW11bGlhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICdMacSNaW8gam9uxbMgKGxpxI1pbyBqb27FsykgYWt1bXVsaWF0b3JpdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdQYXNrb2xvcyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnxK5zaWvFq3LEmXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnSWxndW1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnR2FtaW50b2phcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnRGlkxb5pYXVzaWEgYXBrcm92b3MgZ2FsaWEgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0F0bWludGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnQXRtaW50aWVzIHRpcGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pIHN0ZWxhxb5hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWxpb2pvIHRlbGVmb25vIG51bWVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWx1c2lzIC8gxK90ZXJwdGFzaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWxpcyBBcHJhxaF5bWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3JpYXVzIHNraXJpYW1vamkgZ2ViYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9yaWF1cyBkeWRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1BlbMSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICdUaW5rbGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ1RpbmtsbyBpbmZvcm1hY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnVGlua2xvIGluZm9ybWFjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdUaW5rbG8gbHlnbXVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlrZWxpby1rYWRtaW8gKE5pQ2QpIGFrdW11bGlhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlrZWxpby1tZXRhbG8gaGlkcmlkbyAoTmlNSCkgYWt1bXVsaWF0b3JpdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnU3VzaXRhcmltYXMgZMSXbCBpbmZvcm1hY2lqb3MgbmVhdHNrbGVpZGltbyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ05lxaFpb2phbWFzaXMga29tcGl1dGVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdQcm9jZXNvcmnFsyBza2FpxI1pdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnT3BlcmF0eXZpb3Npb3MgYXRtaW50aWVzIG1vZHVsacWzIHNrYWnEjWl1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdWYWl6ZG8gcGxva8WhxI1pxbMgc2thacSNaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIG1vbml0b3JpdXMgKG9yZ2FuaW5pcyDFoXZpZXNvcyBkaW9kYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ1ZlaWtsb3Mgc8SFbmF1ZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJ1XFvnNha3ltbyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnS2l0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnScWhxJdqaW1haSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4gS09EQVMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdQYXJ0bmVyeXN0xJdzIHN1c2l0YXJpbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbm8gbnVtZXJpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnVGVsZWZvbm8gdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICdGaXppbmlhaSBicmFuZHVvbGlhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ01haXRpbmltbyB0aWVraW1hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ8Suc2lneXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdTdG92byBneWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1N0b3ZvIHZpZW5ldGFpIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnS2FtYmFyeXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ga29ydGVsxJcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIHNlcnRpZmlrYXRhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1BhcmRhdmltbyBzdXRhcnRpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdQYWx5ZG92aW5pcyB0ZWxlZm9uYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnU2FuZGFydXMgxaF2aW5vIHLFq2fFoXRpbmlzIChTTEEpIGFrdW11bGlhdG9yaXVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWpvcyBudW1lcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NlcnZlcmlvIHByb2dyYW1pbsSXIMSvcmFuZ2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdQYXNsYXVnxbMgc3V0YXJ0aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdQYXNsYXVnb3Mgxb55bWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnTGl6ZG8gdGlwYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICdQcm9ncmFtaW7ElyDEr3JhbmdhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnR2Fyc2lha2FsYmlhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICdTdGFuZGFydGluaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ1ByYWRpbmlzIElQIGFkcmVzYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1NhdWd5a2xhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnU2F1Z3lrbG9zIHNraXJzbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRHVrdGVyaW7ElyDEr21vbsSXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTYW50cmF1a2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdQbG9uYXNpcyBrbGllbnRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnU2nFq2xhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyJUaHVuZGVyYm9sdCInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ0nFoSB2aXNvIGdyYWZpbsSXcyBwbG9rxaF0xJdzIG9wZXJhdHl2aW9zaW9zIGF0bWludGllcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnScWhIHZpc28gUkFNIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ0p1dGlrbGluaW8gZWtyYW5vIG1vbml0b3JpdXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdCb2vFoXRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCIMWhYWtvdHV2YXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnVlBOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiBhdXNpbsSXcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIHRlbGVmb25hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnSW50ZXJuZXRvIGthbWVyYSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</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+eydWZXJzaW9uIG51bWJlciBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnxaDEqyBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgdmVyc2lqYXMgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gTnVtYmVyIGlzIGFscmVhZHkgaW4gdXNlIGJ5IHRoZSBDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgTnVtYmVyKHMpOiAlcyd9ID0KICAgICAgICAnVmVyc2lqYXMgbnVtdXJ1IGphdSBpem1hbnRvIENvbmZpZ0l0ZW1zIGFyIMWhxIFkdSgtaWVtKSBudW11cnUoLWllbSk6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUnfSA9ICdJenZpZXRvxaFhbmFzIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgU3RhdGUnfSA9ICdJbmNpZGVudGEgdmFsc3RzJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtSGlzdG9yeQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGlzdG9yeSBvZiBDb25maWcgSXRlbTogJXMnfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgdsSTc3R1cmU6ICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hpc3RvcnkgQ29udGVudCd9ID0gJ1bEk3N0dXJlcyBzYXR1cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRldGltZSd9ID0gJ0NyZWF0ZXRpbWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSB2aWV3J30gPSAnUGFsaWVsaW7EgXQgc2thdHMnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnQ29uZmlnIFZpZW7Eq2JhcyB1eiBsYXB1JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgZGF0aSBuYXYgYXRyYXN0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJenbEk2xpZXRpZXMgxaFvIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1BhbGFpc3QgbWVrbMSTxaFhbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnTWVrbMSTdCBhcsSrIGllcHJpZWvFocSTasSBcyB2ZXJzaWrEgXM/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSBUcmVlVmlldyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0R6acS8dW1hIGzEq21lbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnUGFsaWVsaW7EgXQvaXpzbMSTZ3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbSBzYXNuaWVndHMgbWFrc2ltxIFsYWlzIHNhacWhdSBsxKttZW5pcyEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgdmllbnVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdJbmZvcm3EgWNpamEgcGFyIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdQYcWhcmVpesSTamFpcyBpenZpZXRvxaFhbmFzIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ1BhxaFyZWl6xJNqYWlzIGluY2lkZW50YSBzdMSBdm9rbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1DEk2TEk2rEgXMgaXptYWnFhmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1DEk2TEk2pvIHJlaXppIG1haW7Eq3RzIGFyJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnSsWrc3UgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSBtZWtsxJPFoWFuYSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1Rpa3MgaW1wb3J0xJN0YXMgxaHEgWRhcyBrbGFzZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVGlrcyBpbXBvcnTEk3RhcyDFocSBZGFzIGxvbWFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ8WFZW1pZXQgdsSTcsSBLCBrYSB0aWtzIGl6dmVpZG90aSBhcsSrIGF0dGllY8SrZ2llIGRpbmFtaXNraWUgbGF1a2kgdW4gR2VuZXJhbENhdGFsb2cga2xhc2VzLCB1biBhdXRvbcSBdGlza2Egbm/FhmVtxaFhbmEgbmVub3Rpa3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnVmFpIHbEk2xhdGllcyB0dXJwaW7EgXQ/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ05lcGllY2llxaFhbWFzIHBpZW3Ek3J1IGtsYXNlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnRGVmaW7Eq2NpamEgbmF2IGRlcsSrZ3MgWUFNTCBoYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1DEgXJza2F0czogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05hdiBub3LEgWTEq3RzIENvbmZpZ0l0ZW10ZW1JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdKdW1zIGlyIG5lcGllY2llxaFhbXMgdmlzbWF6IHZpZW5zIGl6dsSTbMSTdHMga29uZmlndXLEgWNpamFzIHZpZW51bXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnSnVtcyBuYXYgcmFrc3TEq8WhYW5hcyBwaWVrxLx1dmVzIMWhaW0ga29uZmlndXLEgWNpamFzIGVsZW1lbnRhbTogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ0tsYXNlaSAlcyBuYXYgZGVmaW7Ek3RhIGRlZmluxKtjaWphISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnS29uZmlndXLEgWNpamFzIHZpZW7Eq2JhICIlcyIgbmF2IGF0cmFzdGEgZGF0dSBixIF6xJMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTmV2YXLEk2phIGl6ZHrEk3N0IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJ05hdiBhdHJhc3RhIHZlcnNpamEgQ29uZmlnSXRlbUVNSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05hdiBub3LEgWTEq3RzIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgdmFpIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdQaWVrxLx1dmUgbmF2IGRvdGEhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05ldmFyIHBhcsSBZMSrdCB2xJNzdHVyaSwgbmF2IG5vcsSBZMSrdHMgbmV2aWVucyBDb25maWdJdGVtdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmV2YXIgcGFyxIFkxKt0IHbEk3N0dXJpLCBuYXYgcGllxaHEt2lydGFzIHBpZWvEvHV2ZXMgdGllc8SrYmFzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnSmF1bnMga29uZmlndXLEgWNpamFzIGVsZW1lbnRzIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ0phdW5hIHZlcnNpamEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0F0amF1bmluxIF0cyBpenZpZXRvxaFhbmFzIHN0xIF2b2tsaXMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdBdGphdW5pbsSBdHMgaW5jaWRlbnRhIHN0xIF2b2tsaXMgKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50cyAoSUQ9JXMpIGR6xJNzdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdQaWV2aWVub3RhIHNhaXRlIHV6ICVzICh0aXBzPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnU2FpdGUgdXogJXMgKHRpcHM9JXMpIGR6xJNzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0F0amF1bmluxIF0YSBDb25maWdJdGVtIGRlZmluxKtjaWphIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdBdGphdW5pbsSBdHMgbm9zYXVrdW1zIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYsWrdHMgJXMgYXRqYXVuaW7EgXRzIG5vICIlcyIgdXogIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzaWphICVzIGR6xJNzdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTmF2IG5vcsSBZMSrdHMgQ29uZmlnSXRlbUlEIHZhaSBWZXJzaW9uSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05ldmFyIHBhcsSBZMSrdCBrb25maWd1csSBY2lqYXMgZWxlbWVudHUsIG5hdiBwaWXFocS3aXJ0YXMgcGlla8S8dXZlcyB0aWVzxKtiYXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUVNSUQgJXMgbmF2IGF0cmFzdHMgZGF0dSBixIF6xJMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByaW50ZWQgYnkgJXMgYXQgJXMnfSA9ICdpemRydWvEgXRzICVzIHBpZSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnQXRzYXVjZSAoZW4pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnTmVkZXLEq2dzIGtsYXNlc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ05hdiBub3LEgWTEq3RzIGtsYXNlc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ8WgYWkga2xhc2VpIG5hdiBwaWXFocS3aXJ0YXMgcGlla8S8dXZlcyB0aWVzxKtiYXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOYXYgcmV6dWx0xIF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdLb25maWd1csSTxaFhbmFzIHZpZW51bWEgbWVrbMSTxaFhbmFzIHJlenVsdMSBdGknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05ldmFyIHBhcsSBZMSrdCBlbGVtZW50dSwgbmF2IHBpZcWhxLdpcnRhcyBwaWVrxLx1dmVzIHRpZXPEq2JhcyBDb25maWdJdGVtISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG5hdiBhdHJhc3RzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdWZXJzaWphcyBuYXYgYXRyYXN0YXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnZGFyYsSrYmFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdicsSrZGluxIFqdW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoMSrIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBpenZpZXRvxaFhbmFzIHN0xIF2b2tsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfFoMSrIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBpbmNpZGVudGEgc3TEgXZva2xpcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ05hdiBhdMS8YXVqYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdHJzIG5lZGVyxKtncyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ01la2zEk8WhYW5hcyBwYXJhbXMgbmVkZXLEq2dzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1BhcsSBZMSrdGllIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdJenZpZXRvxaFhbmFzIHZhbHN0cyB0aXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1BhxaFyZWl6xJNqYWlzIGluY2lkZW50YSB2YWxzdHMgdGlwcyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdTdGFycCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGtsYXNlcyBpZXJvYmXFvm9qdW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdJenbEk2xpZXRpZXMgdmllbnUgdmFpIHZhaXLEgWthcyBrbGFzZXMsIGxhaSBpZXJvYmXFvm90dSBhdGxhc8SBbW9zIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEga2xhc2VzIGllcm9iZcW+b2p1bWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdJenbEk2xpZXRpZXMgdmllbnUgdmFpIHZhaXLEgWthcyBrbGFzZXMsIGxhaSBpZXJvYmXFvm90dSBhdGxhc8SBbW9zIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluYW1pc2tzIChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGlza3MgKHZlcnNpamEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1NhaXRlIEF0c2F1Y2VzIHZlaWRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ1ZhaSDFocSrIHNhaXRlIGF0dGllY2FzIHV6IGF0c2F1Y2VzIG9iamVrdGEgQ29uZmlnSXRlbSB2YWkgc3RhdGlza28gdmVyc2lqdS4gUGHFoXJlaXrEk2rEgSBpbmNpZGVudGEgc3TEgXZva8S8YSBhcHLEk8S3aW5zIHRpZWsgdmVpa3RzIHRpa2FpIGRpbmFtaXNrYWrEgW0gc2FpdMSTbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdBdGxhc2lldCBhdHJpYsWrdHUsIHDEk2Mga3VyYSB0aWtzIG1la2zEk3RpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0LEgXplcyBzdHJ1a3TFq3JhIG5hdiBkZXLEq2dhLiBMxatkenUsIG5vcsSBZGlldCBoYXNoIGFyIGRhdGllbSBZQU1MIGZvcm3EgXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdZQU1MIHZpcmtuZSBqxIFzxIFrIGFyIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05laXpkZXbEgXMgYXR0xKtyxKt0IHRhYnVsdSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOZXRpa2EgYXRyYXN0aSBhdHRpZWPEq2dpZSBkaW5hbWlza2llIGxhdWtpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTmV2YXIgaWV2aWV0b3QgdGFidWzEgSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ1RhYnVsxIEgY29uZmlnaXRlbV9saW5rIGlldmlldG90YXMgMCByaW5kYXMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnTWFrc2ltxIFsYWlzIHZpZW5hIGVsZW1lbnRhIHNrYWl0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaWphcyB2aXJrbmUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnS8S8xatkYSwgc2luaHJvbml6xJNqb3QgZGVmaW7Eq2NpamFzLiBMxatkenUsIHDEgXJiYXVkaWV0IMW+dXJuxIFsdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdKdW1zIGlyIElUU01Db25maWdJdGVtIGRlZmluxKtjaWphcywga2FzIG5hdiBzaW5ocm9uaXrEk3Rhcy4gTMWrZHp1LCBpZXZpZXRvamlldCBJVFNNQ29uZmlnSXRlbSBkaW5hbWlza28gbGF1a3UgaXptYWnFhmFzLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRGFyYsSrYmFzIHRlcm1pxYbFoSBiZWlkemllcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ1V6dHVyxJPFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbMSBbm90cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZW1vbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaW9uxJN0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdQxIFyc2thdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3TEk8WhYW5hIC8ga3ZhbGl0xIF0ZXMgbm9kcm/FoWluxIHFoWFuYSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUMSBcnNrYXRzIHVuIGFwc3RpcHJpbsSBanVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdLbGHFoXUvIGxvbXUgdW4gYXIgdMSBbSBzYWlzdMSrdG8gbGF1a3UgaW1wb3J0xJPFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0tsYXNlcyBpbXBvcnTEk8WhYW5hcyBsYWlrxIEgbm90aWthIGvEvMWrZGEuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBTbMSTcHRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gYXR0xJNsb3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfEu2F1aiBwYXBsYcWhaW7EgXQgbWVrbMSTxaFhbmFzIG5vc2FjxKtqdW11cyBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbsSBLiBJem1hbnRvam90IMWhbyBmdW5rY2lqdSwgasWrcyB2YXJhdCBtZWtsxJN0LCBwaWVtxJNyYW0sIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBub3NhdWt1bXUgYXIgxaHEgWRpZW0gbm9zYWPEq2p1bWllbSwgcGllbcSTcmFtLCAiKCprZXkxKiYmKmtleTIqKSIgdmFpICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnxLthdWogcGFwbGHFoWluxIF0IG1la2zEk8WhYW5hcyBub3NhY8SranVtdXMga2xpZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW7EgS4gSXptYW50b2pvdCDFoW8gZnVua2NpanUsIGrFq3MgdmFyYXQgbWVrbMSTdCwgcGllbcSTcmFtLCBrb25maWd1csSBY2lqYXMgZWxlbWVudGEgbm9zYXVrdW11IGFyIMWhxIFkaWVtIG5vc2FjxKtqdW1pZW0sIHBpZW3Ek3JhbSwgIigqa2V5MSomJiYqa2V5MiopIiB2YWkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdQaWXFocS3aXJ0aWUgS0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0tsaWVudGEgdXrFhsSTbXVtYW0gcGllxaHEt2lydGllIEtJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnS2xpZW50YSBsaWV0b3TEgWphbSBwaWXFocS3aXJ0aWUgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgaWVzdGF0xKtqdW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQxIFyYmF1ZMSrdCB1bmlrxIFsdSBub3NhdWt1bXUgdGlrYWkgdGFqxIEgcGHFocSBIENvbmZpZ0l0ZW0ga2xhc8STIChcJ2NsYXNzXCcpIHZhaSBnbG9ixIFsaSAoXCdnbG9iYWxcJyksIGthcyBub3rEq23Ekywga2EsIG1la2zEk2pvdCBkdWJsaWvEgXR1cywgdGllayDFhmVtdHMgdsSTcsSBIGthdHJzIGVzb8WhYWlzIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdJenbEk2xpZXRpZXMgbW9kdWxpLCBsYWkgaWV2aWVzdHUgbm9zYXVrdW11IHNoxJNtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ0l6dsSTbGlldGllcyBtb2R1bGksIGxhaSBpZXZpZXN0dSBudW11cnUgc2jEk211Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdJenbEk2xpZXRpZXMgbW9kdWxpLCBsYWkgaWV2aWVzdHUgdmVyc2lqdSB2aXJrbmVzIHNoxJNtdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdJenbEk2xpZXRpZXMgYXRyaWLFq3R1cywga2FzIGl6cmFpc2EgamF1bmFzIHZlcnNpamFzIGl6dmVpZGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0l6dsSTbGlldGllcyBrYXRlZ29yaWphcywga28gcGllxaHEt2lydCDFoWFpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGFzZWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnS29sb25udSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZmlsdHJpIENvbmZpZ0l0ZW0gUMSBcnNrYXRzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnS29sb25uYXMsIGt1cmFzIHZhciBmaWx0csSTdCBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXTEgS4gUGllesSrbWU6IElyIGF0xLxhdXRpIHRpa2FpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhdHJpYsWrdGkgdW4gZGluYW1pc2tpZSBsYXVraSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgcGlldmllbm/FoWFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgcmVkacSjxJPFoWFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csSTamlldCBlbGVtZW50dSBub3Rpa3VtdSBtb2R1bGksIGthcyBhxKNlbnRhIHNhc2thcm7EkyDEvGF1aiByZcSjaXN0csSTdCB2xJNzdHVyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG5vdGlrdW11IG1vZHVsaXMsIGthcyBhdGphdW5pbmEga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHBhxaFyZWl6xJNqbyBkZWZpbsSrY2lqdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdLb25maWd1csSTxaFhbmFzIGVsZW1lbnR1IHbEk3N0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgZHJ1a8SBxaFhbmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnS29uZmlndXLEk2ppZXQgdmllbnVtYSB0xIFsdW1tYWnFhnUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIHNrYXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICfFoMSBZHUga2xhxaF1IENvbmZpZ0l0ZW1zIG5ldGlrcyBzYWdsYWLEgXRpIEVsYXN0aWNzZWFyY2ggc2VydmVyxKsuIExhaSB0byBwaWVtxJNyb3R1IGVzb8WhYWppZW0gQ0ksIHDEk2MgxaHEq3Mgb3BjaWphcyBtYWnFhmFzIENJIG1pZ3LEgWNpamEgaXIgasSBdmVpYywgaXptYW50b2pvdCBrb25zb2xpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBhciDFocSBZGllbSBpenZpZXRvxaFhbmFzIHN0xIF2b2vEvGllbSBuZXRpa3Mgc2FnbGFixIF0aSBFbGFzdGljc2VhcmNoIHNlcnZlcsSrLiBMYWkgdG8gcGllbcSTcm90dSBlc2/FoWFqaWVtIENJLCBwxJNjIMWhxKtzIG9wY2lqYXMgbWFpxYZhcyBDSSBtaWdyxIFjaWphIGlyIGrEgXZlaWMsIGl6bWFudG9qb3Qga29uc29saS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXLEgWNpamFzIHZpZW51bWEgaWVyb2Jlxb5vanVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnS29uZmlndXLEgWNpamFzIHZpZW51bWEgaWVyb2Jlxb5vanVtcyB2aWVuxIEgbGFwxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWd1csSBY2lqYXMgcMSBcnZhbGTEq2JhcyBkYXR1YsSBemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdLb25maWd1csSBY2lqYXMgZWxlbWVudGEgbGllbGEgYXBqb21hIG1vZHVsaXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBtZWtsxJPFoWFuYSBhxKNlbnRhIGludGVyZmVpc2EgYWl6bXVndXLEk2rEgSBtYXLFoXJ1dMSTdMSBasSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdJenZlaWRvdCB1biBwxIFydmFsZMSrdCBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZGVmaW7Eq2NpamFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0l6dmVpZG8gQ29uZmlnSXRlbXMgYmnEvGV0ZXMga29ua3LEk3RvcyBsYWlrYSBwdW5rdG9zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLbGllbnRpIHZhciBza2F0xKt0IHbEk3N0dXJpc2vEgXMgQ0kgdmVyc2lqYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0tsaWVudGllbSBpciBpZXNwxJNqYSBtYW51xIFsaSBwxIFyc2zEk2d0aWVzIHN0YXJwIHbEk3N0dXJpc2thasSBbSBDSSB2ZXJzaWrEgW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnTm9rbHVzxJNqdW1hIGRhdGksIGthcyBpem1hbnRvamFtaSBhdHJpYsWrdGEga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBla3LEgW7EgS4gUGllbcSTcnM6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnTm9rbHVzxJNqdW1hIGRhdGksIGthcyBpem1hbnRvamFtaSBhdHJpYsWrdGEga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBla3LEgW7EgS4gUGllbcSTcnM6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbsSTdCBEYXJixKtiYXMsIGt1csSBcyBwaWVzYWlzdMSrdG8gb2JqZWt0dSBsb2dyxKtrxIEgaXIgcGllZWphbWEgaWVzdGF0xKtqdW11IHBvZ2EgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTMWrZHp1LCDFhmVtaWV0IHbEk3LEgSwga2EgxaHEq20gZGFyYsSrYsSBbSBpciBqxIFixat0IHJlxKNpc3RyxJN0aWVtIMWhxIFkaWVtIEpTIHVuIENTUyBmYWlsaWVtOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB1biBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbsSTdCBUZW1wbGF0ZTo6VG9vbGtpdCBzaMSTbXUgdmVyc2lqdSB2aXJrbsSTbS4gSXptYW50byB0aWthaSB0YWQsIGphIHZlcnNpamFzIHZpcmtuZXMgbW9kdWxpcyBpciBpZXN0YXTEq3RzIHV6IFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ05vc2FraWV0IG5vc2FjxKtqdW11IGtvcHVtdSwgc2Fza2HFhsSBIGFyIGt1cmllbSBrbGllbnRhbSBpciBhdMS8YXV0cyBza2F0xKt0IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dS4gTm9zYWPEq2p1bXVzIHDEk2MgaXp2xJNsZXMgdmFyIGllcm9iZcW+b3QgbMSrZHogbm90ZWlrdMSBbSBrbGllbnR1IGdydXDEgW0uIE5vc2F1a3VtcyBpciB2aWVuxKtnYWlzIG9ibGlnxIF0YWlzIGF0cmlixat0cy4gSmEgbmF2IG5vcsSBZMSrdGFzIGNpdGFzIG9wY2lqYXMsIMWhYWrEgSBrYXRlZ29yaWrEgSBixatzIHJlZHphbWkgdmlzaSBrb25maWd1csSBY2lqYXMgZWxlbWVudGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbsSTIE5lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZHrEk8WhYW5haSwgaXptYW50b2pvdCB2aXNwxIFyxJNqbyBzYXNrYXJuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluxJMgTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGllZ8WrdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHVzLCBpem1hbnRvam90IHZpc3DEgXLEk2pvIHNhc2thcm5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW7EkyBOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzIElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5haSwgaXptYW50b2pvdCB2aXNwxIFyxJNqbyBzYXNrYXJuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluxJMgTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcyBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBpZXN0YXTEq8WhYW5haSwgaXptYW50b2pvdCB2aXNwxIFyxJNqbyBzYXNrYXJuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW7EkyBwxIFyc2thdGEgbW9kdWxpLCBsYWkgcGFyxIFkxKt0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2FyYWtzdGEgbWF6byBza2F0dS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnTm9zYWthLCB2YWkgbWV6Z2x1IHNhdmllbm9qdW1vcyBpciBqxIFub3LEgWRhIHNhaXRlcyB0aXBhIGV0acS3ZXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluxJMgcmVndWzEgXLEgXMgaXp0ZWlrc21lcyBrYXRyYWkgQ29uZmlnSXRlbSBrbGFzZWkgYXRzZXZpxaHEt2ksIGxhaSBwxIFyYmF1ZMSrdHUgQ29uZmlnSXRlbSBub3NhdWt1bXUgdW4gcGFyxIFkxKt0dSBhdGJpbHN0b8Whb3Mga8S8xatkYXMgemnFhm9qdW11cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOb3Nha2EgcGllZWphbcSBcyBDSSBrb2xvbm5hcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXTEgSBhdGthcsSrYsSBIG5vIENJIGtsYXNlcy4gS2F0cmFtIGllcmFrc3RhbSBqxIFzYXN0xIF2IG5vIGtsYXNlcyBub3NhdWt1bWEgdW4gYXR0aWVjxKtnxIFzIGtsYXNlcyBwaWVlamFtbyBsYXVrdSBtYXPEq3ZhLiBEaW5hbWlza28gbGF1a3UgaWVyYWtzdG9zIGrEgWlldsSTcm8gc2jEk21hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOb3Nha2Egbm9rbHVzxJNqdW1hIGtvbmZpZ3VyxIFjaWphcyB2aWVudW1hIGF0cmlixat0dSBrb25maWd1csSBY2lqYXMgdmllbnVtdSDFocS3aXJvxaFhbmFpIGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyB2aWVudW11IG1la2zEk8WhYW5hcyByZXp1bHTEgXRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEga29uZmlndXLEgWNpamFzIHZpZW51bWEgYXRyaWLFq3R1IGtsaWVudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyB2aWVudW11IG1la2zEk8WhYW5hcyByZXp1bHTEgXR1IMWhxLdpcm/FoWFuYWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSBrb25maWd1csSBY2lqYXMgdmllbnVtYSBhdHJpYsWrdHUgxaHEq3Mgb3BlcsSBY2lqYXMga29uZmlndXLEgWNpamFzIHZpZW51bWEgbWVrbMSTxaFhbmFzIHJlenVsdMSBdGEga29uZmlndXLEgWNpamFzIHZpZW51bWEgxaHEt2lyb8WhYW5haS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHNlY8SrYnUgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyByZXp1bHTEgXRvcy4gQXVnxaF1cDogdmVjxIFrYWlzIGlyIGF1Z8WhcHVzxJMuIFV6IGxlanU6IGphdW7EgWthaXMgYXVnxaFwdXPEky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHNlY8SrYnUga2xpZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyByZXp1bHTEgXRvcy4gVXogYXVnxaF1OiB2ZWPEgWthaXMgaXIgYXVnxaFwdXPEky4gVXogbGVqdTogamF1bsSBa2FpcyBhdWfFoXB1c8STLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdOb3Nha2Egbm9rbHVzxJNqdW1hIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBzZWPEq2J1IMWhxKtzIG9wZXLEgWNpamFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0xIEuIFV6IGF1Z8WhdTogdmVjxIFrYWlzIHV6IGF1Z8WhdS4gVXogbGVqdTogamF1bsSBa2FpcyBhdWfFoXB1c8STLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnTm9zYWthIG5va2x1c8STanVtYSByxIFkxKt0xIFzIENJIGtvbG9ubmFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBIGF0a2FyxKtixIEgbm8gQ0kga2xhc2VzLiBLYXRyYW0gaWVyYWtzdGFtIGrEgXNhc3TEgXYgbm8ga2xhc2VzIG5vc2F1a3VtYSB1biBhdHRpZWPEq2fEgXMga2xhc2VzIHBpZWVqYW1vIGxhdWt1IG1hc8SrdmEuIERpbmFtaXNrbyBsYXVrdSBpZXJha3N0b3MgasSBaWV2xJNybyBzaMSTbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnTm9zYWthIHDEk2Mgbm9rbHVzxJNqdW1hIHLEgWTEgW1vIGF0dGllY8SrYnUgZHppxLx1bXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEgcsSBZMSrdG8ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBhdHJpYsWrdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBla3LEgW5hbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ05vc2FrYSBub2tsdXPEk2p1bWEgcsSBZMSrdG8ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBhdHJpYsWrdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW5hcyBla3LEgW5hbS4gUGllbcSTcnM6ICJLZXkiIGrEgWLFq3QgZGluYW1pc2vEgSBsYXVrYSBub3NhdWt1bWFtLCDFoWFqxIEgZ2FkxKtqdW3EgSAiWCIsICJDb250ZW50IiBqxIFixat0IGRpbmFtaXNrxIEgbGF1a2EgdsSTcnTEq2JhaSBhdGthcsSrYsSBIG5vIGRpbmFtaXNrxIEgbGF1a2EgdGlwYSwgVGV4dDogImEgdGV4dCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgdW4gdmFpIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluxJMga2xhc2VzICJJVFNNQ29uZmlnSXRlbSIgbm9rbHVzxJNqdW1hIGFwYWvFoW9iamVrdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdOb3Nha2EgcGllZWphbcSBcyBDSSBrb2xvbm5hcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXTEgSBhdGthcsSrYsSBIG5vIENJIGtsYXNlcy4gS2F0cmFtIGllcmFrc3RhbSBqxIFzYXN0xIF2IG5vIGtsYXNlcyBub3NhdWt1bWEgdW4gYXR0aWVjxKtnxIFzIGtsYXNlcyBwaWVlamFtbyBsYXVrdSBtYXPEq3ZhLiBEaW5hbWlza28gbGF1a3UgaWVyYWtzdG9zIGrEgWlldsSTcm8gc2jEk21hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ05vc2FrYSB0ZWtzdGEgcmVkYWt0b3JhIGtvbXBvbmVudGEgYXVnc3R1bXUgxaFhasSBIGVrcsSBbsSBLiBJZXZhZGlldCBza2FpdGxpIChwaWtzZcS8aSkgdmFpIHByb2NlbnR1xIFsbyB2xJNydMSrYnUgKHJlbGF0xKt2aSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05vc2FrYSByaW5kdSBza2FpdHUgQ0kgZGVmaW7Eq2NpanUgcmVkYWt0b3JhbSBhZG1pbmlzdHJhdG9yYSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ05vc2FrYSBpbmNpZGVudHUgc3TEgXZva8S8dSBzZWPEq2J1IG5vIGF1Z3N0YSAocGllbcSTcmFtLCBjcmljaXRhbCkgbMSrZHogemVtYW0gKHBpZW3Ek3JhbSwgZnVua2Npb27EgWxzKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbsSTIGF0dGllY8SrZ29zIGl6dmlldG/FoWFuYXMgc3TEgXZva8S8dXMsIGt1cm9zIHNhaXN0xKt0xIFzIGJpxLxldGVzIHZhciBpZXRla23Ek3QgS0kgc3RhdHVzdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdOb3Nha2EgbWVrbMSTxaFhbmFzIGllcm9iZcW+b2p1bXUgZWtyxIFuYW0gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdOb3Nha2EgbWVrbMSTxaFhbmFzIGllcm9iZcW+b2p1bXUgZWtyxIFuYW0gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdOb3Nha2EgbWVrbMSTxaFhbmFzIGllcm9iZcW+b2p1bXUgZWtyxIFuYW0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdOb3Nha2EgbWVrbMSTxaFhbmFzIGllcm9iZcW+b2p1bXUgZWtyxIFuYW0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW7EkyBwYXLEgWTEq3TEgXMgQ0kga29sb25uYXMgc2FpxaF1IHRhYnVsYXMgc2FyZcW+xKPEq3RhasSBIHNrYXTEgSB2aXPEgW0gQ0kga2xhc8STbS4gSmEgbmF2IGllcmFrc3RhLCB0aWVrIHBhcsSBZMSrdGFzIG5va2x1c8STanVtYSBrb2xvbm5hcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluxJMgcGFyxIFkxKt0xIFzIENJIGtvbG9ubmFzIHNhacWhdSB0YWJ1bGFzIHNhcmXFvsSjxKt0YWrEgSBza2F0xIEgYXRrYXLEq2LEgSBubyBDSSBrbGFzZXMuIEthdHJhbSBpZXJha3N0YW0gasSBYsWrdCBhciBwcmVmaWtzdSBrbGFzZXMgbm9zYXVrdW1hbSB1biBkdWJ1bHRpZW0gZGl2cHVua3R1IGtvbXV0YXRvcmllbSAodC4gaS4sIENvbXB1dGVyOjopLiBJciBkYcW+aSBDSSBhdHJpYsWrdGksIGthcyBpciBrb3DEq2dpIHZpc2llbSBDSSAocGllbcSTcnMga2xhc2VpIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBMYWkgcGFyxIFkxKt0dSBhdHNldmnFocS3dXMgQ0kgYXRyaWLFq3R1cywga2FzIGRlZmluxJN0aSBDSSBkZWZpbsSrY2lqxIEsIGrEgWl6bWFudG8gxaHEgWRhIHNoxJNtYSAocGllbcSTcnMga2xhc2VpIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEphIG5hdiBpZXJha3N0YSBwYXIgQ0kga2xhc2ksIHRpZWsgcGFyxIFkxKt0YXMgbm9rbHVzxJNqdW1hIGtvbG9ubmFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ05vc2FrYSwga3VyaSBlbGVtZW50aSBpciBwaWVlamFtaSAiQWN0aW9uIiBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1a3TFq3JhcyB0cmXFoWFqxIEgbMSrbWVuxKsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTm9zYWthLCBrdXJpIGVsZW1lbnRpIGlyIHBpZWVqYW1pIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVrdMWrcmFzIHBpcm1hasSBIGzEq21lbsSrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdOb3Nha2EsIGt1cmkgZWxlbWVudGkgaXIgcGllZWphbWkgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWt0xatyYXMgb3RyYWrEgSBsxKttZW7Eqy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnTm9zYWthLCBrxIFkYSB2ZWlkYSBzYWl0ZSAobm9zYXVrdGEgbm8gYmnEvGV0ZXMgcGVyc3Bla3TEq3ZhcykgdmFyIGlldGVrbcSTdCBzYWlzdMSrdMSBcyBDSSBzdGF0dXN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ05vc2FrYSwga8SBZGEgdmVpZGEgYmnEvGV0ZSB2YXIgaWV0ZWttxJN0IHNhaXN0xKt0xIFzIENJIHN0YXR1c3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnRGVmaW7Eq2NpamFzIGF0amF1bmluxIHFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXLEgWNpamFzIGVsZW1lbnRhIGR6xJPFoWFuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0l6dmlldG/FoWFuYXMgdmFsc3RzIGtyxIFzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVibGlrxIF0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0RpbmFtaXNrbyBsYXVrdSBub3Rpa3VtdSBtb2R1bGlzLCBrYXMgYXR6xKttxJMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGRlZmluxKtjaWphcyBrxIEgbmVzaW5ocm9uaXrEk3RhcywgamEgbWFpbsSBcyBkaW5hbWlza2llIGxhdWtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pc2tpZSBsYXVraSwga2FzIHJlZHphbWkgYcSjZW50YSBzYXNrYXJuZXMgcGFwaWxkdSBJVFNNIGxhdWthIGVrcsSBbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWlza2llIGxhdWtpLCBrYXMgcmVkemFtaSBrbGllbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgcMSBcnNrYXRhIGVrcsSBbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWlza2llIGxhdWtpLCBrYXMgcmVkemFtaSBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbsSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdJZXNwxJNqbyBrb25maWd1csSBY2lqYXMgdmllbnVtYSBtYXN2ZWlkYSBkYXJixKtidSBmdW5rY2lqdSwgbGFpIGHEo2VudGEgZnJvbnRlbmTEgSB2YXLEk3R1IHN0csSBZMSBdCBhciB2YWlyxIFrIG5la8SBIHZpZW51IGtvbmZpZ3VyxIFjaWphcyB2aWVudW11IHZpZW5sYWlrdXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdJZXNsxJNkeiBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWFzdmVpZGEgZGFyYsSrYnUgZnVua2NpanUgdGlrYWkgdXpza2FpdMSrdGFqxIFtIGdydXDEgW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0llc2zEk2R6L2l6c2zEk2R6IGZ1bmtjaW9uYWxpdMSBdGksIGxhaSBwxIFyYmF1ZMSrdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgdW5pa8SBbG9zIG5vc2F1a3VtdXMuIFBpcm1zIMWhxKtzIG9wY2lqYXMgaWVzbMSTZ8WhYW5hcyBqxIFwxIFyYmF1ZGEsIHZhaSBqxatzdSBzaXN0xJNtxIEgbmF2IGphdSBlc2/FoXUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGFyIGR1YmzEk2pvxaFpZW0gbm9zYXVrdW1pZW0uIFRvIHZhciBpemRhcsSrdCBhciBrb25zb2xlcyBrb21hbmR1IEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTm90aWt1bXUgbW9kdWxpcywgbGFpIGllc3RhdMSrdHUgY29uZmlnaXRlbS1zdGF0dXMgdXogdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGluZGVrc2EgbGF1a2ksIGthcyB0aWVrIGl6bWFudG90aSBwaWxudGVrc3RhIG1la2zEk8WhYW5haS4gTGF1a2kgYXLEqyB0aWVrIHNhZ2xhYsSBdGksIGJldCB0aWUgbmF2IG9ibGlnxIF0aSBrb3DEk2phaSBmdW5rY2lvbmFsaXTEgXRlaS4gUGllbGlrdW11IGlla8S8YXXFoWFudSB2YXIgYXRzcMSTam90LCBpZXN0YXRvdCBpZXJha3N0YW0gdsSTcnTEq2J1IDAgdmFpIGR6xJPFoW90IHRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnS29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGluZGVrc8SBIHNhZ2xhYsSBdGllIGxhdWtpLCBrYXMgdGllayBpem1hbnRvdGkgbmUgdGlrYWkgcGlsbnRla3N0YSBtZWtsxJPFoWFuYWksIGJldCBhcsSrIGNpdMSBbSBsaWV0xIFtLiBQaWxuxKtnYWkgZnVua2Npb25hbGl0xIF0ZWkgdmlzaSBsYXVraSBpciBvYmxpZ8SBdGkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnS2F0cmFpIHTEq21la8S8YSBwYWthbHBvanVtYW0gKGF0c2zEk2dhKSB2YXIgZGVmaW7Ek3Qga2xhxaF1IG1hc8SrdnUgKHbEk3J0xKtiYSksIHV6IGt1cnUgaW1wb3J0cyBpciBpZXJvYmXFvm90cy4gVmlzxIFtIGl6dsSTbMSTdGFqxIFtIGtsYXPEk20gdmFpIHZpc8SBbSBlc2/FoWFqxIFtIGtsYXPEk20gaW52b2tlcmEga29uZmlndXLEgWNpasSBIGLFq3MgasSBaXp2xJNsYXMgaWRlbnRpZmljxJNqb8WhaWUgYXRyaWLFq3RpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHXEvGEgcmXEo2lzdHLEgWNpamEgQ29uZmlnSXRlbUZldGNoIGludm9rYXRvcmEgc2zEgW5pbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHXEvGEgcmXEo2lzdHLEgWNpamEgQ29uZmlnSXRlbUZldGNoIGludm9rYXRvcmEgc2zEgW5pbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnR2VuZXJpY0ludGVyZmFjZSBtb2R1xLxhIHJlxKNpc3RyxIFjaWphIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2F0b3JhIHNsxIFuaW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJZWvEvGF1aiBpenZpZXRvxaFhbmFzIHN0xIF2b2vEvHVzIGtsaWVudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0lldHZlciBpbmNpZGVudHUgc3TEgXZva8S8dXMga2xpZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IG1la2zEk8WhYW7EgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc2ltxIFsYWlzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBza2FpdHMsIGthcyB0aWtzIHBhcsSBZMSrdHMgxaHEq3Mgb3BlcsSBY2lqYXMgcmV6dWx0xIF0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWxpcywgbGFpIHDEgXJiYXVkxKt0dSBwYXIga2xhc2kgYXRiaWxkxKtnbyBncnVwdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bGlzLCBsYWkgcMSBcmJhdWTEq3R1IGdydXB1LCBrYXMgaXIgYXRiaWxkxKtnYSBwYXIga29uZmlndXLEgWNpamFzIGVsZW1lbnR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsaXMsIGxhaSDEo2VuZXLEk3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHN0YXRpc3Rpa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9zYXVrdW1zIE1vZHVsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bXVydSBtb2R1bGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBza2FpdHMsIGthcyB0aWtzIHBhcsSBZMSrdHMga2F0csSBIG1la2zEk8WhYW5hcyByZXp1bHTEgXR1IGxhcMSBIGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1csSBY2lqYXMgZWxlbWVudHUgc2thaXRzLCBrYXMgdGlrcyBwYXLEgWTEq3RzIGthdHLEgSBtZWtsxJPFoWFuYXMgcmV6dWx0xIF0dSBsYXDEgSBrbGllbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JqZWt0aSwga3VydXMgbWVrbMSTdCwgY2lrIGllcmFrc3R1IHVuIGvEgWR1cyBhdHJpYsWrdHVzIHBhcsSBZMSrdC4gQ29uZmlnSXRlbSBhdHJpYsWrdGkgaXIgc2thaWRyaSBqxIF1emdsYWLEgSwgaXptYW50b2pvdCBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQxIFyc2thdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYcWhdSBrYXRlZ29yaWp1IGthdGVnb3JpasSBbSBhxKNlbnRhIHNhc2thcm5lcyBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIG1hesSBIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdGEga29sb25udSBmaWx0cmllbS4gTMWrZHp1LCDFhmVtaWV0IHbEk3LEgTogaWVzdGF0b3QgIkFrdMSrdnMiIHV6IDAsIGHEo2VudGkgbmV2YXLEk3MgcmVkacSjxJN0IHRpa2FpIMWhxKtzIGdydXBhcyBpZXN0YXTEq2p1bXVzIHNhdsSBcyBwZXJzb27Eq2dhasSBcyBwcmVmZXJlbmPEk3MsIGJldCBhZG1pbmlzdHJhdG9yaSBqb3Byb2rEgW0gdmFyxJNzIHJlZGnEo8STdCBjaXRhIGxpZXRvdMSBamEgaWVzdGF0xKtqdW11cyBzYXbEgSB2xIFyZMSBLiBJem1hbnRvamlldCAiUHJlZmVyZW5jZUdyb3VwIiwgbGFpIGtvbnRyb2zEk3R1LCBrdXLEgSBhcGdhYmFsxIEgxaFpZSBpZXN0YXTEq2p1bWkgYsWrdHUgcmVkemFtaSBsaWV0b3TEgWphIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBpenZpZXRvxaFhbmFzIHN0xIF2b2vEvHUga3LEgXNhaSBhxKNlbnRhIHNhc2thcm5lcyBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSXp2aWV0b8WhYW5hcyBzdMSBdm9rxLx1IHBhcmFtZXRyaSBhxKNlbnRhIHNhc2thcm5lcyBwcmVmZXJlbsSNdSBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1Zpc3DEgXLEq2dvIGthdGFsb2dhIGF0cmlixat0dSBhdMS8YXVqdSBncnVwdSBwaWVtxJNydSBwYXJhbWV0cmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIG5vc2F1a3VtYSBtb2R1xLxhIHBhcmFtZXRyaWVtIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGFzxJNtIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhxaF1IG51bXVydSBtb2R1xLxhIHBhcmFtZXRyaWVtIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnTGFwdSAoa3VyxIFzIHRpZWsgcGFyxIFkxKt0aSBrb25maWd1csSBY2lqYXMgZWxlbWVudGkpIHBhcmFtZXRyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHZlcnNpamFzIHZpcmtuZXMgbW9kdcS8YSBwYXJhbWV0cmllbSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUga2xhc8STbSBhxKNlbnRhIGludGVyZmVpc2EgcHJlZmVyZW7EjXUgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB2ZXJzaWphcyB2aXJrbmVzIMWhYWJsb25hIHLEq2t1IGtvcHVtYSBtb2R1xLxhIHBhcmFtZXRyaWVtIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGFzxJNtIGHEo2VudGEgc2Fza2FybmVzIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHZlcnNpamFzIHRyaWdlcmltIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBrbGHFoXUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtsYXPEk20gYcSjZW50YSBpbnRlcmZlaXNhIHByZWZlcmVuxI11IHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdWZWljIGtvbmZpZ3VyxJN0byBkYXJixKtidSBrYXRyYW0gbm90aWt1bWFtIChrxIEgSW52b2tlcikga2F0cmFpIGtvbmZpZ3VyxJN0YWphaSB0xKttZWvEvGEgcGFrYWxwb2p1bWFtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnQXTEvGF1anUgZ3J1cGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaXptYW50b3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIHBpZXZpZW5vxaFhbmFzIGRhcmLEq2J1IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBla3LEgW51IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBpem1hbnRvdHUgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgbWVrbMSTxaFhbmFzIGVrcsSBbnUgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBtZWtsxJPFoWFuYXMgZWtyxIFudSBrbGllbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaXptYW50b3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtva2Egc2thdMSranVtYSBla3LEgW51IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaXptYW50b3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHTEgWx1bW1hacWGYXMgZWtyxIFudSBhxKNlbnRhIHNhc2thcm7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgaXptYW50b3R1IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHBpZXZpZW5vxaFhbmFzIGVrcsSBbnUgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBhxKNlbnRhIHNhc2thcm7EkyBpem1hbnRvdHUgbWFzdmVpZGEgSVRTTSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgZWtyxIFudS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmVwaWVjaWXFoWFtxIFzIGF0xLxhdWphcywgbGFpIGl6bWFudG90dSBJVFNNIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSByZWRpxKPEk8WhYW5hcyBla3LEgW51IGHEo2VudGEgc2Fza2FybsSTLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOZXBpZWNpZcWhYW3EgXMgYXTEvGF1amFzLCBsYWkgYcSjZW50YSBzYXNrYXJuxJMgaXptYW50b3R1IGVrcsSBbnUgSGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05lcGllY2llxaFhbcSBcyBhdMS8YXVqYXMsIGxhaSBhxKNlbnRhIHNhc2thcm7EkyBpem1hbnRvdHUgZWtyxIFudSBkcnVrxIF0IElUU00ga29uZmlndXLEgWNpamFzIGVsZW1lbnR1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwcml2aWxlZ2VzIHRvIGRlbGV0ZSBjb25maWcgaXRlbXMuJ30gPSAnTmVwaWVjaWXFoWFtxIFzIHByaXZpbMSTxKNpamFzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBkesSTxaFhbmFpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ01la2zEk3Qga29uZmlndXLEgWNpamFzIHZpZW51bXVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQXV0b23EgXRpc2tpIGllc3RhdGlldCBLSSBpbmNpZGVudGEgc3TEgXZva2xpLCBrYWQgYmnEvGV0ZSBpciBzYWlzdMSrdGEgYXIgS0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSWVzdGF0YSBpenZpZXRvxaFhbmFzIHN0xIF2b2tsaSBhxKNlbnRhIGludGVyZmVpc2Ega29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGtvcHVtYSBla3LEgW7EgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSWVzdGF0YSBpbmNpZGVudGEgc3TEgXZva2xpIGHEo2VudGEgaW50ZXJmZWlzYSBrb25maWd1csSBY2lqYXMgdmllbnVtYSBrb3B1bWEgZWtyxIFuxIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGllayBwYXLEgWTEq3RhIHNhaXRlIGl6dsSTbG7Ekywga2FzIMS8YXVqIHNhdmllbm90IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhciBjaXR1IG9iamVrdHUgYcSjZW50YSBpbnRlcmZlaXNhIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSB0xIFsdW1tYWnFhmFzIHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBwaWVrxLzFq3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSB2xJNzdHVyZWkgYcSjZW50YSBzYXNrYXJuZXMga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIHBpZWvEvMWrdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnRhIHbEk3N0dXJlaSBhxKNlbnRhIHNhc2thcm5lcyB0xIFsdW1tYWnFhmFzIHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBzYWl0aSBpenbEk2xuxJMsIGxhaSBkesSTc3R1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhxKNlbnRhIHNhc2thcm5lcyB0xIFsdW1tYWnFhmFzIHNrYXTEgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1LEgWRhIHNhaXRpIGl6dsSTbG7EkywgbGFpIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBzYWl0ZXMgdGlrdHUgcGFyxIFkxKt0YXMga8SBIEtva3Ugc2thdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgZHVibMSTdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGHEo2VudGEgc2Fza2FybmVzIGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBwxIFyc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUaWVrIHBhcsSBZMSrdGEgc2FpdGUgaXp2xJNsbsSTLCBsYWkgZHVibMSTdHUga29uZmlndXLEgWNpamFzIGVsZW1lbnR1IGHEo2VudGEgc2Fza2FybmVzIHTEgWx1bW1hacWGYXMgc2thdMSBLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgcmVkacSjxJN0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYcSjZW50YSBzYXNrYXJuZXMgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUaWVrIHBhcsSBZMSrdGEgc2FpdGUgaXp2xJNsbsSTLCBsYWkgYXRncmllenRvcyBhdHBha2HEvCBhxKNlbnRhIHNhc2thcm5lcyBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgaXpkcnVrxIF0dSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgYcSjZW50YSBzYXNrYXJuZXMgdMSBbHVtbWFpxYZhcyBza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUsSBZGEgc2FpdGkgaXp2xJNsbsSTLCBsYWkgcGFsaWVsaW7EgXR1IGtvbmZpZ3VyxIFjaWphcyBlbGVtZW50dSBhxKNlbnRhIGludGVyZmVpc2Ega29uZmlndXLEgWNpamFzIGVsZW1lbnR1IHDEgXJza2F0xIEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSxIFkYSBrb25maWd1csSBY2lqYXMgZWxlbWVudHUgdsSTc3R1cmkgKHNha8SBcnRvdHUgYXBncmllenTEgSBzZWPEq2LEgSkgYcSjZW50YSBzYXNrYXJuxJMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ05va2x1c8STanVtYSBrYXRlZ29yaWphLCBrYXMgdGllayByxIFkxKt0YSwgamEgbmF2IGl6dsSTbMSTdGEgbmV2aWVuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyxIFjaWphcyBlbGVtZW50YSBpZGVudGlmaWthdG9ycywgcGllbcSTcmFtLCBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUMSTYyBub2tsdXPEk2p1bWEgaXIgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdBdXRvbcSBdGlza2kgaWVkYXJiaW5hIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2F0b3J1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2lqYSBWaXJrbmVzIHZpcmtuZXMgaXp0ZWlrc21lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnNpamFzIHZpcmtuZXMgbW9kdWxpcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaWphIFRyaWdnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ1ZhaSBDb25maWdJdGVtQUNMIGl6cGlsZGkgdmFyIG5vdsSTcnN0LCBwxIFyYmF1ZG90IGtlxaFhdG1pxYbEgSBlc2/FoW8gbGF1a3UgYXRrYXLEq2Jhcy4gVGFzIHZhciB1emxhYm90IHZlaWRsYXB1IGllbMSBZGVzIGxhaWt1LCBiZXQgdGFzIGlyIGrEgWF0c2zEk2R6LCBqYSBBQ0xNb2R1bGVzIGlyIGrEgWl6bWFudG8gSVRTTUNvbmZpZ0l0ZW0tIHVuIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdLxIFkYSB2aXNwxIFyxKtnYSBpbmZvcm3EgWNpamEgaXIgbm9yxIFkxKt0YSBnYWx2ZW7Eky4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdrbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICdnbG9ixIFsxIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICdwb3N0cHJvZHVrdMSrdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3Bpcm1zIHJlcHJvZHVrdMSrdsSBIHBlcmlvZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3TEq3ZzJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IGNvbGxhcyAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIGNvbGxhICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgY29sbGFzICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IGNvbGxhcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5IGNvbGx1IHN0YXTEq3ZzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBjb2xsYXMgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgY29sbGFzICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMSBjb2xsdSBzdGF0xKt2cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgY29sbGFzICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMgY29sbHUgcGxhdWt0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgY29sbGFzICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBjb2xsYXMgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IGNvbGxhcyAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IGNvbGxhcyAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBjb2xsYXMgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IGNvbGxhcyAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgY29sbGFzICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBjb2xsYXMgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGNvbGxhcyAoMTYwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOSw0IGNvbGxhcyAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IGNvbGxhcyAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IGNvbGxhcyAoMTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICc0MlU6IDczLDUgY29sbGFzICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIGNvbGxhcyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBjb2xsYXMgKDIwMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiBjb2xsYXMgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBjb2xsYXMgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBjb2xsYXMgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IGNvbGxhcyAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgY29sbGFzICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IGNvbGxhcyAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBjb2xsYXMgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgY29sbGFzICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdHcsSBbWF0dmVkxKtiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkcmXFoXUgcGllxaHEt2lyxaFhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWxvZ2FpcyB0xIFscnVuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdJZXLEq2NlcyB0aXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQWt1bXVsYXRvcmEgaWV0aWxwxKtiYSAoQWgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ0FrdW11bGF0b3JhIHRpcHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICfEkmthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdBdXRvYnVzcyBzYXNrYXJuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ1Byb2Nlc29yYSBrbGFzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnSmF1ZGEgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0thdHJhcyBncmFmaXNrxIFzIGthcnRlcyBqYXVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ0thcnRlcyBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICdLYXLFoXUgbGFzxKt0xIFqcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLYXJ0ZXMgdmVpZHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ0tsaWVudHUgc2VydGlmaWvEgXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0tsaWVudGEgcHJvZ3JhbW1hdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2xpZW50dSBrYXRlZ29yaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ0Nsb2NrcmF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnQ2xvY2tzcGVlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnS29kYSBwYXJha3N0xKvFoWFuYXMgc2VydGlmaWvEgXRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJlbsSNdSB0xIFscnVuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdLb25zdWx0xIFjaWp1IGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ1NhemluaWV0aWVzIGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdTYXppbmlldGllcyBhciBpenBsYXTEq3TEgWp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnS29udGVpbmVydSBwxIFydmFsZMSrYmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdMxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdMxKtndW1hIHZlaWRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnTMSrZ3VtYSBwZXJpb2RzIG5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJ0zEq2d1bWEgdGVybWnFhsWhIGzEq2R6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0JlenZhZHUgdMSBbHJ1bmlzIChERUNUIHTEgWxydW5pcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnSXptYWtzdSB2aWVuxKtiYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0xpY2VuxI11IHNrYWl0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnSXp2ZWlkZXMgZGF0dW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdQaWVsxIFnb3RhaXMgcGxhdWt0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCByZXplcnbEk3RzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMgc2VydmVyaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ1LEk8S3aW5hIGl6cmFrc3TEq8WhYW5hcyBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ1Bhc8WrdMSranVtYSBkYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0dhcmFudGlqYXMgZGF0dW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0l6ZG/FoWFuYXMgZGF0dW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEYXJidmlyc21hcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnRG9rdW1lbnR1IHBhcmFrc3TEq8WhYW5hcyBzZXJ0aWZpa8SBdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJIHBsYXVrdHMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0UtcGFzdGEgc2VydGlmaWvEgXRpIChTL01JTUUgc2VydGlmaWvEgXRpKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdEYXJiYSBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnR2FsYSBJUCBhZHJlc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdBdGJhbHN0YSBiZWlnYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEZXLEq2d1bWEgdGVybWnFhsWhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICfEgHLEk2phaXMgY2lldGFpcyBkaXNrcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ1VndW5zbcWrcmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdTcGFyYXJhcmF0dSBlbmVyxKNpamFzIHV6Z2xhYsSBxaFhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGb3JtYXMgZmFrdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnRnJhbsWhxKt6ZXMgbMSrZ3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0Jlem1ha3NhcyBwcm9ncmFtbWF0xatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdWaXNwxIFyxKtnYSBpbmZvcm3EgWNpamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmaXNrxIFzIGthcnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmlza8SBIGthcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAnQXBhcmF0xatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0FwYXJhdMWrcmFzIG1vZGVsaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnQXBhcmF0xatyYXMgc3ZhcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0F1c3RpxYZhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ0lQIHByb3Rva29scyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdJZGVudGl0xIF0ZXMgdW4gcGlla8S8dXZlcyBwxIFydmFsZMSrYmEgKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ0ludmVudMSBcmEgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdG1lbnRhIGl6bWFrc2FzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnUsSTxLdpbmEgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0xatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgbW9uaXRvcnMgKMWhxLdpZHJvIGtyaXN0xIFsdSBkaXNwbGVqcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCBtb25pdG9ycyAoZ2Fpc21hcyBkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnU3RhY2lvbsSBcmFpcyB0xIFscnVuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnUG9ydGF0xKt2YWlzIGRhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ1BsYXR1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICcxLiBzbMSBbmlzOiBmaXppc2thaXMgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICcyLiBzbMSBbmlzOiBkYXR1IHNhaXRlcyBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICczLiBzbMSBbmlzOiB0xKtrbGEgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICczLiBzbMSBbmlzOiB0xKtrbGEgc2zEgW5pcyAoU3VwZXJuZXQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDQ6IFRyYW5zcG9ydCBMYXllcid9ID0gJzQuIHNsxIFuaXM6IHRyYW5zcG9ydGEgc2zEgW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA1OiBTZXNzaW9uIExheWVyJ30gPSAnNS4gc2zEgW5pczogc2VzaWphcyBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJzYuIHNsxIFuaXM6IFByZXplbnTEgWNpamFzIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICc3LiBzbMSBbmlzOiBsaWV0b2p1bXByb2dyYW1tdSBzbMSBbmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ05vbWFzIGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbmNlcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbmNlcyBhdHNsxJNnYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICdMaWNlbmNlcyB0aXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICdMaWNlbmNlcyBwZXJpb2RzIG5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGljZW5jZXMgZGVyxKtndW1hIHRlcm1pxYbFoSBsxKtkeic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aWphIGR6ZWx6cyBmb3NmxIF0YSAoTGlGZVBPNCkgYWt1bXVsYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdGlqYSBqb251IChMaS1pb24pIGFrdW11bGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnQWl6ZGV2dW1hIGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0F0cm9kYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnxKJlb2dyxIFmaXNrYWlzIGdhcnVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNSVQgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNUEwgKE1vemlsbGEgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01hbnVmYWN0dXJlcid9ID0gJ1Jhxb5vdMSBanMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01ha3NpbcSBbMSBIHNsb2R6ZXMgamF1ZGEgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ0F0bWnFhmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICdBdG1pxYZhcyB0aXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICdNaW5pIHN0YXTEq3ZzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbMSBIHTEgWxydcWGYSBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTW9iaWxhaXMvaWVzdHLEgWTEgXRhaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbGlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZcS8YSBhcHJha3N0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdNb25pdG9yYSBpesWhxLdpcnRzcMSTamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnTW9uaXRvcmEgaXptxJNycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ1BlbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1TEq2tscyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICdJbmZvcm3EgWNpamEgcGFyIHTEq2tsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnVMSra2xhIGluZm9ybcSBY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnVMSra2xhIHNsxIFuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOacS3ZcS8YS1rYWRtaWphIChOaUNkKSBha3VtdWxhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pxLdlxLxhLW1ldMSBbGEgaGlkcsSrZGEgKE5pTUgpIGFrdW11bGF0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0zEq2d1bXMgcGFyIGluZm9ybcSBY2lqYXMgbmVpenBhdcWhYW51IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnUGllesSrbWpkYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdQcm9jZXNvcnUgc2thaXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ09wZXJhdMSrdsSBcyBhdG1pxYZhcyBtb2R1xLx1IHNrYWl0cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdHcmFmaXNrbyBrYXLFoXUgc2thaXRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVEIG1vbml0b3JzIChvcmdhbmlza8SBIGdhaXNtYXMgZGlvZGUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ0RhcmLEq2JhcyBpem1ha3Nhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdQYXPFq3TEq2p1bWEgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQ2l0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnSXplamFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ1BJTiBLT0RTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcsSrYmFzIGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUxIFscnXFhmEgbnVtdXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUxIFscnXFhmEgdGlwcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0Zpemlza2llIGtvZG9saSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0VuZXLEo2lqYXMgcGllZ8SBZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdJZWfEgWTEgXRzIHZpZXRuxJMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJ1N0YXTEq3ZhIGR6acS8dW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnU3RhdMWGdSB2aWVuxKtiYXMgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdOdW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ga2FydGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTIHNlcnRpZmlrxIF0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1DEgXJkb8WhYW5hcyBsxKtndW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1NhdGVsxKt0YSB0xIFscnVuaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnSGVybcSTdGlza2kgbm9zbMSTZ3RzIHN2aW5hLXNrxIFiZXMgKFNMQSkgYWt1bXVsYXRvcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTxJNyaWphcyBudW11cnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyYSBwcm9ncmFtbWF0xatyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1Bha2FscG9qdW11IGzEq2d1bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdQYWthbHBvanVtYSBiaXJrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdLb250YWt0bGlnemRhcyB0aXBzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnUHJvZ3JhbW1hdMWrcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdTa2HEvHJ1xYZpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJ0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU8SBa3VtYSBJUCBhZHJlc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ1V6Z2xhYsSBxaFhbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdVemdsYWLEgcWhYW5hcyBub2RhbMSranVtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ01laXRhc3V6xYbEk211bXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ0tvcHNhdmlsa3Vtcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1BsxIFucyBrbGllbnRzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdEaWVnaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJ1RodW5kZXJib2x0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdHcmFmaXNrxIFzIGthcnRlcyBSQU0ga29wxJNqYWlzIGFwam9tcyAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnS29wxJNqYWlzIG9wZXJhdMSrdsSBcyBhdG1pxYZhcyBhcGpvbXMgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnU2vEgXJpZW5la3LEgW5hIG1vbml0b3JzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAnVG9ybmlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0Iga29uY2VudHJhdG9ycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSIGF1c3RpxYZhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQIHTEgWxydW5pcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViY2FtJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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/QviDRgdGC0YDQsNC90LjRhtCwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfQn9GA0LXQstCw0YDRg9Cy0LDRmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfQmNGB0YLQviDRgtCw0LrQsCDQsdCw0YDQsNGYINCy0L4g0L/RgNC10YLRhdC+0LTQvdC40YLQtSDQstC10YDQt9C4Pyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+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+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JjRgdGC0LXRh9C10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Ce0LTRgNC20YPQstCw0ZrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ9Cf0LjQu9C+0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ9Cf0LvQsNC90LjRgNCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfQn9C+0L/RgNCw0LLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn0J/RgNC10LrQuNC90LDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Cf0YDQtdCz0LvQtdC0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfQotC10YHRgi9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0YDQvtCy0LXRgNC4INC30LAg0YPQvdC40LrQsNGC0L3QviDQuNC80LUg0YHQsNC80L4g0LLQviDRgNCw0LzQutC40YLQtSDQvdCwINC40YHRgtCwINCa0L7QvdGE0LjQs9Cn0LvQtdC9INC60LvQsNGB0LAgKFwnY2xhc3NcJykg0LjQu9C4INCz0LvQvtCx0LDQu9C90L4gKFwnZ2xvYmFsXCcpLCDRiNGC0L4g0LfQvdCw0YfQuCDQtNC10LrQsCDRgdC10LrQvtGYINC/0L7RgdGC0L7RmNCw0YfQutC4INCa0L7QvdGE0LjQs9Cn0LvQtdC9INC1INC30LXQvNC10L0g0LLQviDQv9GA0L7RhNC40LvQvtGCINC60L7Qs9CwINGB0LUg0LHQsNGA0LDQsNGCINC00YPQv9C70LjQutCw0YLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQmtC+0L3RhNC40LMg0KfQu9C10L3QvtCy0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0L7QvdGE0LjQsyDRh9C70LXQvSDQvdCw0YHRgtCw0L0g0LzQvtC00YPQu9C4INC60L7QuCDQvtCy0L7Qt9C80L7QttGD0LLQsNCw0YIg0LfQsNC/0LjRiNGD0LLQsNCw0YIg0LvQvtCz0L7QstC4INCy0L4g0LjRgdGC0L7RgNC40ZjQsCDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAn0JrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQp9C70LXQvSDQm9C40LzQuNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQmtGA0LXQuNGA0LDRmCDQuCDQvNC10L3QsNGf0LjRgNCw0Zgg0LTQtdGE0LjQvdC40YbQuNC4INC30LAg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDQp9C70LXQvdC+0LLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINGB0YLQsNC90LTQsNGA0LTQtdC9INGB0YPQsdC+0LHRmNC10LrRgiDQt9CwINC60LvQsNGB0LDRgtCwIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQsdGA0L7RmCDQvdCwINGA0LXQtNC40YbQuCDQt9CwIENJINC00LXRhNC40L3QuNGG0LjRgdC60LjQvtGCINGD0YDQtdC00L3QuNC6INCy0L4g0LDQtNC80LjQvSDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC70LjQvNC40YIg0LfQsCDQsdCw0YDQsNGa0LAg0LfQsCBBZ2VudElUU01Db25maWdJdGVtINC10LrRgNCw0L3QvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0LvQuNC80LjRgiDQt9CwINCx0LDRgNCw0ZrQsCDQt9CwIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gg0LXQutGA0LDQvdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YDQsCDQu9C40LzQuNGCINC30LAg0LHQsNGA0LDRmtCwINC30LAgQWdlbnRJVFNNQ29uZmlnSXRlbSDQtdC60YDQsNC90L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRgNCwINC70LjQvNC40YIg0LfQsCDQsdCw0YDQsNGa0LAg0LfQsCBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoINC10LrRgNCw0L3QvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGA0LAg0L/RgNC40LrQsNC3INC90LAg0LrQvtC70L7QvdC4INC+0LQgQ0lzINCy0L4g0LrQvtC90YTQuNCzINGH0LvQtdC90L7RgiDQv9GA0LXQs9C70LXQtNC+0YIg0LLQviDQt9Cw0LLQuNGB0L3QvtGB0YIg0L7QtCBDSSDQutC70LDRgdCw0YLQsC4g0KHQtdC60L7RmCDQstC70LXQtyDQvNC+0YDQsCDQtNCwINC40LzQsCDQv9GA0LXRhNC40LrRgSDRgdC+INC60LvQsNGB0L3QviDQuNC80LUg0Lgg0LTQstC+0ZjQvdC4INC60L7Qu9C+0L3QuCAoaS5lLiBDb21wdXRlcjo6KS4g0JjQvNCwINC90LXQutC+0LvQutGDIENJLdCQ0YLRgNC40LHRg9GC0Lgg0LrQvtC4INGB0LUg0YfQtdGB0YLQuCDRgdC+INGB0LjRgtC1IENJcyAo0L/RgNC40LzQtdGAINC30LAg0LrQu9Cw0YHRgtCwIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiDQl9CwINC/0YDQuNC60LDQtyDQvdCwINC40LTQuNCy0LjQtNGD0LDQu9C90LggQ0ktQXR0cmlidXRlcyDQutCw0LrQviDRiNGC0L4g0YHQtSDQtNC10YTQuNC90LjRgNCw0L3QuCDQstC+ICBDSS3QlNC10YTQuNC90LjRhtC40ZjQsNGC0LAsINGB0LvQtdC00L3QsNCy0LAg0YjQtdC80LAg0LzQvtGA0LAg0LTQsCDQsdC40LTQtSDQuNGB0LrQvtGA0LjRgdGC0LXQvdCwICjQv9GA0LjQvNC10YAg0LfQsCDQutC70LDRgdCw0YLQsCAgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4g0JDQutC+INC90LXQvNCwINCy0LvQtdC3INC30LAgQ0kg0LrQu9Cw0YHQsCwg0YLQvtCz0LDRiCDRgdGC0LDQvdC00LDRgNC00L3QuNGC0LUg0LrQvtC70L7QvdC4INGB0LUg0L/RgNC40LrQsNC20LDQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INCn0LvQtdC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCg0LDRgdC/0L7RgNC10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAn0KHQvtGB0YLQvtGY0LHQsCDQvdCwINCg0LDRgdC/0L7RgNC10LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAn0JTRg9C/0LvQuNC60LDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAn0J7QstC+0LfQvNC+0LbRg9Cy0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSBidWxrIGFjdGlvbiDQutCw0YDQsNC60YLQtdGA0LjRgdGC0LjQutC4INC30LAg0LDQs9C10L3RgiDQv9GA0LXQtNC10L3QtNC10Lsg0LfQsCDQtNCwINGA0LDQsdC+0YLQuCDRgdC+INC/0L7QstC10ZrQtSDQvtC0INC10YTQtdC9INC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQuNGB0YLQviDQstGA0LzQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9Ce0LLQvtC30LzQvtC20YPQstCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0gYnVsayBhY3Rpb24g0LrQsNGA0LDQutGC0LXRgNC40YHRgtC40LrQuCDRgdCw0LzQviDQt9CwINCz0YDRg9C/0L3QuNGC0LUg0LvQuNGB0YLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDQsdC+0ZjQsCDQvdCwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0L/RgNC40LzQtdGAINC00L7Qt9Cy0L7Qu9C40YLQtSDQt9CwINCz0YDRg9C/0Lgg0L7QtCDQs9C10L3QtdGA0LDQu9C90Lgg0LrQsNGC0LDQu9C+0LMg0LDRgtGA0LjQsdGD0YLQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgNCw0YHQv9C+0YDQtdC0INGB0L7RgdGC0L7RmNCx0LjRgtC1INCy0L4g0L/RgNC10LPQu9C10LTQvtGCINGB0L4g0L7Qv9GG0LjQuNGC0LUgINC90LAg0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtGA0LDQvdC40LLQuCjQstC+INC60L7QuCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC40YLQtSDRh9C70LXQvdC+0LLQuCDRgdC1INC/0YDQuNC60LDQttCw0L3QuCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQuNGC0LUg0LLQviDQv9GA0LXQs9C70LXQtNC+0YIg0YHQviDQvtC/0YbQuNC40YLQtSAg0L3QsCDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YDQsNGB0L/QvtGA0LXQtCDRgdC+0YHRgtC+0ZjQsdC40YLQtSDQstC+INC/0YDQtdCz0LvQtdC00L7RgiDRgdC+INC+0L/RhtC40LjRgtC1ICDQvdCwINCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQv9GA0LXQsdCw0YDRg9Cy0LDRmtC1INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQv9GA0LXQsdCw0YDRg9Cy0LDRmtC1INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQv9GA0LXQsdCw0YDRg9Cy0LDRmtC1INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQt9Cz0L7Qu9C10LzRg9Cy0LDRh9C60Lgg0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCDQtNC+0LTQsNCy0LDRmtC1INC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCBJVFNNICDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INC10LrRgNCw0L0g0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CR0LDRgNCw0L3QuCDQv9GA0LXQvNC40YHQuNC4INC30LAg0YPQv9C+0YLRgNC10LHQsCDQvdCwINGD0YDQtdC00LggSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQkdCw0YDQsNC90Lgg0L/RgNC10LzQuNGB0LjQuCDQt9CwINGD0L/QvtGC0YDQtdCx0LAg0L3QsCDQuNGB0YLQvtGA0LjRmNCwINC90LAgSVRTTSAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQtdC60YDQsNC9INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JHQsNGA0LDQvdC4INC/0YDQtdC80LjRgdC40Lgg0LfQsCDRg9C/0L7RgtGA0LXQsdCwINC90LAg0L/RgNC40L3RgiDQvdCwIElUU00gINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LXQutGA0LDQvSDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KHQtdGC0LjRgNCwINGA0LDRgdC/0L7RgNC10LQg0YHQvtGB0YLQvtGY0LHQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0gYnVsayDQtdC60YDQsNC90L7RgiDQvtC0INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KHQtdGC0LjRgNCwINC40L3RhtC40LTQtdC90YIg0YHQvtGB0YLQvtGY0LHQsCDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0gYnVsayDQtdC60YDQsNC90L7RgiDQvtC0INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LrQvtC1INC+0LLQvtC30LzQvtC20YPQstCwINC/0L7QstGA0LfRg9Cy0LDRmtC1INGB0L4g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDRgdC+INC00YDRg9CzINC+0LHRmNC10LrRgiDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvSAg0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LrQvtC1INC/0YDQuNGB0YLQsNC/0YPQstCwINCy0L4g0LjRgdGC0L7RgNC40ZjQsNGC0LAg0L3QsCAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC60L7QtSDQvtCy0L7Qt9C80L7QttGD0LLQsCDQv9GA0LjRgdGC0LDQvyDQtNC+INC40YHRgtC+0YDQuNGY0LDRgtCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvSAg0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0LfQsCDRg9GA0LXQtNGD0LLQsNGa0LUg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDRgdC+INC00YPQv9C70LjQutCw0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGB0LrQuCDRh9C70LXQvSDQstC+INC60L7QvdGE0LjQsyDRh9C70LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INGB0L4g0LTRg9C/0LvQuNC60LDRgiDQutC+0L3RhNC40LPRg9GA0LDRhtC40YHQutC4INGH0LvQtdC9INCy0L4g0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQttGD0LLQsCDQu9C40L3QuiDQstC+INC80LXQvdC40YLQviDQt9CwINGD0YDQtdC00YPQstCw0ZrQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviDQt9Cz0L7Qu9C10LzQtdC9INC/0YDQtdCz0LvQtdC0INCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINCy0L4g0LzQtdC90LjRgtC+INC70LjQvdC60L7RgiDQt9CwINCy0YDQsNGc0LDRmtC1INCy0L4g0LTQtdGC0LDQu9C10L0g0L/QvtCz0LvQtdC0INCy0L4g0LjQvdGC0LXRgNGE0LXRmNGB0L7RgiDQvdCwINCw0LPQtdC90YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/RgNC40LrQsNC20YPQstCwINC70LjQvdC6INCy0L4g0LzQtdC90LjRgtC+INC30LAg0L/QtdGH0LDRgtC10ZrQtSDQstC+INC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LfQs9C+0LvQtdC80LXQvSDQv9GA0LXQs9C70LXQtCDQstC+INCw0LPQtdC90YIg0LjQvdGC0LXRgNGE0LXRmNGB0L7Rgi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAg0LvQuNC90Log0LLQviDQvNC10L3QuNGC0L4g0YHQviDQt9Cz0L7Qu9C10LzRg9Cy0LDRmtC1INC90LAg0LrQvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0LLQviAg0LrQvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0g0L/RgNC10LPQu9C10LQg0LLQviDQsNCz0LXQvdGCINC40L3RgtC10YDRhNC10ZjRgdC+0YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9GA0LjQutCw0LbRg9Cy0LAgINC60L7QvdGE0LjQsyDRh9C70LXQvSDQuNGB0YLQvtGA0LjRmNCwICjQstC+INC+0LHRgNCw0YLQtdC9INGA0LXQtNC+0YHQu9C10LQpINCy0L4g0LDQs9C10L3RgiDQuNC90YLQtdGA0YTQtdGY0YHQvtGCLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ9CY0LTQvdC10YLQuNGE0LjQutGD0LLQsNGH0L7RgiDQt9CwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRgdC60Lgg0YfQu9C10L0sINC/LtGALiAgQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuINCh0YLQsNC90LTQsNGA0LTQvtGCINC1IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+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+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfQotCw0YHRgtCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ9Cb0LDQv9GC0L7Qvyc7CiAgICAkU2VsZi0+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+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn0JzQvtC00LXQuyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAn0JPQu9GD0YjQtdGGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPTEVEIE1vbml0b3IgKE9yZ2FuaWMgTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfQlNGA0YPQs9C+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfQmNC30LvQtdC3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4gMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGh5c2ljYWwgQ29yZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBEZXB0aCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn0KHQvtCx0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0L7RgCDQt9CwINCd0LjQstC+INC90LAg0KPRgdC70YPQs9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFuZGFyZCBTSU0nfSA9ICfQodGC0LDQvdC00LDRgNC00L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydSdW4gU2VhcmNoJ30gPSAnSmFsYW5rYW4gQ2FyaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0p1Z2EgbWVuY2FyaSBkYWxhbSB2ZXJzaSBzZWJlbHVtbnlhPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdQZXJrYXJhIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ01ha2x1bWF0IEJhcmFuZ2FuIEtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ1BlcnR1a2FyYW4ga2VhZGFhbiBzZW1hc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0luc2lkZW4ga2VhZGFhbiBzZW1hc2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnVGVya2luaSBiZXJ1YmFoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ1RlcmFraGlyIGRpdWJhaCBvbGVoJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnQWRha2FoIGFuZGEgaW5naW4gbWVuZXJ1c2thbj8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdUaWFkYSBJdGVtSUQgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ1RpZGFrIG1hbXB1IHVudHVrIG1lbWJ1YW5nIGJhaGFzYSAlcyBpdHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdUaWFkYSAlcyBkaWJlcmlrYW4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ1RpZGFrIGJvbGVoIG1lbnVuanVra2FuIHNlamFyYWgsIHNlYmFnYWkgdGlhZGEgSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ1RpZGFrIGJvbGVoIG1lbnVuanVra2FuIHNlamFyYWgsIHNlYmFnYWkgdGlhZGEgSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ1RpZGFrIGJvbGVoIG1lbnVuanVra2FuIHNlamFyYWgsIHNlYmFnYWkgdGlhZGEgSXRlbUlEIHlhbmcgZGliZXJpa2FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSdWp1a2FuKGVuKSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ1RpYWRhICVzIGRpYmVyaWthbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ1RpYWRhIEtlcHV0dXNhbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdIYXNpbCBjYXJpYW4gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdBbWFyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbnNpZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdLZWFkYWFuIHBlbmVtcGF0YW4gaXRlbSBpbmkgY29uZmlnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnS2VhZGFhbiBpbnNpZGVuIGJhZ2kgY29uZmlnIGl0ZW0gaW5pJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnVGlhZGEga2ViZW5hcmFuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdKZW5pcyBQZXJ0dWthcmFuIEtlYWRhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnTnlhdGFrYW4gSmVuaXMgSW5zaWRlbiBTZW1hc2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnQmV0d2Vlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIChDb25maWdJdGVtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ0JpbGFuZ2FuIG1ha3NpbXVtIHNhdHUgZWxlbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1RhbWF0IFRlbXBvaCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ3BlbnllbGVuZ2dhcmFhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdEaXJhbmNhbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnTWVtYmFpa2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ2JlcnNhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnbWVuZ2thamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1VqaWFuL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU2VtYWsgbmFtYSB5YW5nIHVuaWsgc2FoYWphIGRpIGRhbGFtIGtlbGFzIENvbmZpZ0l0ZW0geWFuZyBzYW1hIChcJ2tlbGFzXCcpIGF0YXUgZGkgcGVyaW5na2F0IGdsb2JhbCAoXCdnbG9iYWxcJyksIHlhbmcgYmVybWFrc3VkIHNldGlhcCBDb25maWdJdGVtIHNlZGlhIGFkYSBkaWFtYmlsIGtpcmEga2V0aWthIG1lbmNhcmkgcGVuZHVhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0JhcmFuZ2FuIEtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdUYW1iYWggaXRlbSBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdCBpdGVtIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCBhY2FyYSBiYXJhbmdhbiBrb25maWd1cmFzaSB5YW5nIG1lbWJlbmFya2FuIHVudHVrIGxvZyBrZSBzZWphcmFoIGRhbGFtIGFudGFyYSBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ1NlamFyYWggaXRlbSBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0NldGFrIGl0ZW0gY29uZmlnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ1p1bSBpdGVtIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnSGFkIEJhcmFuZ2FuIEtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0tvbmZpZ3VyYXNpIFBlbmd1cnVzYW4gUGFuZ2thbGFuIERhdGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdLb25maWd1cmFzaSBpdGVtIG1vZHVsIHB1a2FsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcgUm91dGVyIGNhcmlhbiBiZWxha2FuZyBiYXJhbmdhbiBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdDaXB0YSBkYW4gdXJ1cyB0YWtyaWZhbiB1bnR1ayBCYXJhbmdhbiBLb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ0RhdGEgYXNhbCBkaWd1bmFrYW4gdW50dWsgc2lmYXQgYmFnaSBza3JpbiBjYXJpYW4gdGlrZXQuIENvbnRvaDogVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0PXRhaHVuO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PVRlcmFraGlyO1RpY2tldENyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0YSBhc2FsIGRpZ3VuYWthbiB1bnR1ayBzaWZhdCBiYWdpIHNrcmluIGNhcmlhbiB0aWtldC4gQ29udG9oOiBUaWNrZXRDcmF0ZVRpbWVTdGFydFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnRNb250aD0xMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXk9NDtUaWNrZXRDcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RvcE1vbnRoPTExO1RpY2tldENyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBUaW5kYWthbiBkaW1hbmEgYnV0YW5nIHRldGFwYW4gaXR1IGFkYSBkYWxhbSB3aWRnZXQgb2JqZWsgYmVyc2FtYnVuZyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBTaWxhIHBhc3Rpa2FuIHlhbmcgVGluZGFrYW4gaW5pIHBlcmx1IGRpZGFmdGFya2FuIHlhbmcgYmVyaWt1dCBmYWlsLWZhaWwgSlMgZGFuIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdUYWtyaWZrYW4ga2VpemluYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbWJ1YW5nIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBtZW5nZ3VuYWthbiBBbnRhcmFtdWthIFVtdW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ga2ViZW5hcmFuIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5kYXBhdGthbiBiYXJhbmdhbiBrb25maWd1cmFzaSBJVFNNIG1lbmdndW5ha2FuIEFudGFyYSBNdWthIEdlbmVyaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4ga2ViZW5hcmFuIHlhbmcgZGlwZXJsdWthbiB1bnR1ayBtZW5jYXJpIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJhIE11a2EgR2VuZXJpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBrZWJlbmFyYW4geWFuZyBkaXBlcmx1a2FuIHVudHVrIG1lbmRhcGF0a2FuIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIElUU00gbWVuZ2d1bmFrYW4gQW50YXJhIE11a2EgR2VuZXJpay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIG1vZHVsIGdhbWJhcmFuIHVudHVrIG1lbnVuanVra2FuIHBhbmRhbmdhbiB5YW5nIGtlY2lsIHNlbmFyYWkgaXRlbSBrb25maWd1cmFzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gdW5na2FwYW4gYmlhc2Egc2VjYXJhIGluZGl2aWR1IHVudHVrIHNldGlhcCBrZWxhcyBJdGVtS29uZmlnIHVudHVrIG1lbWVyaWtzYSBuYW1hIEl0ZW1Lb25maWcgZGFuIHVudHVrIG1lbnVuanVra2FuIG1lc2VqIHJhbGF0IHNlcGFkYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgdGlrZXQgYXNhbCB1bnR1ayBhdHVyYW4gdGlrZXQgZGFsYW0gaGFzaWwgcGVuY2FyaWFuIHRpa2V0IGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHNpZmF0IHRpa2V0IGFzYWwgdW50dWsgYXR1cmFuIHRpa2V0IGRhbGFtIGhhc2lsIHBlbmNhcmlhbiB0aWtldCBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgdGlrZXQgZGVmYXVsdCB1bnR1ayBwZW5na2VsYXNhbiB0aWtldCBkYWxhbSBoYXNpbCBjYXJpYW4gdGlrZXQgb3BlcmFzaSBpbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gdHVydXRhbiB0aWtldCBhc2FsIGRhbGFtIGhhc2lsIGNhcmlhbiB0aWtldCBkYXJpIHBhcGFyYW4gZWplbi4gQXRhczogeWFuZyBsYW1hIGRpIGF0YXMuIEJhd2FoOiB5YW5nIHRlcmJhcnUgZGkgYXRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiB0dXJ1dGFuIHRpa2V0IGFzYWwgZGFsYW0gaGFzaWwgY2FyaWFuIGRhcmkgcGFwYXJhbiBwZWxhbmdnYW4uIEF0YXM6IHlhbmcgbGFtYSBkaSBhdGFzLiBCYXdhaDogeWFuZyB0ZXJiYXJ1IGRpIGF0YXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBhcmFoYW4gdGlrZXQgZGVmYXVsdCB1bnR1ayBwZW5na2VsYXNhbiB0aWtldCBkYWxhbSBoYXNpbCBjYXJpYW4gdGlrZXQgb3BlcmFzaSBpbmkuIEF0YXM6IFRlcnR1YSBkaSBhdGFzLiBCYXdhaDogVGVyYmFydSBkaSBhdGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gc2lmYXQgcGVuY2FyaWFuIHRpa2V0IHlhbmcgZGl0dW5qdWsgeWFuZyBhc2FsIHVudHVrIHNrcmluIGNhcmlhbiB0aWtldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBkZWZhdWx0IHlhbmcgZGl0dW5qdWtrYW4gdGlrZXQgc2lmYXQgcGVuY2FyaWFuIHNrcmluIGNhcmlhbiB0aWtldC4gQ29udG9oOiAiVXRhbWEiIG1lc3RpIG1lbXB1bnlhaSBuYW1hIG1lZGFuIGRpbmFtaWsgZGFsYW0ga2VzIGluaSBcJ1hcJywgIkthbmR1bmdhbiIgbWVzdGkgbWVtcHVueWFpIG5pbGFpIG1lZGFuIGRpbmFtaWsgYmVyZ2FudHVuZyBrZXBhZGEgamVuaXMgTWVkYW4gRGluYW1paywgVGVrczogXCd0ZWtzXCcsIGphdHVoIHR1cnVuOiBcJzFcJywgVGFyaWtoL01hc2E6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXIgPSAxOTc0OwpTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmllcnQgZGFzIFN0YW5kYXJkLVN1Ym9iamVjdCBkZXIgS2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIHRpbmdnaSB1bnR1ayBrb21wb25lbiBlZGl0b3IgdGVrcyBrYXlhIHVudHVrIHNrcmluIGluaS4gTWFzdWtrYW4gbm9tYm9yIChwaWtzZWwpIGF0YXUgbmlsYWkgcGVyYXR1cyAocmVsYXRpZikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4gYmlsYW5nYW4gYmFyaXMgdW50dWsgZWRpdG9yIGRlZmluaXNpIENJIGRhbGFtIGFudGFyYSBtdWthIGFkbWluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdUYWtyaWZrYW4gc3VzdW5hbiBrZWFkYWFuIGluc2lkZW4gZGFyaXBhZGEgdGluZ2dpIChjdGguIGtyaXRpa2FsKSBrZSByZW5kYWggKGN0aC4gZnVuZ3NpYW4pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBrZWFkYWFuIHBlbmVtcGF0YW4geWFuZyByZWxldmVuIGRpbWFuYSB0aWtldCBiZXJzYW1idW5nIGJvbGVoIG1lbmplamFza2FuIHN0YXR1cyBiYWdpIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBoYWQgY2FyaWFuIHVudHVrIHNrcmluIEl0ZW1Lb25maWdJVFNNQWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gaGFkIGNhcmlhbiB1bnR1ayBza3JpbiBDYXJpYW5JdGVtS29uZmlnSVRTTUFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGhhZCBjYXJpYW4gdW50dWsgc2tyaW4gSXRlbUtvbmZpZ0lUU01BZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ01lbnRha3JpZmthbiBoYWQgY2FyaWFuIHVudHVrIHNrcmluIENhcmlhbkl0ZW1Lb25maWdJVFNNQWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gcnVhbmdhbiBkaXR1bmp1a2thbiBDSXMgZGFsYW0gcGFuZGFuZ2FuIHBhdXRhbiBqYWR1YWwga29tcGxla3MsIGJlcmdhbnR1bmcga2VwYWRhIGtlbGFzIENJIC4gU2V0aWFwIHBlbnllcnRhYW4gaGVuZGFrbGFoIGRpbXVsYWthbiBkZW5nYW4gbmFtYSBrZWxhcyBkYW4gdGl0aWsgYmVydGluZGloIGR1YSAoaWFpdHUgS29tcHV0ZXI6OikuIFRlcmRhcGF0IGJlYmVyYXBhIFNpZmF0LXNpZmF0LUNJIHlhbmcgc2FtYSBrZXBhZGEgc2VtdWEgQ0lzIChjb250b2ggdW50dWsga2VsYXMgS29tcHV0ZXI6S29tcHV0ZXI6Ok5hbWEsIEtvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIEtvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVW50dWsgbWVudW5qdWtrYW4gc2lmYXQgaW5kaXZpZHUgQ0kgc2ViYWdhaW1hbmEgeWFuZyBkaXRha3JpZmthbiBkYWxhbSBEZWZpbmlzaS1DSSwgc2tpbSBiZXJpa3V0IG1lc3RpIGRpZ3VuYWthbiAoY29udG9oIHVudHVrIGtlbGFzIEtvbXB1dGVyKTogS29tcHV0ZXI6OmhhcmRkaXNrOjoxLCBLb21wdXRlcjo6aGFyZGRpc2s6OjE6OkthcGFzaXRpOjoxLCBrb21wdXRlcjo6aGFyZGRpc2s6OjIsIEtvbXB1dGVyOjpoYXJkZGlzazo6Mjo6S2FwYXNpdGk6OjEuIEppa2EgdGlhZGEgcGVueWVydGFhbiB1bnR1ayBrZWxhcyBDSSwgbWFrYSBydWFuZ2FuIGRlZmF1bHQgZGlwYXBhcmthbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZW50YWtyaWYgYmFyYW5nYW4gbWFuYSBib2xlaCBkaWRhcGF0aSB1bnR1ayBcJ1RpbmRha2FuXCcgZGkgcGVyaW5na2F0IGtldGlnYSBzdHJ1a3R1ciBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnTWVudGFrcmlma2FuIGJhcmFuZ2FuIG1hbmEgeWFuZyB0ZXJkYXBhdCBwYWRhIHRhaGFwIHBlcnRhbWEgc3RydWt0dXIgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdNZW50YWtyaWZrYW4gYmFyYW5nYW4gbWFuYSB5YW5nIHRlcmRhcGF0IHBhZGEgdGFoYXAga2VkdWEgc3RydWt0dXIgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdUYWtyaWZrYW4gamVuaXMgc2FtYnVuZ2FuIHlhbmcgbWFuYSAoZGluYW1ha2FuIGRhcmlwYWRhIHBlcnNwZWt0aWYgdGlrZXQpIGJvbGVoIG1lbmplamFza2FuIHN0YXR1cyBiYWdpIHNhdHUgc2FtYnVuZ2FuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1Rha3JpZmthbiBqZW5pcyB0aWtldCB5YW5nIG1hbmEgYm9sZWggbWVuamVqYXNrYW4gc3RhdHVzIGJhZ2kgc2F0dSBzYW1idW5nYW4gQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdQZXJrYXJhIGtvbmZpZ3VyYXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnUGVuZW1wYXRhbiBLZWFkYWFuIFdhcm5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdLZWFkYWFuIFBlcnR1a2FyYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnR2FuZGFrYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGJpZGFuZyB0YWp1ayBkYWxhbSBza3JpbiBiaWRhbmcgSVRTTSB0YW1iYWhhbiBiYWdpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGJpZGFuZyB0YWp1ayBkYWxhbSBza3JpbiBiaWRhbmcgSVRTTSB0YW1iYWhhbiBiYWdpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIGJpZGFuZyB0YWp1ayBkYWxhbSBza3JpbiBiaWRhbmcgSVRTTSB0YW1iYWhhbiBiYWdpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ01lbWJvbGVoa2FuIGNpcmkgdGluZGFrYW4gcHVrYWwgaXRlbSBrb25maWd1cmFzaSB1bnR1ayBmcm9udGVuZCBlamVuIHVudHVrIGJla2VyamEgcGFkYSBsZWJpaCBkYXJpcGFkYSBzYXR1IGl0ZW0ga29uZmlndXJhc2kgcGFkYSBzYXR1IG1hc2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdNZW1ib2xlaGthbiBjaXJpIGl0ZW0ga29uZmlndXJhc2kgdGluZGFrYW4gcHVrYWwgaGFueWEgdW50dWsga3VtcHVsYW4geWFuZyBkaXNlbmFyYWlrYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2RlbCBhY2FyYSB1bnR1ayBtZW55ZWRpYWthbiBzdGF0dXMtaXRlbWNvbmZpZyBhdGFzIHNhbWJ1bmdhbi1pdGVtY29uZmlnLXRpa2V0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdQZW5kYWZ0YXJhbiBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVuY2V0dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUGVuZGFmdGFyYW4gbW9kdWwgR2VuZXJpY0ludGVyZmFjZSB1bnR1ayBsYXBpc2FuIHBlbmNldHVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdQZW5kYWZ0YXJhbiBtb2R1bCBHZW5lcmljSW50ZXJmYWNlIHVudHVrIGxhcGlzYW4gcGVuY2V0dXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdwYW5kYW5nYW4gaXRlbSBjb25maWcgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnaW5zaWRlbiBrZWFkYWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdpbnNpZGVuIGtlYWRhYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnSnVtbGFoIHRpa2V0IG1ha3NpbXVtIHVudHVrIGRpcGFtZXJrYW4gZGkga2VwdXR1c2FuIG9wZXJhc2kgaW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIHVudHVrIG1lbnllbWFrIGt1bXB1bGFuIGJlcnRhbmdndW5namF3YWIgdW50dWsga2VsYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgdW50dWsgbWVueWVtYWsga3VtcHVsYW4gYmVydGFuZ2d1bmdqYXdhYiB1bnR1ayBpdGVtIGtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIHVudHVrIG1lbmphbmEgc3RhdGlzdGlrIGtvbmZpZyBpdGVtIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIHRpa2V0IHlhbmcgYWthbiBkaXBhbWVya2FuIGRhbGFtIHNldGlhcCBoYWxhbWFuIGRhcmkgaGFzaWwgY2FyaWFuIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSnVtbGFoIHRpa2V0IHlhbmcgYWthbiBkaXBhbWVya2FuIGRhbGFtIHNldGlhcCBoYWxhbWFuIGRhcmkgaGFzaWwgY2FyaWFuIGRhbGFtIHBhcGFyYW4gcGVsYW5nZ2FuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUGFuZGFuZ2FuIGtlc2VsdXJ1aGFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayB3YXJuYSBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGNvbnRvaCBrdW1wdWxhbiB5YW5nIGRpYmVuYXJrYW4gcGFkYSBjaXJpLWNpcmkga2F0YWxvZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXIgdW50dWsga2VhZGFhbiBtZW5nYXR1ciBrZWR1ZHVrYW4gZGFsYW0gcGFwYXJhbiBwaWxpaGFuIGRhcmkgcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIG11a2Egc3VyYXQgKGRpIG1hbmEgaXRlbSBrb25maWd1cmFzaSBkaXR1bmp1a2thbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlciB1bnR1ayBrZWFkYWFuIG1lbmdhdHVyIGtlZHVkdWthbiBkYWxhbSBwYXBhcmFuIHBpbGloYW4gZGFyaSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyIHVudHVrIGtlYWRhYW4gbWVuZ2F0dXIga2VkdWR1a2FuIGRhbGFtIHBhcGFyYW4gcGlsaWhhbiBkYXJpIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdNZWxha3VrYW4gdGluZGFrYW4geWFuZyB0ZWxhaCBkaWtvbmZpZ3VyYXNpIHVudHVrIHNldGlhcCBhY2FyYSAoc2ViYWdhaSBwZW5jZXR1cykgdW50dWsgc2V0aWFwIFdlYnNlcnZpY2UgeWFuZyB0ZWxhaCBkaWtvbmZpZ3VyYXNpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVtZXJsdWthbiBrZWJlbmFyYW4gdW50dWsgbWVuZ2d1bmFrYW4gc2tyaW4gY2FyaWFuIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGNhcmlhbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIHp1bSBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIHRhbWJhaCBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBpdGVtIGtvbmZpZ3VyYXNpIElUU00gZGFsYW0gcGFwYXJhbiBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW1lcmx1a2FuIGtlYmVuYXJhbiB1bnR1ayBtZW5nZ3VuYWthbiBza3JpbiBlZGl0IGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIHNlamFyYWggaXRlbSBrb25maWd1cmFzaSBJVFNNIGRhbGFtIHBhcGFyYW4gZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbWVybHVrYW4ga2ViZW5hcmFuIHVudHVrIG1lbmdndW5ha2FuIHNrcmluIGNldGFrIGl0ZW0ga29uZmlndXJhc2kgSVRTTSBkYWxhbSBwYXBhcmFuIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdLZWlzdGltZXdhYW4ta2Vpc3RpbWV3YWFuIGRpa2VoZW5kYWtpIHVudHVrIG1lbWFkYW1rYW4gYmFyYW5nLWJhcmFuZyBjb25maWcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnQ2FyaSBiYXJhbmctYmFyYW5nIGNvbmZpZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ01lbmVudHVrYW4ga2VhZGFhbiBpbnNpZGVuIGJhZ2kgQ0kgc2VjYXJhIGF1dG9tYXRpayBhcGFiaWxhIHN1YXR1IFRpa2V0IGRpc2FtYnVuZ2thbiBrZXBhZGEgc3VhdHUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnU2V0IGtlYWRhYW4gcGVuZW1wYXRhbiBkYWxhbSBza3JpbiBwdWthbCBpdGVtIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1NldCBrZWFkYWFuIGluc2lkZW4gZGFsYW0gc2tyaW4gcHVrYWwgaXRlbSBrb25maWd1cmFzaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHlhbmcgbWVtYm9sZWhrYW4gbWVuZ2h1YnVuZ2thbiBpdGVtIGtvbmZpZ3VyYXNpIGRlbmdhbiBvYmplayBsYWluIGRhbGFtIHBhbmRhbmdhbiB6dW0gaXRlbSBrb25maWcgYmFnaSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1R1bmp1ayBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayBtZW5nYWtzZXMgc2VqYXJhaCBpdGVtIGtvbmZpZ3VyYXNpIGRpIGRhbGFtIGdhbWJhcmFuIGtlc2VsdXJ1aGFuIGl0ZW0ga29uZmlndXJhc2kgYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVuZ2Frc2VzIHNlamFyYWggaXRlbSBrb25maWd1cmFzaSBkYWxhbSBwYW5kYW5nYW4genVtIGFudGFyYSBtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gc2F0dSBzYW1idW5nYW4ga2VwYWRhIG1lbnUgdW50dWsgbWVtYWRhbSBzYXR1IGJhcmFuZyBrb25maWd1cmFzaSAgZGFsYW0gcGFuZGFuZ2FuIHp1bW55YSBkYXJpcGFkYSBhbnRhcmFtdWthIGVqZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUdW5qdWsgcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVueWFsaW4gaXRlbSBrb25maWd1cmFzaSBkaSBkYWxhbSBnYW1iYXJhbiBrZXNlbHVydWhhbiBpdGVtIGtvbmZpZ3VyYXNpIGFudGFyYSBtdWthIGFnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIG1lbnlhbGluIGJhcmFuZ2FuIGtvbmZpZ3VyYXNpIGRhbGFtIHBhbmRhbmdhbiB6dW0gYW50YXJhIG11a2EgZWplbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01lbnVuanVra2FuIHBhdXRhbiBkYWxhbSBtZW51IHVudHVrIGVkaXQgYmFyYW5nYW4ga29uZmlndXJhc2kgZGFsYW0gcGFuZGFuZ2FuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnbWVudW5qdWtrYW4gc3VhdHUgc2FtYnVuZ2FuIHBhZGEgbWVudSB1bnR1ayBrZW1iYWxpIGRhbGFtIHpvb20gaXRlbSBrb25maWd1cmFzaSBkYXJpcGFkYSBhbnRhcmEgbXVrYSBhZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTWVudW5qdWtrYW4gcGF1dGFuIGRhbGFtIG1lbnUgdW50dWsgbWVuY2V0YWsgYmFyYW5nYW4ga29uZmlndXJhc2kgZGFsYW0gcGFuZGFuZ2FuIHp1bSBhbnRhcmEgbXVrYSBlamVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1R1bmp1ayBwYXV0YW4gZGFsYW0gbWVudSB1bnR1ayB6dW0ga2UgZGFsYW0gYmFyYW5nYW4ga29uZmlndXJhc2kgZGkgZGFsYW0gZ2FtYmFyYW4ga2VzZWx1cnVoYW4gYmFyYW5nYW4ga29uZmlndXJhc2kgYW50YXJhIG11a2EgYWdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1R1bmp1ayBzZWphcmFoIGJhcmFuZ2FuIGtvbmZpZyAodXJ1dGFuIHRlcmJhbGlrKSBkYWxhbSBhbnRhcmEgbXVrYSBhZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ1BlbmdlY2FtIHVudHVrIGl0ZW0ga29uZmlndXJhc2ksIGNvbnRvaDogQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIERlZmF1bHQgaWFsYWggQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+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+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnSnVydXRla25payc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAndGV0aWt1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnbGFpbi1sYWluJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdPdXRwdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdCaWxpayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ1RhaGFwIFBlcnNldHVqdWFuIFBlcmtoaWRtYXRhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnUGlhd2FpYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1ZlbGcgZGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdVdGbDuHIgc8O4a2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ09nc8OlIHPDuGtlIGkgdGlkbGlnZXJlIHZlcnNqb25lcj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0R5YmRlbml2w6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tIGlubi91dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICdNYWtzIGxlbmtlbml2w6UgbsOlZGQgZm9yIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdPcHBseXNuaW5nZXIgb20ga29uZmlndXJhc2pvbnNlbmhldGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ07DpXbDpnJlbmRlIHByb2R1a3Nqb25zc2V0dGluZ3N0aWxzdGFuZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnTsOldsOmcmVuZGUgaGVuZGVsc2VzdGlsc3RhbmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnU2lzdCBlbmRyZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnU2lzdCBlbmRyZXQgYXYnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdEaW5lIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0NvbmZpZ0l0ZW0tc8O4ayc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0bDuGxnZW5kZSBrbGFzc2VyIHZpbCBibGkgaW1wb3J0ZXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0bDuGxnZW5kZSByb2xsZXIgdmlsIGJsaSBpbXBvcnRlcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnVsOmciBvcHBtZXJrc29tIHDDpSBhdCBvZ3PDpSB0aWxzdmFyZW5kZSBkeW5hbWlza2UgZmVsdCBvZyBHZW5lcmFsQ2F0YWxvZy1rbGFzc2VyIGJsaXIgb3BwcmV0dGV0LCBvZyBhdCBkZSBpa2tlIGZqZXJuZXMgYXV0b21hdGlzay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICfDmG5za2VyIGR1IMOlIGZvcnRzZXR0ZT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAnVHJlbmdlciBla3NlbXBlbGtsYXNzZXIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaXNqb25lbiBlciBpbmdlbiBneWxkaWcgWUFNTC1oYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ092ZXJzaWt0OiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZW4gQ29uZmlnSXRlbUlEIGVyIG9wcGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnRHUgdHJlbmdlciBtaW5zdCBldHQgdmFsZ3Qga29uZmlndXJhc2pvbnNlbGVtZW50ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0R1IGhhciBpa2tlIHNrcml2ZXRpbGdhbmcgdGlsIGRldHRlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0OiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnSW5nZW4gZGVmaW5pc2pvbiBibGUgZGVmaW5lcnQgZm9yIGtsYXNzZW4gJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdLb25maWd1cmVyaW5nc2VsZW1lbnRldCAiJXMiIGJsZSBpa2tlIGZ1bm5ldCBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdLdW5uZSBpa2tlIHNsZXR0ZSBrb25maWd1cmFzam9uc2VsZW1lbnQtSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdJbmdlbiB2ZXJzam9uIGZ1bm5ldCBmb3IgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdJbmdlbiBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGVsbGVyIENsYXNzSUQgZXIgb3BwZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0luZ2VuIHRpbGdhbmcgZXIgZ2l0dCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnS2FuIGlra2UgdmlzZSBoaXN0b3Jpa2ssIGluZ2VuIENvbmZpZ0l0ZW1JRCBlciBvcHBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0thbiBpa2tlIHZpc2UgaGlzdG9yaWtrLCBpbmdlbiB0aWxnYW5nc3JldHRpZ2hldGVyIGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOeXR0IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTnkgdmVyc2pvbiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnT3BwZGF0ZXJpbmcgYXYgZGlzdHJpYnVzam9uc3N0YXR1cyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ0hlbmRlbHNlc3N0YXR1cyBvcHBkYXRlcnQgKG55PSVzLCBnYW1tZWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdMZW5rZSB0aWwgJXMgKHR5cGU9JXMpIGxhZ3QgdGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdLb2JsaW5nIHRpbCAlcyAodHlwZT0lcykgc2xldHRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnQ29uZmlnSXRlbS1kZWZpbmlzam9uIG9wcGRhdGVydCAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTmF2biBvcHBkYXRlcnQgKG55PSVzLCBnYW1tZWw9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXR0ICVzIG9wcGRhdGVydCBmcmEgIiVzIiB0aWwgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzam9uICVzIHNsZXR0ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZW4gQ29uZmlnSXRlbUlEIGVsbGVyIFZlcnNpb25JRCBlciBvcHBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdLYW4gaWtrZSB2aXNlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0LCBpbmdlbiB0aWxnYW5nc3JldHRpZ2hldGVyIGdpdHQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIGJsZSBpa2tlIGZ1bm5ldCBpIGRhdGFiYXNlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0tvbmZpZ3VyYXNqb25zZW5oZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ3NrcmV2ZXQgdXQgYXYgJXMgcMOlICVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICdSZWZlcmFuc2UnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdVZ3lsZGlnIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnSW5nZW4gQ2xhc3NJRCBlciBvcHBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ0luZ2VuIHRpbGdhbmdzcmV0dGlnaGV0ZXIgZm9yIGRlbm5lIGtsYXNzZW4gZ2l0dCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ0luZ2VuIHJlc3VsdGF0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdTw7hrZXJlc3VsdGF0ZXIgZm9yIGtvbmZpZ3VyZXJpbmdzZWxlbWVudGVyJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdLYW4gaWtrZSB2aXNlIGVsZW1lbnRldCwgaW5nZW4gdGlsZ2FuZ3NyZXR0aWdoZXRlciBmb3IgQ29uZmlnSXRlbSBlciBnaXR0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIGJsZSBpa2tlIGZ1bm5ldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnSW5nZW4gdmVyc2pvbmVyIGZ1bm5ldCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnYWR2YXJzZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdoZW5kZWxzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnUHJvZHVrc2pvbnNzZXR0aW5nc3RpbHN0YW5kIGZvciBkZW5uZSBrb25maWd1cmFzam9uc2VuaGV0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdIZW5kZWxzZXN0aWxzdGFuZGVuIGZvciBkZW5uZSBrb25maWd1cmFzam9uc2VuaGV0ZW4nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdJbmdlbiB0aWxsYXRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRlciB1Z3lsZGlnISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU8O4a2VwYXJhbWV0ZXJlIHVneWxkaWdlISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1Zpc3RlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cGUgcHJvZHVrc2pvbnNzZXR0aW5nc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ07DpXbDpnJlbmRlIHR5cGUgaGVuZGVsc2VzdGlsc3RhbmQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWVsbG9tJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZWdyZW5zbmluZ2VyIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRldCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVmVsZyDDqW4gZWxsZXIgZmxlcmUga2xhc3NlciBmb3Igw6UgYmVncmVuc2UgdmFsZ2JhcmUga29uZmlndXJhc2pvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZWJlZ3JlbnNuaW5nZXIgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVmVsZyDDqW4gZWxsZXIgZmxlcmUga2xhc3NlciBmb3Igw6UgYmVncmVuc2UgdmFsZ2JhcmUga29uZmlndXJhc2pvbnNlbGVtZW50ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzayAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpc2sgKHZlcnNqb24pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cGUgbGVua2VoZW52aXNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ09tIGRlbm5lIGtvYmxpbmdlbiBnamVsZGVyIENvbmZpZ0l0ZW0gZWxsZXIgZGVuIHN0YXRpc2tlIHZlcnNqb25lbiBhdiByZWZlcmFuc2VvYmpla3RldC4gQmVyZWduaW5nIGF2IGdqZWxkZW5kZSBoZW5kZWxzZXNzdGF0dXMgdXRmw7hyZXMgYmFyZSBww6UgZHluYW1pc2tlIGtvYmxpbmdlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknfSA9ICdWZWxnIGF0dHJpYnV0dGV0IHNvbSBrb25maWd1cmFzam9uc2VsZW1lbnRlbmUgc2thbCBzw7hrZXMgZXR0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0Jhc2lzc3RydWt0dXJlbiBlciBpa2tlIGd5bGRpZy4gT3BwZ2kgZW4gaGFzaCBtZWQgZGF0YSBpIFlBTUwtZm9ybWF0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0RldCBlciBuw7hkdmVuZGlnIMOlIHN0YXJ0ZSBZQU1MLXN0cmVuZ2VuIG1lZCBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdLdW5uZSBpa2tlIHJlbnNlIHRhYmVsbGVuIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0luZ2VuIHJlbGV2YW50ZSBkeW5hbWlza2UgZmVsdCBibGUgZnVubmV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnS3VubmUgaWtrZSBzZXR0ZSBpbm4gaSB0YWJlbGxlbiBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ1NhdHRlIGlubiAwIHJhZGVyIGkgdGFiZWxsZW4gY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ01ha3MuIGFudGFsbCBhdiBldHQgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzam9uc3N0cmVuZyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdGZWlsIHZlZCBzeW5rcm9uaXNlcmluZyBhdiBkZWZpbmlzam9uZW5lLiBWZW5ubGlnc3Qgc2pla2sgbG9nZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ0R1IGhhciBJVFNNQ29uZmlnSXRlbS1kZWZpbmlzam9uZXIgc29tIGlra2UgZXIgc3lua3JvbmlzZXJ0LiBWZW5ubGlnc3QgZGlzdHJpYnVlciBlbmRyaW5nZW5lIGkgZGUgZHluYW1pc2tlIGZlbHRlbmUgaSBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1V0Z8OldHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdWZWRsaWtlaG9sZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFndCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmFzam9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdVdGZhc2V0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ0V2YWx1ZXJpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3QvS3ZhbGl0ZXRza29udHJvbGwnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ092ZXJzaWt0IG9nIGJla3JlZnRlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ0ltcG9ydGVyZSBrbGFzc2VyL3JvbGxlciBvZyB0aWxow7hyZW5kZSBmZWx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnRGV0IG9wcHN0b2QgZW4gZmVpbCB1bmRlciBrbGFzc2VpbXBvcnRlbi4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNranVsdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gVmlzdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnVGlsbGF0ZXIgdXR2aWRlZGUgc8O4a2ViZXRpbmdlbHNlciBpIGtvbmZpZ3VyYXNqb25zb2JqZWt0c8O4ayBpIGFnZW50Z3JlbnNlc25pdHRldC4gTWVkIGRlbm5lIGZ1bmtzam9uZW4ga2FuIGR1IGYuZWtzLiBzw7hrZSBldHRlciBuYXZuIHDDpSBrb25maWd1cmFzam9uc2VsZW1lbnRlciBtZWQgZGVubmUgdHlwZW4gYmV0aW5nZWxzZXIgc29tICIoKm7DuGtrZWwxKiYmKm7DuGtrZWwyKikiIGVsbGVyICIoKm7DuGtrZWwxKnx8Km7DuGtrZWwyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdUaWxsYXRlciB1dHZpZGVkZSBzw7hrZWJldGluZ2Vsc2VyIGkga29uZmlndXJlcmluZ3NlbGVtZW50LXPDuGsgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuIE1lZCBkZW5uZSBmdW5rc2pvbmVuIGthbiBkdSBmLmVrcy4gc8O4a2UgZXR0ZXIga29uZmlndXJhc2pvbnNlbGVtZW50bmF2biBtZWQgZGVubmUgdHlwZW4gYmV0aW5nZWxzZXIgc29tICIoKm7DuGtrZWwxKiYmKm7DuGtrZWwyKikiIGVsbGVyICIoKm7DuGtrZWwxKnx8Km7DuGtrZWwyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdUaWxkZWx0ZSBLSS1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0ktZXIgc29tIGVyIHRpbGRlbHQga3VuZGVzZWxza2FwZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSS1lciB0aWxvcmRuZXQga3VuZGVicnVrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREItaW5uc3RpbGxpbmdlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU2UgZXR0ZXIgZXQgdW5pa3QgbmF2biBiYXJlIGlubmVuZm9yIHNhbW1lIENvbmZpZ0l0ZW0ta2xhc3NlIChcJ2NsYXNzXCcpIGVsbGVyIGdsb2JhbHQgKFwnZ2xvYmFsXCcpLCBub2Ugc29tIGJldHlyIGF0IGFsbGUgZWtzaXN0ZXJlbmRlIENvbmZpZ0l0ZW1zIHRhcyBtZWQgaSBiZXRyYWt0bmluZ2VuIG7DpXIgbWFuIGxldGVyIGV0dGVyIGR1cGxpa2F0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdWZWxnIGVuIG1vZHVsIGZvciDDpSBow6VuZGhldmUgZXQgbmF2bmVza2plbWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdWZWxnIGVuIG1vZHVsIGZvciDDpSBow6VuZGhldmUgZXQgdGFsbHNramVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnVmVsZyBlbiBtb2R1bCBmb3Igw6UgaMOlbmRoZXZlIGV0IHZlcnNqb25zc3RyZW5nc2tqZW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1ZlbGcgYXR0cmlidXR0ZXIgc29tIHNrYWwgdXRsw7hzZSBvcHByZXR0ZWxzZW4gYXYgZW4gbnkgdmVyc2pvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVmVsZyBrYXRlZ29yaWVyIHNvbSBza2FsIHRpbG9yZG5lcyBkZW5uZSBrb25maWd1cmFzam9uc2VsZW1lbnRrbGFzc2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0tvbG9ubmVrb25maWd1cmFzam9uc2VsZW1lbnRmaWx0cmUgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2xvbm5lciBzb20ga2FuIGZpbHRyZXJlcyBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4gTWVyazogQmFyZSBhdHRyaWJ1dHRlciBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgb2cgZHluYW1pc2tlIGZlbHQgKER5bmFtaWNGaWVsZF9OYW1lWCkgZXIgdGlsbGF0dC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnS29uZmlndXJhc2pvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdMZWdnIHRpbCBrb25maWd1cmVyaW5nc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnUmVkaWdlciBrb25maWd1cmVyaW5nc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJlciBoZW5kZWxzZXNtb2R1bCBmb3Iga29uZmlndXJlcmluZ3NlbGVtZW50ZXQgc29tIG11bGlnZ2rDuHIgbG9nZ2luZyB0aWwgaGlzdG9yaWtrIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdIZW5kZWxzZXNtb2R1bCBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgc29tIG9wcGRhdGVyZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIHRpbCBkZXJlcyBnamVsZGVuZGUgZGVmaW5pc2pvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdLb25maWd1cmVyIGVsZW1lbnRoaXN0b3Jpa2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0tvbmZpZ3VyZXIgZWxlbWVudHV0c2tyaWZ0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyZXIgZWxlbWVudHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnS29uZmlnSXRlbS10cmV2aXNuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBhdiBmw7hsZ2VuZGUga2xhc3NlciB2aWwgaWtrZSBibGkgbGFncmV0IHDDpSBFbGFzdGljc2VhcmNoLXNlcnZlcmVuLiBIdmlzIGR1IHZpbCBicnVrZSBkZXR0ZSBww6UgZWtzaXN0ZXJlbmRlIENJLWVyLCBtw6UgQ0ktbWlncmVyaW5nZW4ga2rDuHJlcyB2aWEga29uc29sbGVuIGV0dGVyIGF0IGR1IGhhciBlbmRyZXQgZGV0dGUgYWx0ZXJuYXRpdmV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBtZWQgZsO4bGdlbmRlIGRpc3RyaWJ1c2pvbnNzdGF0dXMgdmlsIGlra2UgYmxpIGxhZ3JldCBww6UgRWxhc3RpY3NlYXJjaC1zZXJ2ZXJlbi4gRm9yIMOlIGJydWtlIGRldHRlIHDDpSBla3Npc3RlcmVuZGUgQ0ktZXIgbcOlIENJLW1pZ3JlcmluZ2VuIGtqw7hyZXMgdmlhIGtvbnNvbGxlbiBldHRlciBhdCBkdSBoYXIgZW5kcmV0IGRldHRlIGFsdGVybmF0aXZldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnS29uZmlndXJhc2pvbiBFbGVtZW50Z3JlbnNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWd1cmFzam9uIEVsZW1lbnRiZWdyZW5zbmluZyBwZXIgc2lkZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiYXNlIGZvciBrb25maWd1cmFzam9uc3N0eXJpbmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdLb25maWd1cmFzam9uc2VsZW1lbnRldHMgYnVsa21vZHVsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmFzam9uc2VsZW1lbnQgZm9yIHPDuGsgaSBiYWNrZW5kLXJ1dGVyZW4gdGlsIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnT3BwcmV0dCBvZyBhZG1pbmlzdHJlciBkZWZpbmlzam9uZW5lIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdPcHByZXR0ZXIgYmlsbGV0dGVyIGZvciBDb25maWdJdGVtcyBww6UgYmVzdGVtdGUgdGlkc3B1bmt0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0t1bmRlciBrYW4gc2UgaGlzdG9yaXNrZSBDSS12ZXJzam9uZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0t1bmRlbmUgaGFyIG11bGlnaGV0IHRpbCDDpSBieXR0ZSBtYW51ZWx0IG1lbGxvbSBoaXN0b3Jpc2tlIENJLXZlcnNqb25lci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYWwgYnJ1a2VzIHDDpSBhdHRyaWJ1dHRldCBmb3Igc8O4a2Vza2plcm1lbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuIEVrc2VtcGVsOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1N0YW5kYXJkZGF0YSBzb20gc2thbCBicnVrZXMgcMOlIGF0dHJpYnV0dGV0IGZvciBzw7hrZXNramVybWVuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlci4gRWtzZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmVyIGhhbmRsaW5nZXIgZGVyIGVuIGlubnN0aWxsaW5nc2tuYXBwIGVyIHRpbGdqZW5nZWxpZyBpIHdpZGdldGVuIGZvciBrb2JsZWRlIG9iamVrdGVyIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFbDpnIgb3BwbWVya3NvbSBww6UgYXQgZGlzc2UgaGFuZGxpbmdlbmUgbcOlIGhhIHJlZ2lzdHJlcnQgZsO4bGdlbmRlIEpTLSBvZyBDU1MtZmlsZXI6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5lciBldCBUZW1wbGF0ZTo6VG9vbGtpdC1za2plbWEgZm9yIHZlcnNqb25zc3RyZW5nZXIuIEJydWtlcyBiYXJlIGh2aXMgVmVyc2pvbnNzdHJlbmdtb2R1bCBlciBzYXR0IHRpbCBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmVyIGV0IHNldHQgbWVkIGJldGluZ2Vsc2VyIGZvciBhdCBlbiBrdW5kZSBza2FsIGt1bm5lIHNlIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudC4gQmV0aW5nZWxzZW5lIGthbiBldmVudHVlbHQgYmVncmVuc2VzIHRpbCBiZXN0ZW10ZSBrdW5kZWdydXBwZXIuIE5hdm4gZXIgZGV0IGVuZXN0ZSBvYmxpZ2F0b3Jpc2tlIGF0dHJpYnV0dGV0LiBIdmlzIGluZ2VuIGFuZHJlIGFsdGVybmF0aXZlciBlciBhbmdpdHQsIHZpbCBhbGxlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHbDpnJlIHN5bmxpZ2UgdW5kZXIgZGVuIGFrdHVlbGxlIGthdGVnb3JpZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgbsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIHNsZXR0ZSBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHZlZCBoamVscCBhdiBkZXQgZ2VuZXJpc2tlIGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgbsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGhlbnRlIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgdmVkIGhqZWxwIGF2IGRldCBnZW5lcmlza2UgZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBuw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6Ugc8O4a2UgaSBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIHZlZCBoamVscCBhdiBkZXQgZ2VuZXJpc2tlIGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgbsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGFuZ2kgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciB2ZWQgaGplbHAgYXYgZGV0IGdlbmVyaXNrZSBncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmVyZXIgZW4gb3ZlcnNpa3RzbW9kdWwgc29tIHZpc2VyIGRlbiBsaWxsZSB2aXNuaW5nZW4gYXYgZW4gbGlzdGUgbWVkIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdBbmdpciBvbSBsZW5rZXR5cGVldGlrZXR0ZW5lIHNrYWwgdmlzZXMgaSBub2RlZm9yYmluZGVsc2VuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZXJlciByZWd1bMOmcmUgdXR0cnlrayBpbmRpdmlkdWVsdCBmb3IgaHZlciBDb25maWdJdGVtLWtsYXNzZSBmb3Igw6Uga29udHJvbGxlcmUgQ29uZmlnSXRlbS1uYXZuZXQgb2cgdmlzZSB0aWxzdmFyZW5kZSBmZWlsbWVsZGluZ2VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciB0aWxnamVuZ2VsaWdlIGtvbG9ubmVyIG1lZCBDSS1lciBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBhdmhlbmdpZyBhdiBDSS1rbGFzc2VuLiBIdmVyIG9wcGbDuHJpbmcgbcOlIGJlc3TDpSBhdiBldCBrbGFzc2VuYXZuIG9nIGVuIG1hdHJpc2UgbWVkIHRpbGdqZW5nZWxpZ2UgZmVsdCBmb3IgZGVuIHRpbHN2YXJlbmRlIGtsYXNzZW4uIER5bmFtaXNrZSBmZWx0b3BwZsO4cmluZ2VyIG3DpSBmw7hsZ2Ugc2tqZW1hZXQgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZCBrb25maWctZWxlbWVudGF0dHJpYnV0dCBmb3Igc29ydGVyaW5nIGF2IGtvbmZpZy1lbGVtZW50ZXIgaSBzw7hrZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZy1lbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmQga29uZmlndXJhc2pvbnNlbGVtZW50YXR0cmlidXR0IGZvciBzb3J0ZXJpbmcgYXYga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBzw7hrZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkga3VuZGVncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZCBrb25maWctZWxlbWVudGF0dHJpYnV0dCBmb3Igc29ydGVyaW5nIGF2IGtvbmZpZy1lbGVtZW50ZXQgaSBzw7hrZXJlc3VsdGF0ZXQgZm9yIGRlbm5lIG9wZXJhc2pvbmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkcmVra2Vmw7hsZ2VuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIHPDuGtlcmVzdWx0YXRldCBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuIE9wcDogZWxkc3QgcMOlIHRvcHBlbi4gTmVkOiBueWVzdGUgw7h2ZXJzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHJla2tlZsO4bGdlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBzw7hrZXJlc3VsdGF0ZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkga3VuZGVncmVuc2Vzbml0dGV0LiBPcHA6IGVsZHN0IHDDpSB0b3BwZW4uIE5lZDogbnllc3RlIMO4dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZHJla2tlZsO4bGdlbiBww6Uga29uZmlndXJhc2pvbnNlbGVtZW50ZW5lIGkgc8O4a2VyZXN1bHRhdGV0IGZvciBkZW5uZSBvcGVyYXNqb25lbi4gT3BwOiBlbGRzdGUgw7h2ZXJzdC4gTmVkOiBueWVzdGUgw7h2ZXJzdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzdGFuZGFyZGtvbG9ubmVuZSBzb20gdmlzZXMgZm9yIENJLWVyIGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLCBhdmhlbmdpZyBhdiBDSS1rbGFzc2VuLiBIdmVyIG9wcGbDuHJpbmcgbcOlIGJlc3TDpSBhdiBldCBrbGFzc2VuYXZuIG9nIGVuIG1hdHJpc2UgbWVkIHRpbGdqZW5nZWxpZ2UgZmVsdCBmb3IgZGVuIHRpbHN2YXJlbmRlIGtsYXNzZW4uIER5bmFtaXNrZSBmZWx0b3BwZsO4cmluZ2VyIG3DpSBmw7hsZ2Ugc2tqZW1hZXQgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnRGVmaW5lcmVyIHN0YW5kYXJkIHJlbGFzam9uc2R5YmRlIHNvbSBza2FsIHZpc2VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmRhdHRyaWJ1dHRldCBmb3Igc8O4a2VhdHRyaWJ1dHRldCBzb20gdmlzZXMgZm9yIHNramVybWJpbGRldCBmb3Iga29uZmlndXJhc2pvbnNvYmpla3Rzw7hrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lcmVyIHN0YW5kYXJkYXR0cmlidXR0ZXQgc29tIHZpc2VzIGZvciBzw7hrZWF0dHJpYnV0dGV0IGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRldCBww6Ugc8O4a2Vza2plcm1lbi4gRWtzZW1wZWw6ICJLZXkiIG3DpSBoYSBuYXZuZXQgcMOlIGRldCBkeW5hbWlza2UgZmVsdGV0LCBpIGRldHRlIHRpbGZlbGxldCAiWCIsICJDb250ZW50IiBtw6UgaGEgdmVyZGllbiB0aWwgZGV0IGR5bmFtaXNrZSBmZWx0ZXQsIGF2aGVuZ2lnIGF2IGRlbiBkeW5hbWlza2UgZmVsdHR5cGVuLCBUZXh0OiAiZW4gdGVrc3QiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBvZyBlbGxlciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmVyZXIgc3RhbmRhcmR1bmRlcm9iamVrdGV0IGZvciBrbGFzc2VuIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciB0aWxnamVuZ2VsaWdlIGtvbG9ubmVyIG1lZCBDSS1lciBpIG92ZXJzaWt0ZW4gb3ZlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBhdmhlbmdpZyBhdiBDSS1rbGFzc2VuLiBIdmVyIG9wcGbDuHJpbmcgbcOlIGJlc3TDpSBhdiBldCBrbGFzc2VuYXZuIG9nIGVuIG1hdHJpc2UgbWVkIHRpbGdqZW5nZWxpZ2UgZmVsdCBmb3IgZGVuIHRpbHN2YXJlbmRlIGtsYXNzZW4uIER5bmFtaXNrZSBmZWx0b3BwZsO4cmluZ2VyIG3DpSBmw7hsZ2Ugc2tqZW1hZXQgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGjDuHlkZW4gZm9yIHJlZGlnZXJpbmdza29tcG9uZW50ZW4gZm9yIHJpayB0ZWtzdCBmb3IgZGVubmUgc2tqZXJtZW4uIFNrcml2IGlubiB0YWxsIChwaWtzbGVyKSBlbGxlciBwcm9zZW50dmVyZGkgKHJlbGF0aXYpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmVyZXIgYW50YWxsIHJhZGVyIGZvciBDSS1kZWZpbmlzam9uc3JlZGlnZXJpbmdzcHJvZ3JhbW1ldCBpIGFkbWluaXN0cmF0b3JncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmVyZXIgcmVra2Vmw7hsZ2VuIGF2IGhlbmRlbHNlc3RpbHN0YW5kZXIgZnJhIGjDuHkgKGYuZWtzLiBrcml0aXNrKSB0aWwgbGF2IChmLmVrcy4gZnVua3Nqb25lbGwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZSByZWxldmFudGUgZGlzdHJpYnVzam9uc3N0YXR1c2VuZSBkZXIgdGlsa255dHRlZGUgdGlja2V0cyBrYW4gcMOldmlya2Ugc3RhdHVzZW4gdGlsIGVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzw7hrZWdyZW5zZW4gZm9yIHNramVybWJpbGRldCBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzw7hrZWdyZW5zZW4gZm9yIHNramVybWJpbGRldCBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzw7hrZWdyZW5zZW4gZm9yIHNramVybWJpbGRldCBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBzw7hrZWdyZW5zZW4gZm9yIHNramVybWJpbGRldCBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmVyZXIgaHZpbGtlIGtvbG9ubmVyIHNvbSBza2FsIHZpc2VzIGZvciBDSS1lciBpIGRlbiBrb21wbGVrc2UgdmlzbmluZ2VuIGF2IGtvYmxpbmdzdGFiZWxsZW4gZm9yIGFsbGUgQ0kta2xhc3Nlci4gSHZpcyBkZXQgaWtrZSBmaW5uZXMgbm9lbiBvcHBmw7hyaW5nLCB2aXNlcyBzdGFuZGFyZGtvbG9ubmVuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBkZSB2aXN0ZSBrb2xvbm5lbmUgbWVkIENJLWVyIGkgZGVuIGtvbXBsZWtzZSB2aXNuaW5nZW4gYXYga29ibGluZ3N0YWJlbGxlbiwgYXZoZW5naWcgYXYgQ0kta2xhc3Nlbi4gSHZlciBvcHBmw7hyaW5nIG3DpSBpbm5sZWRlcyBtZWQga2xhc3NlbmF2bmV0IG9nIHRvIGtvbG9uIChmLmVrcy4gQ29tcHV0ZXI6OikuIERldCBmaW5uZXMgbm9lbiBmw6UgQ0ktYXR0cmlidXR0ZXIgc29tIGVyIGZlbGxlcyBmb3IgYWxsZSBDSS1lciAoZWtzZW1wZWwgZm9yIGtsYXNzZW4gQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIEZvciDDpSB2aXNlIGluZGl2aWR1ZWxsZSBDSS1hdHRyaWJ1dHRlciBzb20gZGVmaW5lcnQgaSBDSS1kZWZpbmlzam9uZW4sIG3DpSBmw7hsZ2VuZGUgc2tqZW1hIGJydWtlcyAoZWtzZW1wZWwgZm9yIGtsYXNzZW4gQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSHZpcyBkZXQgaWtrZSBmaW5uZXMgbm9lbiBvcHBmw7hyaW5nIGZvciBlbiBDSS1rbGFzc2UsIHZpc2VzIHN0YW5kYXJka29sb25uZW5lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBodmlsa2UgZWxlbWVudGVyIHNvbSBlciB0aWxnamVuZ2VsaWdlIGZvciAiSGFuZGxpbmciIHDDpSB0cmVkamUgbml2w6UgaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBodmlsa2UgZWxlbWVudGVyIHNvbSBlciB0aWxnamVuZ2VsaWdlIHDDpSBmw7hyc3RlIG5pdsOlIGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZSBlbGVtZW50ZXIgc29tIGVyIHRpbGdqZW5nZWxpZ2UgcMOlIGFuZHJlIG5pdsOlIGkgSVRTTSBDb25maWcgSXRlbSBBQ0wtc3RydWt0dXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lcmVyIGh2aWxrZW4gdHlwZSBrb2JsaW5nIChuYXZuZ2l0dCBmcmEgdGlja2V0LXBlcnNwZWt0aXZldCkgc29tIGthbiBww6V2aXJrZSBzdGF0dXNlbiB0aWwgZXQga29ibGV0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZXJlciBodmlsa2VuIHR5cGUgYmlsbGV0dCBzb20ga2FuIHDDpXZpcmtlIHN0YXR1c2VuIHRpbCBlbiBrb2JsZXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnT3BwZGF0ZXJpbmcgYXYgZGVmaW5pc2pvbmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdTbGV0dCBrb25maWd1cmFzam9uc2VsZW1lbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdGYXJnZSBmb3IgcHJvZHVrc2pvbnNzZXR0aW5nc3RpbHN0YW5kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaXPDqXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1bCBmb3IgZHluYW1pc2tlIGZlbHRoZW5kZWxzZXIgc29tIG1hcmtlcmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGRlZmluaXNqb25lciBzb20gdXN5bmtyb25pc2VydGUgaHZpcyBkZSBkeW5hbWlza2UgZmVsdGVuZSBlbmRyZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2UgZmVsdCBzb20gdmlzZXMgaSBza2plcm1iaWxkZXQgZm9yIElUU00tdGlsbGVnZ3NmZWx0IGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlza2UgZmVsdCBzb20gdmlzZXMgaSBza2plcm1iaWxkZXQgZm9yIG92ZXJzaWt0IG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrZSBmZWx0IHNvbSB2aXNlcyBpIHNramVybWJpbGRldCBmb3Igc8O4ayBldHRlciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWt0aXZlcmVyIGZ1bmtzam9uZW4gZm9yIG1hc3NlaGFuZGxpbmdlciBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50ZXIsIHNsaWsgYXQgYWdlbnRlbnMgZnJvbnRlbmQga2FuIGFyYmVpZGUgbWVkIG1lciBlbm4gZXR0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBvbSBnYW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBa3RpdmVyZXIgZnVua3Nqb25lbiBmb3IgbWFzc2VoYW5kbGluZyBhdiBrb25maWd1cmFzam9uc2VsZW1lbnRlciBiYXJlIGZvciBkZSBvcHBmw7hydGUgZ3J1cHBlbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FrdGl2ZXJlci9kZWFrdGl2ZXJlciBmdW5rc2pvbmFsaXRldGVuIGZvciDDpSBzamVra2Ugb20gSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBoYXIgdW5pa2UgbmF2bi4gRsO4ciBkdSBha3RpdmVyZXIgZGV0dGUgYWx0ZXJuYXRpdmV0LCBiw7hyIGR1IHNqZWtrZSBzeXN0ZW1ldCBmb3IgYWxsZXJlZGUgZWtzaXN0ZXJlbmRlIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIG1lZCBkdXBsaXNlcnRlIG5hdm4uIER1IGthbiBnasO4cmUgZGV0dGUgbWVkIGtvbnNvbGxrb21tYW5kb2VuIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnSGVuZGVsc2VzbW9kdWwgZm9yIMOlIGFuZ2kgY29uZmlnaXRlbS1zdGF0dXMgcMOlIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0ZlbHQgaSBrb25maWd1cmFzam9uc2VsZW1lbnRpbmRla3Nlbiwgc29tIGJydWtlcyB0aWwgZnVsbHRla3N0c8O4ay4gRmVsdGVuZSBsYWdyZXMgb2dzw6UsIG1lbiBlciBpa2tlIG9ibGlnYXRvcmlza2UgZm9yIGRlbiBnZW5lcmVsbGUgZnVua3Nqb25hbGl0ZXRlbi4gSW5rbHVkZXJpbmcgYXYgdmVkbGVnZyBrYW4gZGVha3RpdmVyZXMgdmVkIMOlIHNldHRlIG9wcGbDuHJpbmdlbiB0aWwgMCBlbGxlciBzbGV0dGUgZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnRmVsdCBzb20gZXIgbGFncmV0IGkga29uZmlndXJhc2pvbnNlbGVtZW50aW5kZWtzZW4sIG9nIHNvbSBicnVrZXMgdGlsIGFuZHJlIHRpbmcgZW5uIGZ1bGx0ZWtzdHPDuGsuIEFsbGUgZmVsdGVuZSBlciBvYmxpZ2F0b3Jpc2tlIGZvciDDpSBmw6UgZnVsbCBmdW5rc2pvbmFsaXRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdGb3IgaHZlciB3ZWJ0amVuZXN0ZSAobsO4a2tlbCkga2FuIGRldCBkZWZpbmVyZXMgZW4gcmVra2Uga2xhc3NlciAodmVyZGkpIHNvbSBpbXBvcnRlbiBlciBiZWdyZW5zZXQgdGlsLiBGb3IgYWxsZSB2YWxndGUga2xhc3NlciwgZWxsZXIgYWxsZSBla3Npc3RlcmVuZGUga2xhc3NlciwgbcOlIGRlIGlkZW50aWZpc2VyZW5kZSBhdHRyaWJ1dHRlbmUgdmVsZ2VzIGkga29uZmlndXJhc2pvbmVuIGF2IHDDpWthbGxlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bGVuIGZvciBDb25maWdJdGVtRmV0Y2gtaW52b2tlcmluZ3NsYWdldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bGVuIGZvciBDb25maWdJdGVtRmV0Y2gtaW52b2tlcmluZ3NsYWdldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmVyaW5nIGF2IEdlbmVyaWNJbnRlcmZhY2UtbW9kdWxlbiBmb3IgQ29uZmlnSXRlbUZldGNoLWludm9rZXJpbmdzbGFnZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ092ZXJzaWt0IG92ZXIgSVRTTSBrb25maWd1cmFzam9uc2VuaGV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5rbHVkZXJlciBkaXN0cmlidXNqb25zc3RhdHVzIGkgc8O4a2V0IGV0dGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkga3VuZGVncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmtsdWRlcmVyIGhlbmRlbHNlc3RpbHN0YW5kZXIgaSBrb25maWd1cmFzam9uc3PDuGtldCBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc2ltYWx0IGFudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBpIHJlc3VsdGF0ZXQgYXYgZGVubmUgb3BlcmFzam9uZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgZm9yIMOlIHNqZWtrZSBodmlsa2VuIGdydXBwZSBzb20gZXIgYW5zdmFybGlnIGZvciBlbiBrbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgZm9yIMOlIHNqZWtrZSBodmlsa2VuIGdydXBwZSBzb20gZXIgYW5zdmFybGlnIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgZm9yIMOlIGdlbmVyZXJlIHN0YXRpc3Rpa2sgb3ZlciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hdm4gTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lcm1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGF2IGV0IHPDuGtlcmVzdWx0YXQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FudGFsbCBrb25maWd1cmFzam9uc2VsZW1lbnRlciBzb20gc2thbCB2aXNlcyBww6UgaHZlciBzaWRlIGF2IGV0IHPDuGtlcmVzdWx0YXQgaSBrdW5kZWdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdGVyIGRldCBza2FsIHPDuGtlcyBldHRlciwgaHZvciBtYW5nZSBvcHBmw7hyaW5nZXIgb2cgaHZpbGtlIGF0dHJpYnV0dGVyIHNvbSBza2FsIHZpc2VzLiBDb25maWdJdGVtLWF0dHJpYnV0dGVyIG3DpSBsYWdyZXMgZWtzcGxpc2l0dCB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnT3ZlcnNpa3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBrYXRlZ29yaWVuZSBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3Iga29sb25uZWZpbHRyZW5lIGkgb3ZlcnNpa3RlbiBvdmVyIHNtw6Uga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuIE1lcms6IEh2aXMgZHUgc2V0dGVyICJBY3RpdmUiIHRpbCAwLCB2aWwgZGV0IGJhcmUgaGluZHJlIGFnZW50ZXIgaSDDpSByZWRpZ2VyZSBpbm5zdGlsbGluZ2VuZSBmb3IgZGVubmUgZ3J1cHBlbiBpIHNpbmUgcGVyc29ubGlnZSBwcmVmZXJhbnNlciwgbWVuIGRldCB2aWwgZm9ydHNhdHQgdsOmcmUgbXVsaWcgZm9yIGFkbWluaXN0cmF0b3JlciDDpSByZWRpZ2VyZSBpbm5zdGlsbGluZ2VuZSBww6UgdmVnbmUgYXYgZW4gYW5uZW4gYnJ1a2VyLiBCcnVrICJQcmVmZXJlbmNlR3JvdXAiIHRpbCDDpSBrb250cm9sbGVyZSBpIGh2aWxrZXQgb21yw6VkZSBkaXNzZSBpbm5zdGlsbGluZ2VuZSBza2FsIHZpc2VzIGkgYnJ1a2VyZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIGZhcmdlbmUgZm9yIGRpc3RyaWJ1c2pvbnNzdGF0dXNlbmUgaSBwcmVmZXJhbnNldmlzbmluZ2VuIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIGRpc3RyaWJ1c2pvbnNzdGF0dXNlbmUgaSBwcmVmZXJhbnNldmlzbmluZ2VuIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciB0aWxnYW5nc2dydXBwZS1la3NlbXBlbCBpIGF0dHJpYnV0dGVuZSBmb3IgZ2VuZXJlbGwga2F0YWxvZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciBuYXZuZW1vZHVsZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGtsYXNzZXIgaSBwcmVmZXJhbnNldmlzbmluZ2VuIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgbnVtbWVybW9kdWxlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIHNpZGVuZSAoZGVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVuZSB2aXNlcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcmUgZm9yIHZlcnNqb25zc3RyZW5nbW9kdWxlbiBmb3Iga29uZmlndXJhc2pvbnNlbGVtZW50a2xhc3NlciBpIHByZWZlcmFuc2V2aXNuaW5nZW4gaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVyZSBmb3IgdmVyc2pvbnNzdHJlbmdtYWx2ZXJrdMO4eW1vZHVsZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGtsYXNzZXIgaSBwcmVmZXJhbnNldmlzbmluZ2VuIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJlIGZvciB2ZXJzam9uc3V0bMO4c2VyZW4gZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGtsYXNzZXIgaSBwcmVmZXJhbnNldmlzbmluZ2VuIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ1V0ZsO4cmVyIGRlbiBrb25maWd1cmVydGUgaGFuZGxpbmdlbiBmb3IgaHZlciBoZW5kZWxzZSAoc29tIGVuIEludm9rZXIpIGZvciBodmVyIGtvbmZpZ3VyZXJ0ZSB3ZWJ0amVuZXN0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1RpbGxhdGVsc2VzZ3J1cHBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXRzIHZlZGxlZ2dzaGFuZGxpbmcgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgZm9yIHPDuGsgZXR0ZXIgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc8O4a2Vza2plcm1lbiBmb3IgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGt1bmRlZ3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7hkdmVuZGlnZSB0aWxsYXRlbHNlciBmb3Igw6UgYnJ1a2Ugc2tqZXJtYmlsZGV0IGZvciB0cmV2aXNuaW5nIGF2IElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSB6b29tc2tqZXJtYmlsZGV0IGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgTGVnZyB0aWwgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnQgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgZm9yIElUU00ta29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07DuGR2ZW5kaWdlIHRpbGxhdGVsc2VyIGZvciDDpSBicnVrZSBza2plcm1iaWxkZXQgUmVkaWdlciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHNramVybWJpbGRldCBmb3IgaGlzdG9yaWtrIGZvciBJVFNNLWtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO4ZHZlbmRpZ2UgdGlsbGF0ZWxzZXIgZm9yIMOlIGJydWtlIHNramVybWJpbGRldCBmb3IgdXRza3JpZnQgYXYgSVRTTS1rb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ07DuGR2ZW5kaWdlIHJldHRpZ2hldGVyIGZvciDDpSBzbGV0dGUga29uZmlndXJhc2pvbnNlbGVtZW50ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnU8O4ayBldHRlciBrb25maWd1cmFzam9uc2VuaGV0ZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdBbmdpIGhlbmRlbHNlc3N0YXR1cyBmb3IgZW4gQ0kgYXV0b21hdGlzayBuw6VyIGVuIFRpY2tldCBrb2JsZXMgdGlsIGVuIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FuZ2lyIGRpc3RyaWJ1c2pvbnNzdGF0dXMgaSBza2plcm1iaWxkZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdpciBoZW5kZWxzZXNzdGF0dXMgaSBza2plcm1iaWxkZXQgZm9yIGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0IGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIHNvbSBnasO4ciBkZXQgbXVsaWcgw6Uga29ibGUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IHRpbCBldCBhbm5ldCBvYmpla3QgaSB6b29tdmlzbmluZ2VuIGZvciBrb25maWd1cmFzam9uc2VsZW1lbnRlciBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgZsOlIHRpbGdhbmcgdGlsIGhpc3Rvcmlra2VuIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQgaSBvdmVyc2lrdGVuIG92ZXIga29uZmlndXJhc2pvbnNlbGVtZW50ZXIgaSBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBmw6UgdGlsZ2FuZyB0aWwgaGlzdG9yaWtrZW4gdGlsIGV0IGtvbmZpZ3VyYXNqb25zZWxlbWVudCBpIHpvb212aXNuaW5nZW4gYXYgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBzbGV0dGUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgdmlzZSBrb25maWd1cmFzam9uc2VsZW1lbnRsZW5rZW5lIHNvbSBlbiB0cmV2aXNuaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBkdXBsaXNlcmUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBrb2JsaW5nIGkgbWVueWVuIGZvciDDpSBkdXBsaXNlcmUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgcmVkaWdlcmUgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNlciBlbiBsZW5rZSBpIG1lbnllbiBmb3Igw6UgZ8OlIHRpbGJha2UgaSB6b29tdmlzbmluZ2VuIGF2IGtvbmZpZ3VyYXNqb25zZWxlbWVudGV0IGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2VyIGVuIGxlbmtlIGkgbWVueWVuIGZvciDDpSBza3JpdmUgdXQgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgem9vbXZpc25pbmdlbiBhdiBhZ2VudGdyZW5zZXNuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIgZW4gbGVua2UgaSBtZW55ZW4gZm9yIMOlIHpvb21lIGlubiBww6UgZXQga29uZmlndXJhc2pvbnNlbGVtZW50IGkgb3ZlcnNpa3RlbiBvdmVyIGtvbmZpZ3VyYXNqb25zZWxlbWVudGVyIGkgYWdlbnRncmVuc2Vzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzZXIga29uZmlndXJlcmluZ3NlbGVtZW50ZXRzIGhpc3RvcmlrayAoaSBvbXZlbmR0IHJla2tlZsO4bGdlKSBpIGFnZW50Z3JlbnNlc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnU3RhbmRhcmRrYXRlZ29yaWVuIHNvbSB2aXNlcyBodmlzIGluZ2VuIGVyIHZhbGd0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvcmVuIGZvciBldCBrb25maWd1cmFzam9uc2VsZW1lbnQsIGYuZWtzLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gU3RhbmRhcmRpbm5zdGlsbGluZ2VuIGVyIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnVXRsw7hzZXIgQ29uZmlnSXRlbUZldGNoLWludm9rYXRvcmVuIGF1dG9tYXRpc2suJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICdWZXJzam9uc3N0cmVuZ3V0dHJ5a2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnVmVyc2pvbnNzdHJlbmdtb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzam9uc3V0bMO4c2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJ09tIGZlbHQgc2thbCBmeWxsZXMgdXQgYXV0b21hdGlzayAoMSksIG9nIGkgc8OlIGZhbGwgb2dzw6Ugc2tqdWxlcyBmb3Igc2Frc2Zvcm1sZW5lICgyKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnT20ga2rDuHJpbmdlbiBhdiBDb25maWdJdGVtQUNMIGthbiB1bm5nw6VzIHZlZCDDpSBzamVra2UgYnVmcmVkZSBmZWx0YXZoZW5naWdoZXRlci4gRGV0dGUga2FuIGZvcmJlZHJlIGlubmxhc3RpbmdzdGlkZW4gZm9yIGZvcm11bGFyZXIsIG1lbiBtw6UgZGVha3RpdmVyZXMgaHZpcyBBQ0xNb2R1bGVzIHNrYWwgYnJ1a2VzIGZvciBJVFNNQ29uZmlnSXRlbS0gb2cgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0h2aWxrZW4gZ2VuZXJlbGwgaW5mb3JtYXNqb24gc29tIHZpc2VzIGkgdG9wcHRla3N0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAna2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWt0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1a3Rpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrdGl2JzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiA0NCw0NSBjbSAoMTcsNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDUzLDM0IGNtICgyMSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDY2LDY4IGNtICgyNiwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogODAsMDEgY20gKDMxLDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS10b21tZXJzIHN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDg4LDkgY20gKDM1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtdG9tbWVycyBzdGF0aXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHRvbW1lciAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLXRvbW1lcnMgc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiB0b21tZXIgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDEwNiw2OCBjbSAoNDIgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgdG9tbWVyICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiA4LDg5IGNtICgzLDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiAxMzMsMzUgY20gKDUyLDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgdG9tbWVyICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiAxNDYsNjggY20gKDU3LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHRvbW1lciAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogMTYwLDAyIGNtICg2MyB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgdG9tbWVyICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogMTczLDM1IGNtICg2OCwyNSB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDEzLDM0IGNtICg1LDI1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSB0b21tZXIgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgdG9tbWVyICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHRvbW1lciAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDIxMywzNiBjbSAoODQgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiAxNyw3OCBjbSAoNyB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDIyLDIzIGNtICg4LDc1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMzEsMTIgY20gKDEyLDI1IHRvbW1lciknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDM1LDU2IGNtICgxNCB0b21tZXIpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgdG9tbWVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1JlZ25za2FwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnQWRyZXNzZXRpbGRlbGluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnQWRtaW5pc3RyYXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2cgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1R5cGUgYXBwYXJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0JhdHRlcmlrYXBhc2l0ZXQgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdCYXR0ZXJpdHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0J5Z25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0J1c3NncmVuc2Vzbml0dCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvc2Vzc29yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NQVS1rbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGFzaXRldCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnS2FwYXNpdGV0IHBlciBncmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnS29ydG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0tvcnRsZXNlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLb3J0dHlwZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpZW50c2VydGlmaWthdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ0tsaWVudHByb2dyYW12YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0t1bmRla2F0ZWdvcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnS2xva2tlZnJla3ZlbnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ0Nsb2Nrc3BlZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0tvZGVzaWduZXJpbmdzc2VydGlmaWthdGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJhbnNldGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0tvbnN1bGVudGF2dGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnS29udGFrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnS29udGFrdCBkaXN0cmlidXTDuHInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdDb250YWluZXJow6VuZHRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0tvbnRyYWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdLb250cmFrdHN0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnS29udHJha3RzcGVyaW9kZSBmcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnS29udHJha3RzcGVyaW9kZSBmcmVtIHRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICdUcsOlZGzDuHMgdGVsZWZvbiAoREVDVC10ZWxlZm9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdLb3N0bmFkc2VuaGV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnQW50YWxsIGxpc2Vuc2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdPcHByZXR0ZWxzZXNkYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdUaWxwYXNzZXQgc3RhdGl2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQIFJlc2VydmVydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLXNlcnZlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRmFrdHVyYWRhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdG8gZm9yIGJlc3RpbGxpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ0RhdG8gZm9yIGdhcmFudGlzdGlsbGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0byBmb3IgdXRnaXZlbHNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdTdGFzam9uw6ZyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdEb2t1bWVudHNpZ25lcmluZ3NzZXJ0aWZpa2F0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICdFVFNJLXN0YXRpdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1wb3N0c2VydGlmaWthdGVyIChTL01JTUUtc2VydGlmaWthdGVyKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdBcmJlaWRzYXZ0YWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnU2x1dHQgSVAtYWRyZXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1NsdXR0IHDDpSBzdMO4dHRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1V0bMO4cHNkYXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICdFa3N0ZXJuIGhhcmRkaXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnQnJhbm5tdXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGYXN0dmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0VuZXJnaWxhZ3JpbmcgbWVkIHN2aW5naGp1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm1mYWt0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0ZyYW5jaGlzZWF2dGFsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0dyYXRpcyBwcm9ncmFtdmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdHZW5lcmVsbCBpbmZvcm1hc2pvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpa2tvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdNYXNraW52YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTWFza2ludmFyZW1vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdNYXNraW52YXJlIFZla3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ0hvZGV0ZWxlZm9uZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUC1wcm90b2tvbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSWRlbnRpdGV0cy0gb2cgdGlsZ2FuZ3NzdHlyaW5nIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRhcm51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0ludmVyc3RlcmluZ3Nrb3N0bmFkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdGYWt0dXJhbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFzdGF0dXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELXNramVybSAoZmx5dGVuZGUga3J5c3RhbGxza2plcm0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQtc2tqZXJtIChseXNkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnRmFzdHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnQsOmcmJhcic7CiAgICAkU2VsZi0+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+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydSdW4gU2VhcmNoJ30gPSAnWm9la2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ09vayBpbiBlZXJkZXJlIHZlcnNpZXMgem9la2VuPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IHZvb3IgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ0RpZXB0ZSBOaXZlYXUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdJbi0vdWl0em9vbWVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ01heC4ga29wcGVsaW5nc25pdmVhdSBiZXJlaWt0IHZvb3IgQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdDb25maWd1cmF0aWUtaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICdDb25maWd1cmF0aWUtaXRlbSBpbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FjdHVlbGUgc3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICdBY3R1ZWxlIGluY2lkZW50c3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ0xhYXN0ZSB3aWp6aWdpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnTGFhc3RlIHdpanppZ2luZyBkb29yJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVXcgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnQ29uZmlnSXRlbSB6b2VrZW4nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdEZSB2b2xnZW5kZSBrbGFzc2VuIHdvcmRlbiBnZcOvbXBvcnRlZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0RlIHZvbGdlbmRlIHJvbGxlbiB3b3JkZW4gZ2XDr21wb3J0ZWVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdNZXJrIG9wIGRhdCBvb2sgb3ZlcmVlbmtvbXN0aWdlIGR5bmFtaXNjaGUgdmVsZGVuIGVuIEdlbmVyYWxDYXRhbG9nIGtsYXNzZW4gd29yZGVuIGFhbmdlbWFha3QgZW4gZGF0IGRlemUgbmlldCBhdXRvbWF0aXNjaCB3b3JkZW4gdmVyd2lqZGVyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdXaWwgamUgZG9vcmdhYW4/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ1Zvb3JiZWVsZGtsYXNzZW4gbm9kaWchJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluaXRpZSBpcyBnZWVuIGdlbGRpZ2UgWUFNTCBoYXNoLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ092ZXJ6aWNodDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ29uZmlnSXRlbUlEIG9wZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICdKZSBoZWJ0IHRlbiBtaW5zdGUgw6nDqW4gZ2VzZWxlY3RlZXJkIGNvbmZpZ3VyYXRpZS1pdGVtIG5vZGlnISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ0plIGhlYnQgZ2VlbiBzY2hyaWpmdG9lZ2FuZyB0b3QgZGl0IGNvbmZpZ3VyYXRpZS1pdGVtOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnRXIgaXMgZ2VlbiBkZWZpbml0aWUgZ2VkZWZpbmllZXJkIHZvb3Iga2xhc3NlICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnIGl0ZW0gIiVzIiBuaWV0IGdldm9uZGVuIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ0RlZmluaWVlcnQgaGV0IGFhbnRhbCByaWplbiB2b29yIGRlIENJLWRlZmluaXRpZS1lZGl0b3IgaW4gZGUgYmVoZWVyaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnR2VlbiB2ZXJzaWUgZ2V2b25kZW4gdm9vciBDb25maWdJdGVtSUQgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvZiBDbGFzc0lEIG9wZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ0VyIHdvcmR0IGdlZW4gdG9lZ2FuZyBnZWdldmVuISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdLYW4gZ2VzY2hpZWRlbmlzIG5pZXQgd2VlcmdldmVuLCBlciBpcyBnZWVuIENvbmZpZ0l0ZW1JRCBvcGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnS2FuIGdlc2NoaWVkZW5pcyBuaWV0IHdlZXJnZXZlbiwgZ2VlbiB0b2VnYW5nc3JlY2h0ZW4gZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05pZXV3IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAnTmlldXdlIHZlcnNpZSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdGlvbnN0YXR1cyBiaWpnZXdlcmt0IChuaWV1dz0lcywgb3VkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdJbmNpZGVudCBzdGF0dXMgYmlqZ2V3ZXJrdCAobmlldXc9JXMsIG91ZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdDb25maWdJdGVtIChJRD0lcykgdmVyd2lqZGVyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpbmsgbmFhciAlcyAodHlwZT0lcykgdG9lZ2V2b2VnZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayBuYWFyICVzICh0eXBlPSVzKSB2ZXJ3aWpkZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdDb25maWdJdGVtIGRlZmluaXRpZSBiaWpnZXdlcmt0IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdOYWFtIGJpamdld2Vya3QgKG5pZXV3PSVzLCBvdWQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXR0cmlidXV0ICVzIGJpamdld2Vya3QgdmFuICIlcyIgbmFhciAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpZSAlcyB2ZXJ3aWpkZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ0VyIGlzIGdlZW4gQ29uZmlnSXRlbUlEIG9mIFZlcnNpb25JRCBvcGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGNvbmZpZyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ0thbiBjb25maWcgaXRlbSBuaWV0IHRvbmVuLCBnZWVuIHRvZWdhbmdzcmVjaHRlbiBnZWdldmVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBuaWV0IGdldm9uZGVuIGluIGRhdGFiYXNlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnYWZnZWRydWt0IGRvb3IgJXMgb3AgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW50aWUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdPbmdlbGRpZ2UgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdFciBpcyBnZWVuIENsYXNzSUQgZ2VnZXZlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICdHZWVuIHRvZWdhbmdzcmVjaHRlbiB2b29yIGRlemUga2xhc3NlIGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdHZWVuIHJlc3VsdGFhdCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdDb25maWcgaXRlbSB6b2VrcmVzdWx0YXRlbic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnS2FuIGl0ZW0gbmlldCB3ZWVyZ2V2ZW4sIGVyIHppam4gZ2VlbiB0b2VnYW5nc3JlY2h0ZW4gdm9vciBDb25maWdJdGVtIGdlZ2V2ZW4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0gbmlldCBnZXZvbmRlbiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnR2VlbiB2ZXJzaWVzIGdldm9uZGVuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ29wZXJhdGlvbmVlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAnd2FhcnNjaHV3aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlcGxveW1lbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ0RlIHN0YXR1cyB2YW4gZGl0IGNvbmZpZ3VyYXRpZS1pdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnRGUgaW5jaWRlbnRzdGF0dXMgdmFuIGRpdCBjb25maWd1cmF0aWUtaXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ0dlZW4gdG9lc3RlbW1pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyIG9uZ2VsZGlnISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnWm9la3BhcmFtZXRlcnMgb25nZWxkaWchJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnV2VlcmdlZ2V2ZW4gY29uZmlndXJhdGllLWl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cGUgaW56ZXRzdGF0dXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHlwZSBodWlkaWcgaW5jaWRlbnQnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnVHVzc2VuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdLbGFzc2ViZXBlcmtpbmdlbiB2b29yIGhldCBjb25maWcgaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0ZWVyIGVlbiBvZiBtZWVyIGtsYXNzZW4gb20gc2VsZWN0ZWVyYmFyZSBjb25maWd1cmF0aWUtaXRlbXMgdGUgYmVwZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ0tsYXNzZWJlcGVya2luZ2VuIHZvb3IgaGV0IGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnU2VsZWN0ZWVyIGVlbiBvZiBtZWVyIGtsYXNzZW4gb20gc2VsZWN0ZWVyYmFyZSBjb25maWd1cmF0aWUtaXRlbXMgdGUgYmVwZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWlzY2ggKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aXNjaCAodmVyc2llKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXBlIHZlcndpanppbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnT2YgZGV6ZSBsaW5rIHZhbiB0b2VwYXNzaW5nIGlzIG9wIGhldCBDb25maWdJdGVtIG9mIGRlIHN0YXRpc2NoZSB2ZXJzaWUgdmFuIGhldCBvYmplY3Qgd2Fhcm5hYXIgdmVyd2V6ZW4gd29yZHQuIERlIGJlcmVrZW5pbmcgdmFuIGRlIGh1aWRpZ2UgaW5jaWRlbnR0b2VzdGFuZCB3b3JkdCBhbGxlZW4gdWl0Z2V2b2VyZCBvcCBkeW5hbWlzY2hlIGxpbmtzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjdGVlciBoZXQgYXR0cmlidXV0IHdhYXJvcCBkZSBjb25maWd1cmF0aWUtaXRlbXMgbW9ldGVuIHdvcmRlbiBkb29yem9jaHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0Jhc2lzc3RydWN0dXVyIGlzIG9uZ2VsZGlnLiBHZWVmIGVlbiBoYXNoIG1ldCBnZWdldmVucyBpbiBZQU1MLWluZGVsaW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0RlIFlBTUwtc3RyaW5nIGJlZ2lubmVuIG1ldCBcJy0tLVwnIGlzIHZlcmVpc3QuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ0tvbiBkZSB0YWJlbCBjb25maWdpdGVtX2xpbmsgbmlldCB2ZXJ3aWpkZXJlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ0VyIHppam4gZ2VlbiByZWxldmFudGUgZHluYW1pc2NoZSB2ZWxkZW4gZ2V2b25kZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdLb24gbmlldCBpbnZvZWdlbiBpbiBkZSB0YWJlbCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJzAgcmlqZW4gaW5nZXZvZWdkIGluIGRlIHRhYmVsIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXhpbWFsZSBob2V2ZWVsaGVpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaWUgU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0ZvdXQgYmlqIGhldCBzeW5jaHJvbmlzZXJlbiB2YW4gZGUgZGVmaW5pdGllcy4gQ29udHJvbGVlciBoZXQgbG9nYm9lay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdKZSBoZWJ0IElUU01Db25maWdJdGVtIGRlZmluaXRpZXMgZGllIG5pZXQgZ2VzeW5jaHJvbmlzZWVyZCB6aWpuLiBJbXBsZW1lbnRlZXIgamUgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pc2NoZSB2ZWxkd2lqemlnaW5nZW4uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdWZXJsb3Blbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0luIG9uZGVyaG91ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdHZXBsYW5uZWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnSW4gcmVwYXJhdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdVaXRnZWZhc2VlcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aWV3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0L1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdPdmVyemljaHQgZW4gYmV2ZXN0aWdpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnS2xhc3Nlbi9yb2xsZW4gZW4gaHVuIGdlcmVsYXRlZXJkZSB2ZWxkZW4gaW1wb3J0ZXJlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ0VyIGlzIGVlbiBmb3V0IG9wZ2V0cmVkZW4gdGlqZGVucyBoZXQgaW1wb3J0ZXJlbiB2YW4gZGUga2xhc3NlLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gVmVyYm9yZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBBZmdlYmVlbGQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ01hYWt0IHVpdGdlYnJlaWRlIHpvZWt2b29yd2FhcmRlbiBtb2dlbGlqayBiaWogaGV0IHpvZWtlbiBuYWFyIGNvbmZpZyBpdGVtcyBpbiBkZSBhZ2VudCBpbnRlcmZhY2UuIE1ldCBkZXplIGZ1bmN0aWUga3VuIGplIGJpanZvb3JiZWVsZCB6b2VrZW4gb3AgY29uZmlnIGl0ZW0gbmFhbSBtZXQgZGl0IHNvb3J0IGNvbmRpdGllcyB6b2FscyAiKCprZXkxKiYmKmtleTIqKSIgb2YgIigqa2V5MSp8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ01hYWt0IHVpdGdlYnJlaWRlIHpvZWt2b29yd2FhcmRlbiBtb2dlbGlqayBiaWogaGV0IHpvZWtlbiBuYWFyIGNvbmZpZ3VyYXRpZXMgaW4gZGUga2xhbnRlbmludGVyZmFjZS4gTWV0IGRlemUgZnVuY3RpZSBrdW4gamUgYmlqdm9vcmJlZWxkIHpvZWtlbiBvcCBjb25maWcgaXRlbSBuYWFtIG1ldCBkaXQgc29vcnQgY29uZGl0aWVzIHpvYWxzICIoKmtleTEqJiYqa2V5MiopIiBvZiAiKCprZXkxKnwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnVG9lZ2V3ZXplbiBDSVwncyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0lcJ3MgdG9lZ2V3ZXplbiBhYW4ga2xhbnRiZWRyaWpmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0lcJ3MgdG9lZ2V3ZXplbiBhYW4ga2xhbnRnZWJydWlrZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREItaW5zdGVsbGluZ2VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdDb250cm9sZWVyIGFsbGVlbiBvcCBlZW4gdW5pZWtlIG5hYW0gYmlubmVuIGRlemVsZmRlIENvbmZpZ0l0ZW0ta2xhc3NlIChcJ2NsYXNzXCcpIG9mIGdsb2JhYWwgKFwnZ2xvYmFsXCcpLCB3YXQgYmV0ZWtlbnQgZGF0IGVsayBiZXN0YWFuZCBDb25maWdJdGVtIGluIGFhbm1lcmtpbmcgd29yZHQgZ2Vub21lbiBiaWogaGV0IHpvZWtlbiBuYWFyIGR1cGxpY2F0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdLaWVzIGVlbiBtb2R1bGUgb20gZWVuIG5hYW1nZXZpbmdzc2NoZW1hIGFmIHRlIGR3aW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdLaWVzIGVlbiBtb2R1bGUgb20gZWVuIGNpamZlcnNjaGVtYSBhZiB0ZSBkd2luZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdLaWVzIGVlbiBtb2R1bGUgb20gZWVuIHZlcnNpZXNjaGVtYSBhZiB0ZSBkd2luZ2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ0tpZXMga2VubWVya2VuIG9tIGhldCBhYW5tYWtlbiB2YW4gZWVuIG5pZXV3ZSB2ZXJzaWUgdGUgYWN0aXZlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdLaWVzIGNhdGVnb3JpZcOrbiBvbSB0b2UgdGUgd2lqemVuIGFhbiBkZXplIGNvbmZpZyBpdGVtIGtsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdLb2xvbSBjb25maWcgaXRlbSBmaWx0ZXJzIHZvb3IgQ29uZmlnSXRlbSBPdmVyemljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2xvbW1lbiBkaWUga3VubmVuIHdvcmRlbiBnZWZpbHRlcmQgaW4gaGV0IGNvbmZpZyBpdGVtIG92ZXJ6aWNodCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLiBPcG1lcmtpbmc6IEFsbGVlbiBDb25maWcgSXRlbSBhdHRyaWJ1dGVuIGVuIER5bmFtaXNjaGUgdmVsZGVuIChEeW5hbWljRmllbGRfTmFtZVgpIHppam4gdG9lZ2VzdGFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlndXJhdGllLWl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdDb25maWd1cmF0aWUtaXRlbSB0b2V2b2VnZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gYmV3ZXJrZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGllLWl0ZW0gZ2ViZXVydGVuaXNtb2R1bGUgZGllIGhldCBsb2dnZW4gbmFhciBnZXNjaGllZGVuaXMgaW4gZGUgYWdlbnRpbnRlcmZhY2UgbW9nZWxpamsgbWFha3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSBkaWUgY29uZmlnIGl0ZW1zIGJpandlcmt0IG5hYXIgaHVuIGh1aWRpZ2UgZGVmaW5pdGllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIGdlc2NoaWVkZW5pcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gYWZkcnVra2VuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIHpvb20uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBib29tc3RydWN0dXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zIHZhbiBkZSB2b2xnZW5kZSBrbGFzc2VuIHdvcmRlbiBuaWV0IG9wZ2VzbGFnZW4gb3AgZGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIE9tIGRpdCB0b2UgdGUgcGFzc2VuIG9wIGJlc3RhYW5kZSBDSXMsIG1vZXQgZGUgQ0ktbWlncmF0aWUgd29yZGVuIHVpdGdldm9lcmQgdmlhIGRlIGNvbnNvbGUsIG5hIGhldCB3aWp6aWdlbiB2YW4gZGV6ZSBvcHRpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgbWV0IGRlIHZvbGdlbmRlIGRlcGxveW1lbnQgc3RhdGVzIHdvcmRlbiBuaWV0IG9wZ2VzbGFnZW4gb3AgZGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIE9tIGRpdCB0b2UgdGUgcGFzc2VuIG9wIGJlc3RhYW5kZSBDSXMsIG1vZXQgZGUgQ0ktbWlncmF0aWUgd29yZGVuIHVpdGdldm9lcmQgdmlhIGRlIGNvbnNvbGUsIG5hIGhldCB3aWp6aWdlbiB2YW4gZGV6ZSBvcHRpZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnQ29uZmlndXJhdGllIEl0ZW0gTGltaWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmF0aWUgSXRlbSBsaW1pZXQgcGVyIHBhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiYXNlIHZvb3IgY29uZmlndXJhdGllYmVoZWVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnQ29uZmlndXJhdGllLWl0ZW0gYnVsa21vZHVsZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhdGllLWl0ZW0gem9layBiYWNrZW5kIHJvdXRlciB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0Fhbm1ha2VuIGVuIGJlaGVyZW4gdmFuIGRlZmluaXRpZXMgdm9vciBjb25maWd1cmF0aWUtaXRlbXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3Jlw6tlcnQgdGlja2V0cyB2b29yIENvbmZpZ0l0ZW1zIG9wIHNwZWNpZmlla2UgdGlqZHN0aXBwZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ0tsYW50ZW4ga3VubmVuIGhpc3RvcmlzY2hlIENJLXZlcnNpZXMgemllbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnS2xhbnRlbiBoZWJiZW4gZGUgbW9nZWxpamtoZWlkIG9tIGhhbmRtYXRpZyB0ZSB3aXNzZWxlbiB0dXNzZW4gaGlzdG9yaXNjaGUgQ0ktdmVyc2llcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdTdGFuZGFhcmQgZ2VnZXZlbnMgb20gdGUgZ2VicnVpa2VuIG9wIGF0dHJpYnV1dCB2b29yIGNvbmZpZyBpdGVtIHpvZWtzY2hlcm0uIFZvb3JiZWVsZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFhcmQgZ2VnZXZlbnMgb20gdGUgZ2VicnVpa2VuIG9wIGF0dHJpYnV1dCB2b29yIGNvbmZpZyBpdGVtIHpvZWtzY2hlcm0uIFZvb3JiZWVsZDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaWVlciBhY3RpZXMgd2FhcmJpaiBlZW4gaW5zdGVsbGluZ2Vua25vcCBiZXNjaGlrYmFhciBpcyBpbiBkZSB3aWRnZXQgdmFuIGdla29wcGVsZGUgb2JqZWN0ZW4gKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gSG91ZCBlciByZWtlbmluZyBtZWUgZGF0IGRlemUgYWN0aWVzIGRlIHZvbGdlbmRlIEpTLSBlbiBDU1MtYmVzdGFuZGVuIG1vZXRlbiBoZWJiZW4gZ2VyZWdpc3RyZWVyZDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgZW4gQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5pZWVyIGVlbiBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWEgdm9vciB2ZXJzaWVzdHJpbmdzLiBBbGxlZW4gZ2VicnVpa3QgYWxzIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBpbmdlc3RlbGQgb3AgVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5pZWVyIGVlbiBzZXQgdm9vcndhYXJkZW4gd2Fhcm9uZGVyIGVlbiBrbGFudCBlZW4gY29uZmlndXJhdGllLWl0ZW0gbWFnIHppZW4uIFZvb3J3YWFyZGVuIGt1bm5lbiBvcHRpb25lZWwgd29yZGVuIGJlcGVya3QgdG90IGJlcGFhbGRlIGtsYW50Z3JvZXBlbi4gTmFhbSBpcyBoZXQgZW5pZ2UgdmVycGxpY2h0ZSBhdHRyaWJ1dXQuIEFscyBlciBnZWVuIGFuZGVyZSBvcHRpZXMgd29yZGVuIGdlZ2V2ZW4sIHp1bGxlbiBhbGxlIGNvbmZpZ3VyYXRpZS1pdGVtcyB6aWNodGJhYXIgemlqbiBvbmRlciBkaWUgY2F0ZWdvcmllLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB2ZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgdGUgdmVyd2lqZGVyZW4gbWV0IGJlaHVscCB2YW4gZGUgR2VuZXJpZWtlIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgdmVyZWlzdGUgbWFjaHRpZ2luZ2VuIG9tIElUU00tY29uZmlndXJhdGllLWl0ZW1zIG9wIHRlIGhhbGVuIG1ldCBkZSBHZW5lcmlla2UgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB2ZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgdGUgZG9vcnpvZWtlbiBtZXQgYmVodWxwIHZhbiBkZSBHZW5lcmlla2UgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB2ZXJlaXN0ZSBtYWNodGlnaW5nZW4gb20gSVRTTS1jb25maWd1cmF0aWUtaXRlbXMgaW4gdGUgc3RlbGxlbiBtZXQgYmVodWxwIHZhbiBkZSBHZW5lcmlla2UgSW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGVlbiBvdmVyemljaHRzbW9kdWxlIG9tIGRlIGtsZWluZSB3ZWVyZ2F2ZSB2YW4gZWVuIGxpanN0IG1ldCBjb25maWd1cmF0aWUtaXRlbXMgd2VlciB0ZSBnZXZlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBvZiBkZSBsYWJlbHMgdmFuIGhldCBsaW5rdHlwZSBtb2V0ZW4gd29yZGVuIHdlZXJnZWdldmVuIGluIGRlIGtub29wcHVudHZlcmJpbmRpbmdlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgcmVndWxpZXJlIGV4cHJlc3NpZXMgYWZ6b25kZXJsaWprIHZvb3IgZWxrZSBDb25maWdJdGVtLWtsYXNzZSBvbSBkZSBDb25maWdJdGVtLW5hYW0gdGUgY29udHJvbGVyZW4gZW4gb3ZlcmVlbmtvbXN0aWdlIGZvdXRtZWxkaW5nZW4gd2VlciB0ZSBnZXZlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIGJlc2NoaWtiYXJlIGtvbG9tbWVuIHZhbiBDSXMgaW4gaGV0IGNvbmZpZyBpdGVtIG92ZXJ6aWNodCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kga2xhc3NlLiBFbGtlIGVudHJ5IG1vZXQgYmVzdGFhbiB1aXQgZWVuIGNsYXNzbmFhbSBlbiBlZW4gYXJyYXkgdmFuIGJlc2NoaWtiYXJlIHZlbGRlbiB2b29yIGRlIG92ZXJlZW5zdGVtbWVuZGUgY2xhc3MuIER5bmFtaXNjaGUgdmVsZHJlZ2VscyBtb2V0ZW4gaGV0IHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIHJlc3BlY3RlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBoZXQgc3RhbmRhYXJkIGNvbmZpZyBpdGVtIGF0dHJpYnV1dCB2b29yIGhldCBzb3J0ZXJlbiB2YW4gaGV0IGNvbmZpZyBpdGVtIHZhbiBoZXQgem9la3Jlc3VsdGFhdCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBoZXQgc3RhbmRhYXJkIGNvbmZpZyBpdGVtIGF0dHJpYnV1dCB2b29yIGNvbmZpZyBpdGVtIHNvcnRlcmluZyB2YW4gaGV0IGNvbmZpZyBpdGVtIHpvZWtyZXN1bHRhYXQgdmFuIGRlIGtsYW50ZW5pbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBoZXQgc3RhbmRhYXJkIGNvbmZpZyBpdGVtIGF0dHJpYnV1dCB2b29yIGhldCBzb3J0ZXJlbiB2YW4gaGV0IGNvbmZpZyBpdGVtIHpvZWtyZXN1bHRhYXQgdmFuIGRlemUgYmV3ZXJraW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSBzdGFuZGFhcmQgdm9sZ29yZGUgdmFuIGNvbmZpZyBpdGVtcyBpbiBoZXQgem9la3Jlc3VsdGFhdCB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLiBPbWhvb2c6IG91ZHN0ZSBib3ZlbmFhbi4gT21sYWFnOiBuaWV1d3N0ZSBib3ZlbmFhbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgc3RhbmRhYXJkIHZvbGdvcmRlIHZhbiBjb25maWcgaXRlbXMgaW4gaGV0IHpvZWtyZXN1bHRhYXQgdmFuIGRlIGtsYW50ZW5pbnRlcmZhY2UuIE9taG9vZzogb3Vkc3RlIGJvdmVuYWFuLiBPbWxhYWc6IG5pZXV3c3RlIGJvdmVuYWFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHN0YW5kYWFyZCB2b2xnb3JkZSB2YW4gY29uZmlndXJhdGllLWl0ZW1zIGluIGhldCB6b2VrcmVzdWx0YWF0IHZhbiBkZXplIGJld2Vya2luZy4gT21ob29nOiBvdWRzdGUgYm92ZW5hYW4uIE9tbGFhZzogbmlldXdzdGUgYm92ZW5hYW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHN0YW5kYWFyZCBnZXRvb25kZSBrb2xvbW1lbiB2YW4gQ0lzIGluIGhldCBjb25maWd1cmF0aWUtaXRlbSBvdmVyemljaHQsIGFmaGFua2VsaWprIHZhbiBkZSBDSSBrbGFzc2UuIEVsayBpdGVtIG1vZXQgYmVzdGFhbiB1aXQgZWVuIGNsYXNzbmFhbSBlbiBlZW4gYXJyYXkgdmFuIGJlc2NoaWtiYXJlIHZlbGRlbiB2b29yIGRlIG92ZXJlZW5zdGVtbWVuZGUgY2xhc3MuIER5bmFtaXNjaGUgdmVsZHJlZ2VscyBtb2V0ZW4gdm9sZG9lbiBhYW4gaGV0IHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdCZXBhYWx0IGRlIHN0YW5kYWFyZCB0ZSB0b25lbiByZWxhdGllZGllcHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGhldCBzdGFuZGFhcmQgZ2V0b29uZGUgY29uZmlnIGl0ZW0gem9la2tlbm1lcmsgdm9vciBoZXQgY29uZmlnIGl0ZW0gem9la3NjaGVybS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBnZXRvb25kZSBjb25maWcgaXRlbSB6b2Vra2VubWVyayB2b29yIGhldCBjb25maWcgaXRlbSB6b2Vrc2NoZXJtLiBWb29yYmVlbGQ6ICJLZXkiIG1vZXQgZGUgbmFhbSBoZWJiZW4gdmFuIGhldCBkeW5hbWlzY2hlIHZlbGQgaW4gZGl0IGdldmFsIFwnWFwnLCAiQ29udGVudCIgbW9ldCBkZSB3YWFyZGUgaGViYmVuIHZhbiBoZXQgZHluYW1pc2NoZSB2ZWxkIGFmaGFua2VsaWprIHZhbiBoZXQgZHluYW1pc2NoZSB2ZWxkdHlwZSwgVGV4dDogImVlbiB0ZWtzdCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGVuIG9mIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IHN0YW5kYWFyZCBzdWJvYmplY3QgdmFuIGRlIGtsYXNzZSBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIGJlc2NoaWtiYXJlIGtvbG9tbWVuIHZhbiBDSXMgaW4gaGV0IGNvbmZpZyBpdGVtIG92ZXJ6aWNodCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kga2xhc3NlLiBFbGtlIGVudHJ5IG1vZXQgYmVzdGFhbiB1aXQgZWVuIGNsYXNzbmFhbSBlbiBlZW4gYXJyYXkgdmFuIGJlc2NoaWtiYXJlIHZlbGRlbiB2b29yIGRlIG92ZXJlZW5zdGVtbWVuZGUgY2xhc3MuIER5bmFtaXNjaGUgdmVsZHJlZ2VscyBtb2V0ZW4gaGV0IHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lIHJlc3BlY3RlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdCZXBhYWx0IGRlIGhvb2d0ZSB2b29yIGRlIHJpY2ggdGV4dCBlZGl0b3Jjb21wb25lbnQgdm9vciBkaXQgc2NoZXJtLiBWb2VyIGVlbiBnZXRhbCAocGl4ZWxzKSBvZiBlZW4gcHJvY2VudHVlbGUgd2FhcmRlIChyZWxhdGllZikgaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgaGV0IGFhbnRhbCByaWplbiB2b29yIGRlIENJLWRlZmluaXRpZS1lZGl0b3IgaW4gZGUgYmVoZWVyaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHZvbGdvcmRlIHZhbiBkZSBpbmNpZGVudHRvZXN0YW5kZW4gdmFuIGhvb2cgKGJpanYuIGNyaWNpdGFhbCkgbmFhciBsYWFnIChiaWp2LiBmdW5jdGlvbmVlbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSByZWxldmFudGUgZGVwbG95bWVudCBzdGF0ZXMgd2FhciBnZWtvcHBlbGRlIHRpY2tldHMgZGUgc3RhdHVzIHZhbiBlZW4gQ0kga3VubmVuIGJlw69udmxvZWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHpvZWtsaW1pZXQgdm9vciBoZXQgc2NoZXJtIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZWVydCBkZSB6b2VrbGltaWV0IHZvb3IgaGV0IHNjaGVybSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgem9la2xpbWlldCB2b29yIGhldCBzY2hlcm0gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIHpvZWtsaW1pZXQgdm9vciBoZXQgc2NoZXJtIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgZGUgZ2V0b29uZGUga29sb21tZW4gdmFuIENJXCdzIGluIGRlIGtvcHBlbHRhYmVsIGNvbXBsZXhlIHdlZXJnYXZlIHZvb3IgYWxsZSBDSS1rbGFzc2VuLiBBbHMgZXIgZ2VlbiBpbnZvZXIgaXMsIGRhbiB3b3JkZW4gZGUgc3RhbmRhYXJkIGtvbG9tbWVuIGdldG9vbmQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmllZXJ0IGRlIGdldG9vbmRlIGtvbG9tbWVuIHZhbiBDSXMgaW4gZGUgbGlua3RhYmVsIGNvbXBsZXhlIHdlZXJnYXZlLCBhZmhhbmtlbGlqayB2YW4gZGUgQ0kta2xhc3NlLiBFbGsgaXRlbSBtb2V0IHZvb3JhZmdlZ2FhbiB3b3JkZW4gZG9vciBkZSBuYWFtIHZhbiBkZSBrbGFzc2UgZW4gZHViYmVsZSBkdWJiZWxlIHB1bnRlbiAoYnYuIENvbXB1dGVyOjopLiBFciB6aWpuIGVlbiBwYWFyIENJLWF0dHJpYnV0ZW4gZGllIGdlbWVlbnNjaGFwcGVsaWprIHppam4gdm9vciBhbGxlIENJXCdzICh2b29yYmVlbGQgdm9vciBkZSBrbGFzc2UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIE9tIGluZGl2aWR1ZWxlIENJLUF0dHJpYnV0ZW4gdGUgdG9uZW4gem9hbHMgZ2VkZWZpbmllZXJkIGluIGRlIENJLWRlZmluaXRpZSwgbW9ldCBoZXQgdm9sZ2VuZGUgc2NoZW1hIGdlYnJ1aWt0IHdvcmRlbiAodm9vcmJlZWxkIHZvb3IgZGUga2xhc3NlIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXRlaXQ6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0ZWl0OjoxLiBBbHMgZXIgZ2VlbiBpbnZvZXIgaXMgdm9vciBlZW4gQ0kta2xhc3NlLCBkYW4gd29yZGVuIGRlIHN0YW5kYWFyZGtvbG9tbWVuIHdlZXJnZWdldmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgd2Vsa2UgaXRlbXMgYmVzY2hpa2JhYXIgemlqbiB2b29yIFwnQWN0aWVcJyBvcCBoZXQgZGVyZGUgbml2ZWF1IHZhbiBkZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5pZWVydCB3ZWxrZSBpdGVtcyBiZXNjaGlrYmFhciB6aWpuIGluIGhldCBlZXJzdGUgbml2ZWF1IHZhbiBkZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1dXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVlcnQgd2Vsa2UgaXRlbXMgYmVzY2hpa2JhYXIgemlqbiBpbiBoZXQgdHdlZWRlIG5pdmVhdSB2YW4gZGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IHdlbGsgdHlwZSBsaW5rIChnZW5vZW1kIHZhbnVpdCBoZXQgdGlja2V0cGVyc3BlY3RpZWYpIGRlIHN0YXR1cyB2YW4gZWVuIGdla29wcGVsZGUgQ0kga2FuIGJlw69udmxvZWRlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllZXJ0IHdlbGsgdHlwZSB0aWNrZXQgZGUgc3RhdHVzIHZhbiBlZW4gZ2Vrb3BwZWxkZSBDSSBrYW4gYmXDr252bG9lZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0RlZmluaXRpZSBiaWp3ZXJrZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NvbmZpZ3VyYXRpZS1pdGVtIHZlcndpamRlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnS2xldXIgdmFuIGRlIGluemV0c3RhdHVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNlcmVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkIGV2ZW50IG1vZHVsZSBkaWUgY29uZmlnIGl0ZW0gZGVmaW5pdGllcyBtYXJrZWVydCBhbHMgbmlldCBnZXN5bmNocm9uaXNlZXJkLCBhbHMgZGUgZHluYW1pc2NoZSB2ZWxkZW4gZGllIGhldCBiZXZhdCB2ZXJhbmRlcmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkZW4gZGllIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgZXh0cmEgSVRTTS12ZWxkc2NoZXJtIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2NoZSB2ZWxkZW4gZGllIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBoZXQgc2NoZXJtIENvbmZpZyBpdGVtb3ZlcnppY2h0IHZhbiBkZSBrbGFudGVuaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlzY2hlIHZlbGRlbiBkaWUgd29yZGVuIHdlZXJnZWdldmVuIGluIGhldCB6b2Vrc2NoZXJtIHZvb3IgY29uZmlnIGl0ZW1zIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnTWFha3QgYnVsa2FjdGllIHZvb3IgY29uZmlndXJhdGllLWl0ZW1zIG1vZ2VsaWprLCB6b2RhdCBkZSBhZ2VudCBmcm9udGVuZCBhYW4gbWVlciBkYW4gw6nDqW4gY29uZmlndXJhdGllLWl0ZW0gdGVnZWxpamsga2FuIHdlcmtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1NjaGFrZWx0IGRlIGZ1bmN0aWUgYnVsa2FjdGllIHZvb3IgY29uZmlndXJhdGllLWl0ZW1zIGFsbGVlbiBpbiB2b29yIGRlIHZlcm1lbGRlIGdyb2VwZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1NjaGFrZWx0IGRlIGZ1bmN0aW9uYWxpdGVpdCBpbiBvZiB1aXQgb20gSVRTTSBvbmZpZ3VyYXRpZSBpdGVtcyB0ZSBjb250cm9sZXJlbiBvcCB1bmlla2UgbmFtZW4uIFZvb3JkYXQgamUgZGV6ZSBvcHRpZSBpbnNjaGFrZWx0LCBtb2V0IGplIGplIHN5c3RlZW0gY29udHJvbGVyZW4gb3AgYmVzdGFhbmRlIGNvbmZpZ3VyYXRpZS1pdGVtcyBtZXQgZHViYmVsZSBuYW1lbi4gSmUga3VudCBkaXQgZG9lbiBtZXQgaGV0IGNvbnNvbGUgY29tbWFuZG8gQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdHZWJldXJ0ZW5pc21vZHVsZSBvbSBjb25maWdpdGVtLXN0YXR1cyBpbiB0ZSBzdGVsbGVuIG9wIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ1ZlbGRlbiB2YW4gZGUgY29uZmlndXJhdGllLWl0ZW1pbmRleCwgZ2VicnVpa3Qgdm9vciBoZXQgem9la2VuIGluIGRlIHZvbGxlZGlnZSB0ZWtzdC4gVmVsZGVuIHdvcmRlbiBvb2sgb3BnZXNsYWdlbiwgbWFhciB6aWpuIG5pZXQgdmVycGxpY2h0IHZvb3IgZGUgYWxnZW1lbmUgZnVuY3Rpb25hbGl0ZWl0LiBIZXQgb3BuZW1lbiB2YW4gYmlqbGFnZW4ga2FuIHdvcmRlbiB1aXRnZXNjaGFrZWxkIGRvb3IgaGV0IGl0ZW0gb3AgMCB0ZSB6ZXR0ZW4gb2YgdGUgdmVyd2lqZGVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICdWZWxkZW4gZGllIHppam4gb3BnZXNsYWdlbiBpbiBkZSBpbmRleCB2YW4gaGV0IGNvbmZpZ3VyYXRpZS1pdGVtIGVuIGRpZSB3b3JkZW4gZ2VicnVpa3Qgdm9vciBhbmRlcmUgZGluZ2VuIGRhbiB6b2VrZW4gaW4gZGUgdm9sbGVkaWdlIHRla3N0LiBWb29yIGRlIHZvbGxlZGlnZSBmdW5jdGlvbmFsaXRlaXQgemlqbiBhbGxlIHZlbGRlbiB2ZXJwbGljaHQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnVm9vciBlbGtlIHdlYnNlcnZpY2UgKGtleSkga2FuIGVlbiBhcnJheSB2YW4ga2xhc3NlbiAodmFsdWUpIHdvcmRlbiBnZWRlZmluaWVlcmQgd2Fhcm9wIGRlIGltcG9ydCB3b3JkdCBiZXBlcmt0LiBWb29yIGFsbGUgZ2Vrb3plbiBrbGFzc2VuLCBvZiBhbGxlIGJlc3RhYW5kZSBrbGFzc2VuIG1vZXRlbiBkZSBpZGVudGlmaWNlcmVuZGUgYXR0cmlidXRlbiB3b3JkZW4gZ2Vrb3plbiBpbiBkZSBjb25maWcgdmFuIGRlIGludm9rZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlcmVnaXN0cmF0aWUgdm9vciBkZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYWFnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlcmVnaXN0cmF0aWUgdm9vciBkZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYWFnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdHZW5lcmljSW50ZXJmYWNlIG1vZHVsZXJlZ2lzdHJhdGllIHZvb3IgZGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGFhZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnT3ZlcnppY2h0IHZhbiBJVFNNLWNvbmZpZ3VyYXRpZS1pdGVtcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbXZhdCBkZXBsb3ltZW50IHN0YXRlcyBpbiBoZXQgem9la2VuIG5hYXIgY29uZmlndXJhdGllLWl0ZW1zIGluIGRlIGtsYW50ZW5pbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1c2llZiBpbmNpZGVudHRvZXN0YW5kZW4gaW4gaGV0IHpvZWtlbiBuYWFyIGNvbmZpZ3VyYXRpZXMgaW4gZGUga2xhbnRlbmludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWF4aW11bWFhbnRhbCBjb25maWd1cmF0aWUtaXRlbXMgZGF0IG1vZXQgd29yZGVuIHdlZXJnZWdldmVuIGluIGhldCByZXN1bHRhYXQgdmFuIGRlemUgYmV3ZXJraW5nLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsZSBvbSBkZSBncm9lcCB0ZSBjb250cm9sZXJlbiBkaWUgdmVyYW50d29vcmRlbGlqayBpcyB2b29yIGVlbiBrbGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSBvbSBkZSBncm9lcCB0ZSBjb250cm9sZXJlbiBkaWUgdmVyYW50d29vcmRlbGlqayBpcyB2b29yIGVlbiBjb25maWd1cmF0aWUtaXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bGUgdm9vciBoZXQgZ2VuZXJlcmVuIHZhbiBJVFNNLWNvbmZpZ3VyYXRpZXN0YXRpc3RpZWtlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOYWFtIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtbWVyIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBYW50YWwgY29uZmlndXJhdGllLWl0ZW1zIGRhdCBtb2V0IHdvcmRlbiB3ZWVyZ2VnZXZlbiBvcCBlbGtlIHBhZ2luYSB2YW4gZWVuIHpvZWtyZXN1bHRhYXQgaW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FhbnRhbCBjb25maWd1cmF0aWUtaXRlbXMgZGF0IG1vZXQgd29yZGVuIHdlZXJnZWdldmVuIG9wIGVsa2UgcGFnaW5hIHZhbiBlZW4gem9la3Jlc3VsdGFhdCBpbiBkZSBrbGFudGVuaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICdPYmplY3RlbiB3YWFybmFhciBnZXpvY2h0IG1vZXQgd29yZGVuLCBob2V2ZWVsIGl0ZW1zIGVuIHdlbGtlIGF0dHJpYnV0ZW4gZ2V0b29uZCBtb2V0ZW4gd29yZGVuLiBDb25maWdJdGVtLWF0dHJpYnV0ZW4gbW9ldGVuIGV4cGxpY2lldCB3b3JkZW4gb3BnZXNsYWdlbiB2aWEgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnT3ZlcnppY2h0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIGNhdGVnb3JpZcOrbiB2b29yIGNvbmZpZyBpdGVtIGtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbiB3ZWVyZ2F2ZSB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSBrb2xvbWZpbHRlcnMgdmFuIGhldCBrbGVpbmUgY29uZmlndXJhdGllLWl0ZW1vdmVyemljaHQuIExldCBvcDogYWxzIGplIFwnQWN0aWVmXCcgb3AgMCB6ZXQsIGt1bm5lbiBhZ2VudHMgYWxsZWVuIGRlIGluc3RlbGxpbmdlbiB2YW4gZGV6ZSBncm9lcCBuaWV0IGJld2Vya2VuIGluIGh1biBwZXJzb29ubGlqa2Ugdm9vcmtldXJlbiwgbWFhciBrdW5uZW4gYmVoZWVyZGVycyB3ZWwgZGUgaW5zdGVsbGluZ2VuIHZhbiBlZW4gYW5kZXJlIGdlYnJ1aWtlciBiZXdlcmtlbi4gR2VicnVpayBcJ1ByZWZlcmVuY2VHcm91cFwnIG9tIHRlIGJlcGFsZW4gaW4gd2VsayBnZWJpZWQgZGV6ZSBpbnN0ZWxsaW5nZW4gbW9ldGVuIHdvcmRlbiB3ZWVyZ2VnZXZlbiBpbiBkZSBnZWJydWlrZXJzaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIGluemV0c3RhdHVzc2VuIGtsZXVyZW4gaW4gZGUgdm9vcmtldXJlbndlZXJnYXZlIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgaW56ZXRzdGF0dXNzZW4gaW4gZGUgdm9vcmtldXJlbndlZXJnYXZlIHZhbiBkZSBhZ2VudGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIHZvb3JiZWVsZCBwZXJpbXNzaWVncm9lcGVuIHZhbiBkZSBhbGdlbWVuZSBjYXRhbG9nIGF0dHJpYnV0ZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIG5hYW1tb2R1bGUgdm9vciBjb25maWcgaXRlbSBrbGFzc2VuIGluIGRlIHZvb3JrZXVyZW53ZWVyZ2F2ZSB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldGVycyB2b29yIGRlIG51bW1lcm1vZHVsZSB2b29yIGNvbmZpZyBpdGVta2xhc3NlbiBpbiBkZSB2b29ya2V1cmVud2VlcmdhdmUgdmFuIGRlIGFnZW50aW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0ZXJzIHZvb3IgZGUgcGFnaW5hXCdzICh3YWFyb3AgZGUgY29uZmlndXJhdGllLWl0ZW1zIHdvcmRlbiB3ZWVyZ2VnZXZlbikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSB2ZXJzaWUgc3RyaW5nIG1vZHVsZSB2b29yIGNvbmZpZyBpdGVtIGtsYXNzZW4gaW4gZGUgdm9vcmtldXJlbiB3ZWVyZ2F2ZSB2YW4gZGUgYWdlbnQgaW50ZXJmYWNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSB2ZXJzaWUgc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIHZvb3IgY29uZmlnIGl0ZW0ga2xhc3NlbiBpbiBkZSB2b29ya2V1cmVuIHdlZXJnYXZlIHZhbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRlcnMgdm9vciBkZSB2ZXJzaWVhY3RpdmVyaW5nIHZvb3IgY29uZmlnIGl0ZW1rbGFzc2VuIGluIGRlIHZvb3JrZXVyZW53ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnVm9lcnQgZGUgZ2Vjb25maWd1cmVlcmRlIGFjdGllIHVpdCB2b29yIGVsa2UgZ2ViZXVydGVuaXMgKGFscyBJbnZva2VyKSB2b29yIGVsa2UgZ2Vjb25maWd1cmVlcmRlIHdlYnNlcnZpY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzaWUgZ3JvZXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGVlbiBsaW5rIGluIGhldCBtZW51IG9tIGVlbiBjb25maWd1cmF0aWUtaXRlbSBhZiB0ZSBkcnVra2VuIGluIGRlIHpvb213ZWVyZ2F2ZSB2YW4gZGUgYWdlbnRpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVG9vbnQgZWVuIGxpbmsgaW4gaGV0IG1lbnUgb20gaW4gdGUgem9vbWVuIG9wIGVlbiBjb25maWd1cmF0aWUtaXRlbSBpbiBoZXQgY29uZmlndXJhdGllLWl0ZW1vdmVyemljaHQgdmFuIGRlIGFnZW50IGludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Rvb250IGRlIGNvbmZpZyBpdGVtIGdlc2NoaWVkZW5pcyAob21nZWtlZXJkIGdlb3JkZW5kKSBpbiBkZSBhZ2VudCBpbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0RlIHN0YW5kYWFyZGNhdGVnb3JpZSBkaWUgd29yZHQgd2VlcmdlZ2V2ZW4gYWxzIGVyIGdlZW4gaXMgZ2VzZWxlY3RlZXJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnRGUgaWRlbnRpZmllciB2b29yIGVlbiBjb25maWd1cmF0aWUtaXRlbSwgYmlqdi4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIERlIHN0YW5kYWFyZHdhYXJkZSBpcyBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1RyaWdnZXJ0IGF1dG9tYXRpc2NoIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnVmVyc2llIFN0cmluZyBVaXRkcnVra2luZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzaWUgU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdWZXJzaWUgdHJla2tlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnT2YgaGV0IHVpdHZvZXJlbiB2YW4gQ29uZmlnSXRlbUFDTCB2ZXJtZWRlbiBrYW4gd29yZGVuIGRvb3IgdmVsZGFmaGFua2VsaWpraGVkZW4gaW4gZGUgY2FjaGUgdGUgY29udHJvbGVyZW4uIERpdCBrYW4gZGUgbGFhZHRpamQgdmFuIGZvcm11bGllcmVuIHZlcmJldGVyZW4sIG1hYXIgbW9ldCB1aXRnZXNjaGFrZWxkIHdvcmRlbiBhbHMgQUNMTW9kdWxlcyBnZWJydWlrdCBtb2V0ZW4gd29yZGVuIHZvb3IgSVRTTUNvbmZpZ0l0ZW0tIGVuIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdXZWxrZSBhbGdlbWVuZSBpbmZvcm1hdGllIHdvcmR0IHdlZXJnZWdldmVuIGluIGRlIGtvcHRla3N0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNzZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICd3ZXJlbGR3aWpkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1Y3RpZWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3ByZXByb2R1Y3RpZWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1Y3RpZWYnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgaW5jaCAoNDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDUzLDM0IGNtICgyMSBpbmNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBpbmNoICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IGluY2ggKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS1pbmNoIHJlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiA4OCw5IGNtICgzNSBpbmNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1pbmNoIHJlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgaW5jaCAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLWluY2ggcmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBpbmNoICg2MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJ30gPSAnMjRVOiA0MiBpbmNoICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBpbmNoICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiAzLDUgaW5jaCAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBpbmNoICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBpbmNoICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBpbmNoICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBpbmNoICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBpbmNoICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgaW5jaCAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDE3MywzNSBjbSAoNjgsMjUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogMTMsMzQgY20gKDUsMjUgaW5jaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBpbmNoICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIGluY2ggKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSBpbmNoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIGluY2ggKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiAyMTMsMzYgY20gKDg0IGluY2gpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgaW5jaCAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUgaW5jaCAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgaW5jaCAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBpbmNoICgzMSwxMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IGluY2ggKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgaW5jaCAoNDAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQm9la2hvdWRpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBZHJlc3RvZXdpanppbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0JlaGVlcmRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2dlIHRlbGVmb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwZSBhcHBhcmFhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ0FjY3VjYXBhY2l0ZWl0IChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnQmF0dGVyaWp0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnR2Vib3V3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdCdXNpbnRlcmZhY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUta2xhc3NlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICdDYXBhY2l0ZWl0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdDYXBhY2l0ZWl0IHBlciBncmFmaXNjaGUga2FhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLYWFydG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0thYXJ0bGV6ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnS2FhcnR0eXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdLbGFudGNlcnRpZmljYXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSB2b29yIGtsYW50ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnQ2F0ZWdvcmllIGtsYW50ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnS2xva3NuZWxoZWlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdLbG9rc25lbGhlaWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NvZGUgb25kZXJ0ZWtlbmVuZGUgY2VydGlmaWNhdGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdDb25mZXJlbnRpZXRlbGVmb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQWR2aWVzb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdOZWVtIGNvbnRhY3Qgb3AgbWV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdOZWVtIGNvbnRhY3Qgb3AgbWV0IGRpc3RyaWJ1dGV1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0JlaGVlciB2YW4gY29udGFpbmVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ0NvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXBlIGNvbnRyYWN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnQ29udHJhY3RwZXJpb2RlIHZhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdDb250cmFjdHBlcmlvZGUgdG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0RyYWFkbG96ZSB0ZWxlZm9vbiAoREVDVC10ZWxlZm9vbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnS29zdGVuZWVuaGVpZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ0FhbnRhbCBsaWNlbnRpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0Fhbm1hYWtkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnUmVrIG9wIG1hYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgR2VyZXNlcnZlZXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdETlMtc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEYXR1bSBmYWN0dXVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXR1bSBiZXN0ZWxsaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXR1bSB2YW4gZ2FyYW50aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0dW0gdmFuIHVpdGdhdmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ0Rlc2t0b3AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYXRlbiB2b29yIGRvY3VtZW50b25kZXJ0ZWtlbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0ktcmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLW1haWxjZXJ0aWZpY2F0ZW4gKFMvTUlNRS1jZXJ0aWZpY2F0ZW4pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ0FyYmVpZHNvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdJUC1hZHJlcyBlaW5kZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0VpbmRlIG9uZGVyc3RldW5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdWZXJ2YWxkYXR1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuZSBoYXJkZSBzY2hpamYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm13YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnVmxpZWd3aWVsIEVuZXJnaWVvcHNsYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdWb3JtZmFjdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2VvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdGcmVld2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdBbGdlbWVuZSBpbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnR3JhZmlzY2hlIGthYXJ0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpc2NoZSBrYWFydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnSGFyZHdhcmVtb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdHZXdpY2h0IGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdIb29mZHRlbGVmb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAtcHJvdG9jb2wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnSWRlbnRpdGVpdHMtIGVuIHRvZWdhbmdzYmVoZWVyIChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnRhcmlzbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnSW52ZXJzdGVyaW5nc2tvc3Rlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJ0ZhY3R1dXJudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUb2V0c2VuYm9yZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QtbW9uaXRvciAodmxvZWliYWFyLWtyaXN0YWxzY2hlcm0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdMRUQtbW9uaXRvciAobGljaHRlbWl0dGVyZW5kZSBkaW9kZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnVmFzdGUgdGVsZWZvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnQnJlZWR0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xhYWcgMTogRnlzaWVrZSBsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0xhYWcgMjogRGF0YWxpbmtsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdMYWFnIDM6IG5ldHdlcmtsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xhYWcgMzogbmV0d2Vya2xhYWcgKFN1cGVybmV0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICdMYWFnIDQ6IFRyYW5zcG9ydGxhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xhYWcgNTogU2Vzc2llbGFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICdMYWFnIDY6IFByZXNlbnRhdGllbGFhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0xhYWcgNzogVG9lcGFzc2luZ3NsYWFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ0h1dXJvdmVyZWVua29tc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBBZ3JlZW1lbnQnfSA9ICdMaWNlbnRpZW92ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAnTGljZW50aWVzbGV1dGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ0xpY2VudGllIFR5cGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ0xpY2VudGllcGVyaW9kZSB2YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICdMaWNlbnRpZXBlcmlvZGUgdG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXRoaXVtLWlqemVyZm9zZmFhdGJhdHRlcmlqIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aGl1bS1Jb24gKExpLWlvbikgYmF0dGVyaWonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdMZW5pbmdzb3ZlcmVlbmtvbXN0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICdHZXZlc3RpZ2QgaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTGVuZ3RlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnRmFicmlrYW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdNYXhpbWFhbCBkcmFhZ3Zlcm1vZ2VuIChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdHZWhldWdlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ1R5cGUgZ2VoZXVnZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmktUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAnTW9iaWVsIG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpZWwgaW5nZWJlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAnTW9kZWwgQmVzY2hyaWp2aW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3JyZXNvbHV0aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnQWZtZXRpbmcgbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ011aXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ05ldHdlcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnTmV0d2VyayBpbmZvcm1hdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdOZXR3ZXJraW5mb3JtYXRpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnTmV0d2Vya2xhYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtrZWwtY2FkbWl1bWJhdHRlcmlqIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pa2tlbG1ldGFhbGh5ZHJpZGUgKE5pTUgpIGJhdHRlcmlqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJ0dlaGVpbWhvdWRpbmdzb3ZlcmVlbmtvbXN0IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90ZWJvb2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdBYW50YWwgQ1BVXCdzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ0FhbnRhbCBSQU0tbW9kdWxlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdBYW50YWwgZ3JhZmlzY2hlIGthYXJ0ZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQtbW9uaXRvciAob3JnYW5pc2NoZSBsaWNodGVtaXR0ZXJlbmRlIGRpb2RlKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdCZWRyaWpmc2tvc3Rlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdCZXN0ZWxudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdmVyaWdlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICdVaXRnYW5nZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnUElOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNjaGFwc292ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJ1RlbGVmb29ubnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUZWxlZm9vbiBUeXBlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnRnlzaWVrZSBrZXJuZW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdTdHJvb212b29yemllbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0dla29jaHQgYmlqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdEaWVwdGUgcmVrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnRWVuaGVkZW4gcmVrIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAnS2FtZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0ta2FhcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdTU0wvVExTLWNlcnRpZmljYXRlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1Zlcmtvb3Bjb250cmFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpZXQgdGVsZWZvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnVmVyemVnZWxkZSBsb29kenV1cmJhdHRlcmlqIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAnU2VyaWVudW1tZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAnU2VydmVyIFNvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU2VydmljZW92ZXJlZW5rb21zdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ1NlcnZpY2V0YWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwZSBzdG9wY29udGFjdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnTHVpZHNwcmVrZXJzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYWFyZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnU3RhcnQgSVAtYWRyZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ09wc2xhZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlIFBhcnRpdGlvbid9ID0gJ09wc2xhZ3BhcnRpdGllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRG9jaHRlcm9uZGVybmVtaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTYW1lbnZhdHRpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdUaGluIENsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnRHJhZGVuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvdGFhbCBSQU0tZ2VoZXVnZW4gZ3JhZmlzY2hlIGthYXJ0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdUb3RhYWwgUkFNLWdlaGV1Z2VuIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJ1RvdWNoc2NyZWVuIG1vbml0b3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3Jlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLWh1Yic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLWtvcHRlbGVmb29uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAtdGVsZWZvb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/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+eydSdW4gU2VhcmNoJ30gPSAnVXJ1Y2hvbSB3eXN6dWtpd2FuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnVXd6Z2zEmWRuacSHIHBvcHJ6ZWRuaWUgd2Vyc2plPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3IGRsYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnUG96aW9tIGfFgsSZYm9rb8WbY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQb3dpxJlrc3phbmllL3VzdXdhbmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ09zacSFZ25pxJl0byBtYWtzeW1hbG55IHBvemlvbSBsaW5rw7N3IGRsYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0NJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWFjamUgbyBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdBa3R1YWxueSBzdGFuIHdkcm/FvGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0FrdHVhbG55IHN0YW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnT3N0YXRuaW8gem1pZW5pb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ09zdGF0bmlvIHptaWVuaW9uZSBwcnpleic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ0VsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICdXeXN6dWtpd2FuaWUgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ1phaW1wb3J0b3dhbmUgem9zdGFuxIUgbmFzdMSZcHVqxIVjZSBrbGFzeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdaYWltcG9ydG93YW5lIHpvc3RhbsSFIG5hc3TEmXB1asSFY2Ugcm9sZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICdOYWxlxbx5IHBhbWnEmXRhxIcsIMW8ZSB6b3N0YW7EhSByw7N3bmllxbwgdXR3b3J6b25lIG9kcG93aWVkbmllIHBvbGEgZHluYW1pY3puZSBpIGtsYXN5IEdlbmVyYWxDYXRhbG9nLCBrdMOzcmUgbmllIHpvc3RhbsSFIGF1dG9tYXR5Y3puaWUgdXN1bmnEmXRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0N6eSBjaGNlc3oga29udHludW93YcSHPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdOZWVkIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdEZWZpbmljamEgbmllIGplc3QgcHJhd2lkxYJvd3ltIGhhc2hlbSBZQU1MLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1ByemVnbMSFZDogSVRTTSBDb25maWdJdGVtJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pZSBwb2Rhbm8gaWRlbnR5ZmlrYXRvcmEgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1BvdHJ6ZWJueSBqZXN0IGNvIG5ham1uaWVqIGplZGVuIHd5YnJhbnkgZWxlbWVudCBrb25maWd1cmFjamkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnTmllIG1hc3ogZG9zdMSZcHUgZG8gemFwaXN1IHRlZ28gZWxlbWVudHUga29uZmlndXJhY2ppOiAlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnTmllIHpkZWZpbmlvd2FubyBkZWZpbmljamkgZGxhIGtsYXN5ICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnRWxlbWVudCBrb25maWd1cmFjamkgIiVzIiBuaWUgem9zdGHFgiB6bmFsZXppb255IHcgYmF6aWUgZGFueWNoISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ05pZSB1ZGHFgm8gc2nEmSB1c3VuxIXEhyBlbGVtZW50dSBrb25maWd1cmFjamkgSUQgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICdOaWUgem5hbGV6aW9ubyB3ZXJzamkgZGxhIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIHBvZGFubyBpZGVudHlmaWthdG9yYSBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGFuaSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnQnJhayBkb3N0xJlwdSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIG1vxbxuYSB3ecWbd2lldGxpxIcgaGlzdG9yaWksIG5pZSBwb2Rhbm8gaWRlbnR5ZmlrYXRvcmEgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05pZSBtb8W8bmEgd3nFm3dpZXRsacSHIGhpc3RvcmlpLCBuaWUgcG9kYW5vIHByYXcgZG9zdMSZcHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICdOb3d5IGVsZW1lbnQga29uZmlndXJhY2ppIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ05vd2Egd2Vyc2phIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdaYWt0dWFsaXpvd2FubyBzdGFuIHdkcm/FvGVuaWEgKG5vd3k9JXMsIHN0YXJ5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdaYWt0dWFsaXpvd2FubyBzdGFuIGluY3lkZW50dSAobm93eT0lcywgc3Rhcnk9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnVXN1bmnEmXRvIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0RvZGFubyBsaW5rIGRvICVzICh0eXBlPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnTGluayBkbyAlcyAodHlwZT0lcykgdXN1bmnEmXR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICdaYWt0dWFsaXpvd2FubyBkZWZpbmljasSZIENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ05hendhIHpha3R1YWxpem93YW5hIChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJ5YnV0ICVzIHpha3R1YWxpem93YW55IHogIiVzIiBkbyAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1dlcnNqYSAlcyB1c3VuacSZdGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIHBvZGFubyBpZGVudHlmaWthdG9yYSBDb25maWdJdGVtSUQgbHViIFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmllIG1vxbxuYSB3ecWbd2lldGxpxIcgZWxlbWVudHUga29uZmlndXJhY2ppLCBuaWUgcG9kYW5vIHByYXcgZG9zdMSZcHUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIG5pZSB6b3N0YcWCIHpuYWxlemlvbnkgdyBiYXppZSBkYW55Y2ghJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnd3lkcnVrb3dhbnkgcHJ6ZXogJXMgdyAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUG9kcG93aWVkemknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOaWVwcmF3aWTFgm93eSBpZGVudHlmaWthdG9yIENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIHBvZGFubyBpZGVudHlmaWthdG9yYSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05pZSBwcnp5em5hbm8gcHJhdyBkb3N0xJlwdSBkbGEgdGVqIGtsYXN5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAnQnJhayBXeW5pa8OzdyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdXeW5pa2kgd3lzenVraXdhbmlhIHBvenljamkga29uZmlndXJhY2ppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICdOaWUgbW/FvG5hIHd5xZt3aWV0bGnEhyBlbGVtZW50dSwgbmllIHBvZGFubyBwcmF3IGRvc3TEmXB1IGRvIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ05pZSB6bmFsZXppb25vIGVsZW1lbnR1IENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ05pZSB6bmFsZXppb25vIMW8YWRueWNoIHdlcnNqaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYWN5am55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdvc3RyemXFvGVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmN5ZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhbiB3ZHJvxbxlbmlhIHRlZ28gQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGFuIHpkYXJ6ZW5pYSB0ZWdvIENJJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnQnJhayB1cHJhd25pZcWEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRyIG5pZXByYXdpZMWCb3d5ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnUGFyYW1ldHJ5IHd5c3p1a2l3YW5pYSBzxIUgbmllcHJhd2lkxYJvd2UhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAnV3nFm3dpZXRsYW5lIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXAgc3RhbnUgd2Ryb8W8ZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdBa3R1YWxueSB0eXAgc3RhbnUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnUG9tacSZZHp5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdPZ3JhbmljemVuaWEga2xhc3kgZGxhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnV3liaWVyeiBqZWRuxIUgbHViIHdpxJljZWoga2xhcywgYWJ5IG9ncmFuaWN6ecSHIHd5YmllcmFuZSBlbGVtZW50eSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09ncmFuaWN6ZW5pYSBrbGFzeSBkbGEgZWxlbWVudHUga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnV3liaWVyeiBqZWRuxIUgbHViIHdpxJljZWoga2xhcywgYWJ5IG9ncmFuaWN6ecSHIHd5YmllcmFuZSBlbGVtZW50eSBrb25maWd1cmFjamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEeW5hbWljem55IChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAnU3RhdGljICh3ZXJzamEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1R5cCBvZG5vxZtuaWthJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBjenkgcG93acSFemFuaWUgZG90eWN6eSBDb25maWdJdGVtLCBjenkgc3RhdHljem5laiB3ZXJzamkgb2JpZWt0dSBvZG5pZXNpZW5pYS4gT2JsaWN6YW5pZSBiaWXFvMSFY2VnbyBzdGFudSBpbmN5ZGVudHUgamVzdCB3eWtvbnl3YW5lIHR5bGtvIHcgcHJ6eXBhZGt1IMWCxIVjenkgZHluYW1pY3pueWNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1d5YmllcnogYXRyeWJ1dCwgd2VkxYJ1ZyBrdMOzcmVnbyBixJlkxIUgd3lzenVraXdhbmUgZWxlbWVudHkga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICdTdHJ1a3R1cmEgYmF6b3dhIGplc3QgbmllcHJhd2lkxYJvd2EuIFBvZGFqIGhhc2ggeiBkYW55bWkgdyBmb3JtYWNpZSBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ1d5bWFnYW5lIGplc3Qgcm96cG9jesSZY2llIGNpxIVndSBZQU1MIG9kICItLS0iLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOaWUgbW/FvG5hIHd5Y3p5xZtjacSHIHRhYmVsaSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOaWUgem5hbGV6aW9ubyBvZHBvd2llZG5pY2ggcMOzbCBkeW5hbWljem55Y2gnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdOaWUgbW/FvG5hIHdzdGF3acSHIGRvIHRhYmVsaSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ1dzdGF3aW9ubyAwIHdpZXJzenkgZG8gdGFiZWxpIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYWtzeW1hbG5hIGxpY3piYSB3eXN0xIVwaWXFhCBwb2plZG55Y3plZ28gZWxlbWV0bnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ0NpxIVnIHpuYWvDs3cgd2Vyc2ppJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0LFgsSFZCBzeW5jaHJvbml6YWNqaSBkZWZpbmljamkuIFNwcmF3ZMW6IGR6aWVubmlrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ01hc3ogZGVmaW5pY2plIElUU01Db25maWdJdGVtLCBrdMOzcmUgbmllIHPEhSB6c3luY2hyb25pem93YW5lLiBOYWxlxbx5IHdkcm/FvHnEhyB6bWlhbnkgcG9sYSBkeW5hbWljem5lZ28gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdXeWdhc8WCbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ1V0cnp5bWFuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdGHFvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbm93YW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ05hcHJhd2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1d5Y29mYW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1ByemVnbMSFZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUHJ6ZWdsxIVkIGkgcG90d2llcmR6ZW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRvd2FuaWUga2xhcy9yw7NsIGkgcG93acSFemFueWNoIHogbmltaSBww7NsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnV3lzdMSFcGnFgiBixYLEhWQgcG9kY3phcyBpbXBvcnRvd2FuaWEga2xhc3kuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBVa3J5dHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIHBva2F6YW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvGxpd2lhIHJvenN6ZXJ6b25lIHdhcnVua2kgd3lzenVraXdhbmlhIHcgaW50ZXJmZWpzaWUgYWdlbnRhLiBEemnEmWtpIHRlaiBmdW5rY2ppIG1vxbxuYSB3eXN6dWtpd2HEhyBucC4gbmF6d8SZIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB6YSBwb21vY8SFIHRlZ28gcm9kemFqdSB3YXJ1bmvDs3csIHRha2ljaCBqYWsgIigqa2V5MSomJiprZXkyKikiIGx1YiAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Vtb8W8bGl3aWEgcm96c3plcnpvbmUgd2FydW5raSB3eXN6dWtpd2FuaWEgdyBpbnRlcmZlanNpZSBrbGllbnRhLiBEemnEmWtpIHRlaiBmdW5rY2ppIG1vxbxuYSB3eXN6dWtpd2HEhyBucC4gbmF6d8SZIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB6YSBwb21vY8SFIHRlZ28gcm9kemFqdSB3YXJ1bmvDs3csIHRha2ljaCBqYWsgIigqa2V5MSomJiprZXkyKikiIGx1YiAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1ByenlwaXNhbmUgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0NJIHByenlwaXNhbmkgZG8gZmlybXkga2xpZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ0NJIHByenlwaXNhbmUgZG8gdcW8eXRrb3duaWthIGtsaWVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ1VzdGF3aWVuaWEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU3ByYXdkemFuaWUgdW5pa2FsbmVqIG5hend5IHR5bGtvIHcgb2JyxJliaWUgdGVqIHNhbWVqIGtsYXN5IENvbmZpZ0l0ZW0gKCJjbGFzcyIpIGx1YiBnbG9iYWxuaWUgKCJnbG9iYWwiKSwgY28gb3puYWN6YSwgxbxlIGthxbxkeSBpc3RuaWVqxIVjeSBDb25maWdJdGVtIGplc3QgYnJhbnkgcG9kIHV3YWfEmSBwb2RjemFzIHd5c3p1a2l3YW5pYSBkdXBsaWthdMOzdy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1d5YmllcnogbW9kdcWCLCBhYnkgd3ltdXNpxIcgc2NoZW1hdCBuYXpld25pY3R3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1d5YmllcnogbW9kdcWCLCBhYnkgd3ltdXNpxIcgc2NoZW1hdCBsaWN6Ym93eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnV3liaWVyeiBtb2R1xYIsIGFieSB3eW11c2nEhyBzY2hlbWF0IGNpxIVnw7N3IHdlcnNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdXeWJpZXJ6IGF0cnlidXR5LCBhYnkgdXJ1Y2hvbWnEhyB0d29yemVuaWUgbm93ZWogd2Vyc2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdXeWJpZXJ6IGthdGVnb3JpZSwga3TDs3JlIGNoY2VzeiBwcnp5cGlzYcSHIGRvIHRlaiBrbGFzeSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cnkga29sdW1uIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGRsYSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnS29sdW1ueSwga3TDs3JlIG1vxbxuYSBmaWx0cm93YcSHIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLiBVd2FnYTogRG96d29sb25lIHPEhSB0eWxrbyBhdHJ5YnV0eSBwb3p5Y2ppIGtvbmZpZ3VyYWNqaSBpIHBvbGEgZHluYW1pY3puZSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnRWxlbWVudHkga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdEb2RhbmllIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZHljamEgZWxlbWVudHUga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHXFgiB6ZGFyemXFhCBlbGVtZW50dSBrb25maWd1cmFjamksIGt0w7NyeSB1bW/FvGxpd2lhIHJlamVzdHJvd2FuaWUgZG8gaGlzdG9yaWkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHXFgiB6ZGFyemXFhCBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSwga3TDs3J5IGFrdHVhbGl6dWplIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSBkbyBpY2ggYmllxbzEhWNlaiBkZWZpbmljamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdG9yaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1d5ZHJ1ayBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnUG93acSZa3N6ZW5pZSBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnV2lkb2sgZHJ6ZXdhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBuYXN0xJlwdWrEhWN5Y2gga2xhcyBuaWUgYsSZZMSFIHByemVjaG93eXdhbmUgbmEgc2Vyd2VyemUgRWxhc3RpY3NlYXJjaC4gQWJ5IHphc3Rvc293YcSHIHRvIGRvIGlzdG5pZWrEhWN5Y2ggQ0ksIG1pZ3JhY2phIENJIG11c2kgem9zdGHEhyB1cnVjaG9taW9uYSB6YSBwb8WbcmVkbmljdHdlbSBrb25zb2xpLCBwbyB6bWlhbmllIHRlaiBvcGNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnRWxlbWVudHkgQ29uZmlnSXRlbXMgeiBuYXN0xJlwdWrEhWN5bWkgc3RhbmFtaSB3ZHJvxbxlbmlhIG5pZSBixJlkxIUgcHJ6ZWNob3d5d2FuZSBuYSBzZXJ3ZXJ6ZSBFbGFzdGljc2VhcmNoLiBBYnkgemFzdG9zb3dhxIcgdG8gZG8gaXN0bmllasSFY3ljaCBDSSwgbWlncmFjamEgQ0kgbXVzaSB6b3N0YcSHIHVydWNob21pb25hIHphIHBvxZtyZWRuaWN0d2VtIGtvbnNvbGksIHBvIHptaWFuaWUgdGVqIG9wY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdCBsaWN6YnkgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0IHBvenljamkga29uZmlndXJhY2ppIG5hIHN0cm9uxJkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXphIGRhbnljaCB6YXJ6xIVkemFuaWEga29uZmlndXJhY2rEhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ01vZHXFgiB6YmlvcmN6eSBlbGVtZW50dSBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0VsZW1lbnQga29uZmlndXJhY2ppIHd5c3p1a2l3YW5pYSByb3V0ZXJhIHphcGxlY3phIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdUd29yemVuaWUgaSB6YXJ6xIVkemFuaWUgZGVmaW5pY2phbWkgZWxlbWVudMOzdyBrb25maWd1cmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnVHdvcnp5IGJpbGV0eSBkbGEgQ29uZmlnSXRlbXMgdyBva3JlxZtsb255Y2ggcHVua3RhY2ggY3phc293eWNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdLbGllbmNpIG1vZ8SFIHpvYmFjennEhyBoaXN0b3J5Y3puZSB3ZXJzamUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJ0tsaWVuY2kgbWFqxIUgbW/FvGxpd2/Fm8SHIHLEmWN6bmVnbyBwcnplxYLEhWN6YW5pYSBzacSZIG1pxJlkenkgaGlzdG9yeWN6bnltaSB3ZXJzamFtaSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEb215xZtsbmUgZGFuZSBkbyB1xbx5Y2lhIHcgYXRyeWJ1Y2llIGRsYSBla3JhbnUgd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLiBQcnp5a8WCYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRG9tecWbbG5lIGRhbmUgZG8gdcW8eWNpYSB3IGF0cnlidWNpZSBkbGEgZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4gUHJ6eWvFgmFkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5pdWplIGFrY2plLCB3IGt0w7NyeWNoIHByenljaXNrIHVzdGF3aWXFhCBqZXN0IGRvc3TEmXBueSB3IHdpZMW8ZWNpZSBwb8WCxIVjem9ueWNoIG9iaWVrdMOzdyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBOYWxlxbx5IHBhbWnEmXRhxIcsIMW8ZSB0ZSBha2NqZSBtdXN6xIUgbWllxIcgemFyZWplc3Ryb3dhbmUgbmFzdMSZcHVqxIVjZSBwbGlraSBKUyBpIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgaSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbml1amUgc2NoZW1hdCBUZW1wbGF0ZTo6VG9vbGtpdCBkbGEgY2nEhWfDs3cgd2Vyc2ppLiBVxbx5d2FuZSB0eWxrbyBqZcWbbGkgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGplc3QgdXN0YXdpb255IG5hIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB6ZXN0YXcgd2FydW5rw7N3LCBuYSBwb2RzdGF3aWUga3TDs3J5Y2gga2xpZW50IG1vxbxlIHpvYmFjennEhyBlbGVtZW50IGtvbmZpZ3VyYWNqaS4gV2FydW5raSBtb2fEhSBiecSHIG9wY2pvbmFsbmllIG9ncmFuaWN6b25lIGRvIG9rcmXFm2xvbnljaCBncnVwIGtsaWVudMOzdy4gTmF6d2EgamVzdCBqZWR5bnltIG9ib3dpxIV6a293eW0gYXRyeWJ1dGVtLiBKZcWbbGkgbmllIHBvZGFubyDFvGFkbnljaCBpbm55Y2ggb3BjamksIHdzenlzdGtpZSBlbGVtZW50eSBrb25maWd1cmFjamkgYsSZZMSFIHdpZG9jem5lIHcgdGVqIGthdGVnb3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIHd5bWFnYW5lIHVwcmF3bmllbmlhIGRvIHVzdXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gcHJ6eSB1xbx5Y2l1IGludGVyZmVqc3Ugb2fDs2xuZWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdWplIHd5bWFnYW5lIHVwcmF3bmllbmlhIGRvIHV6eXNraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gcHJ6eSB1xbx5Y2l1IGludGVyZmVqc3Ugb2fDs2xuZWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdWplIHd5bWFnYW5lIHVwcmF3bmllbmlhIGRvIHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHByenkgdcW8eWNpdSBpbnRlcmZlanN1IG9nw7NsbmVnby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSB3eW1hZ2FuZSB1cHJhd25pZW5pYSBkbyB1c3Rhd2lhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00gcHJ6eSB1xbx5Y2l1IGludGVyZmVqc3Ugb2fDs2xuZWdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbml1amUgbW9kdcWCIHByemVnbMSFZHUgZG8gd3nFm3dpZXRsYW5pYSBtYcWCZWdvIHdpZG9rdSBsaXN0eSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGN6eSBldHlraWV0eSB0eXB1IMWCxIVjemEgbXVzesSFIGJ5xIcgd3nFm3dpZXRsYW5lIHcgcG/FgsSFY3plbmlhY2ggd8SZesWCw7N3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5pdWplIHd5cmHFvGVuaWEgcmVndWxhcm5lIGluZHl3aWR1YWxuaWUgZGxhIGthxbxkZWoga2xhc3kgQ29uZmlnSXRlbSB3IGNlbHUgc3ByYXdkemVuaWEgbmF6d3kgQ29uZmlnSXRlbSBpIHd5xZt3aWV0bGVuaWEgb2Rwb3dpZWRuaWNoIGtvbXVuaWthdMOzdyBvIGLFgsSZZGFjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbml1amUgZG9zdMSZcG5lIGtvbHVtbnkgQ0kgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB6YWxlxbxub8WbY2kgb2Qga2xhc3kgQ0kuIEthxbxkeSB3cGlzIG11c2kgc2vFgmFkYcSHIHNpxJkgeiBuYXp3eSBrbGFzeSBpIHRhYmxpY3kgZG9zdMSZcG55Y2ggcMOzbCBkbGEgb2Rwb3dpZWRuaWVqIGtsYXN5LiBXcGlzeSBww7NsIGR5bmFtaWN6bnljaCBtdXN6xIUgYnnEhyB6Z29kbmUgemUgc2NoZW1hdGVtIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbml1amUgZG9tecWbbG55IGF0cnlidXQgZWxlbWVudHUga29uZmlndXJhY2ppIGRsYSBzb3J0b3dhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd3luaWthY2ggd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvbXnFm2xueSBhdHJ5YnV0IHBvenljamkga29uZmlndXJhY2ppIGRsYSBzb3J0b3dhbmlhIHBvenljamkga29uZmlndXJhY2ppIHcgd3luaWthY2ggd3lzenVraXdhbmlhIHBvenljamkga29uZmlndXJhY2ppIGludGVyZmVqc3Uga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbnkgYXRyeWJ1dCBlbGVtZW50dSBrb25maWd1cmFjamkgZGxhIHNvcnRvd2FuaWEgd3luaWvDs3cgd3lzenVraXdhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB0ZWogb3BlcmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbsSFIGtvbGVqbm/Fm8SHIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd3luaWthY2ggd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgaW50ZXJmZWpzaWUgYWdlbnRhLiBXIGfDs3LEmTogbmFqc3RhcnN6eSBuYSBnw7NyemUuIFcgZMOzxYI6IG5ham5vd3N6ZSBuYSBnw7NyemUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbsSFIGtvbGVqbm/Fm8SHIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd3luaWthY2ggd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgaW50ZXJmZWpzaWUga2xpZW50YS4gVyBnw7NyxJk6IG5hanN0YXJzemUgbmEgZ8OzcnplLiBXIGTDs8WCOiBuYWpub3dzemUgbmEgZ8OzcnplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbsSFIGtvbGVqbm/Fm8SHIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd3luaWthY2ggd3lzenVraXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHRlaiBvcGVyYWNqaS4gVyBnw7NyxJk6IG5hanN0YXJzemUgbmEgZ8OzcnplLiBXIGTDs8WCOiBuYWpub3dzemUgbmEgZ8OzcnplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pdWplIGRvbXnFm2xuaWUgd3nFm3dpZXRsYW5lIGtvbHVtbnkgQ0kgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB6YWxlxbxub8WbY2kgb2Qga2xhc3kgQ0kuIEthxbxkeSB3cGlzIG11c2kgc2vFgmFkYcSHIHNpxJkgeiBuYXp3eSBrbGFzeSBpIHRhYmxpY3kgZG9zdMSZcG55Y2ggcMOzbCBkbGEgb2Rwb3dpZWRuaWVqIGtsYXN5LiBXcGlzeSBww7NsIGR5bmFtaWN6bnljaCBtdXN6xIUgYnnEhyB6Z29kbmUgemUgc2NoZW1hdGVtIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ09rcmXFm2xhIGRvbXnFm2xuxIUgZ8WCxJlib2tvxZvEhyB3ecWbd2lldGxhbnljaCByZWxhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdPa3JlxZtsYSBkb215xZtsbmllIHd5xZt3aWV0bGFueSBhdHJ5YnV0IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBkbGEgZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGRvbXnFm2xuaWUgd3nFm3dpZXRsYW55IGF0cnlidXQgd3lzenVraXdhbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBkbGEgZWtyYW51IHd5c3p1a2l3YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkuIFByenlrxYJhZDogIktsdWN6IiBtdXNpIG1pZcSHIG5henfEmSBwb2xhIGR5bmFtaWN6bmVnbywgdyB0eW0gcHJ6eXBhZGt1ICJYIiwgIlphd2FydG/Fm8SHIiBtdXNpIG1pZcSHIHdhcnRvxZvEhyBwb2xhIGR5bmFtaWN6bmVnbyB3IHphbGXFvG5vxZtjaSBvZCB0eXB1IHBvbGEgZHluYW1pY3puZWdvLCBUZWtzdDogInRla3N0IiwgTGlzdGEgcm96d2lqYW5hOiAiMSIsIERhdGEvZ29kemluYTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGkgbHViIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaXVqZSBkb215xZtsbnkgcG9kb2JpZWt0IGtsYXN5ICJJVFNNQ29uZmlnSXRlbSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbml1amUgZG9zdMSZcG5lIGtvbHVtbnkgQ0kgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB6YWxlxbxub8WbY2kgb2Qga2xhc3kgQ0kuIEthxbxkeSB3cGlzIG11c2kgc2vFgmFkYcSHIHNpxJkgeiBuYXp3eSBrbGFzeSBpIHRhYmxpY3kgZG9zdMSZcG55Y2ggcMOzbCBkbGEgb2Rwb3dpZWRuaWVqIGtsYXN5LiBXcGlzeSBww7NsIGR5bmFtaWN6bnljaCBtdXN6xIUgYnnEhyB6Z29kbmUgemUgc2NoZW1hdGVtIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIHd5c29rb8WbxIcgZWxlbWVudHUgZWR5dG9yYSB0ZWtzdHUgc2Zvcm1hdG93YW5lZ28gZGxhIHRlZ28gZWtyYW51LiBXcHJvd2FkxbogbGljemLEmSAocGlrc2VsZSkgbHViIHdhcnRvxZvEhyBwcm9jZW50b3fEhSAod3pnbMSZZG7EhSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGxpY3pixJkgd2llcnN6eSBlZHl0b3JhIGRlZmluaWNqaSBDSSB3IGludGVyZmVqc2llIGFkbWluaXN0cmF0b3JhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdPa3JlxZtsYSBrb2xlam5vxZvEhyBzdGFuw7N3IHpkYXJ6ZW5pYSBvZCB3eXNva2llZ28gKG5wLiBzdGFuIGtyeXR5Y3pueSkgZG8gbmlza2llZ28gKG5wLiBzdGFuIGZ1bmtjam9uYWxueSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW5pdWplIG9kcG93aWVkbmllIHN0YW55IHdkcm/FvGVuaWEsIHcga3TDs3J5Y2ggcG93acSFemFuZSB6Z8WCb3N6ZW5pYSBtb2fEhSB3cMWCeXdhxIcgbmEgc3RhbiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdPa3JlxZtsYSBsaW1pdCB3eXN6dWtpd2FuaWEgZGxhIGVrcmFudSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ09rcmXFm2xhIGxpbWl0IHd5c3p1a2l3YW5pYSBkbGEgZWtyYW51IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnT2tyZcWbbGEgbGltaXQgd3lzenVraXdhbmlhIGRsYSBla3JhbnUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdPa3JlxZtsYSBsaW1pdCB3eXN6dWtpd2FuaWEgZGxhIGVrcmFudSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdPa3JlxZtsYSB3ecWbd2lldGxhbmUga29sdW1ueSBDSSB3IHdpZG9rdSB6xYJvxbxvbnltIHRhYmVsaSBsaW5rw7N3IGRsYSB3c3p5c3RraWNoIGtsYXMgQ0kuIEplxZtsaSBuaWUgbWEgd3Bpc3UsIHd5xZt3aWV0bGFuZSBzxIUga29sdW1ueSBkb215xZtsbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbml1amUgd3nFm3dpZXRsYW5lIGtvbHVtbnkgQ0kgdyB3aWRva3UgesWCb8W8b255bSB0YWJlbGkgbGlua8OzdywgdyB6YWxlxbxub8WbY2kgb2Qga2xhc3kgQ0kuIEthxbxkeSB3cGlzIG11c2kgYnnEhyBwb3ByemVkem9ueSBuYXp3xIUga2xhc3kgaSBwb2R3w7NqbnltaSBkd3Vrcm9wa2FtaSAobnAuIENvbXB1dGVyOjopLiBJc3RuaWVqZSBraWxrYSBhdHJ5YnV0w7N3IENJLCBrdMOzcmUgc8SFIHdzcMOzbG5lIGRsYSB3c3p5c3RraWNoIENJIChwcnp5a8WCYWQgZGxhIGtsYXN5IENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBBYnkgd3nFm3dpZXRsacSHIHBvc3pjemVnw7NsbmUgYXRyeWJ1dHkgQ0kgemRlZmluaW93YW5lIHcgZGVmaW5pY2ppIENJLCBuYWxlxbx5IHXFvHnEhyBuYXN0xJlwdWrEhWNlZ28gc2NoZW1hdHUgKHByenlrxYJhZCBkbGEga2xhc3kgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSmXFm2xpIG5pZSBtYSB3cGlzdSBkbGEga2xhc3kgQ0ksIHd5xZt3aWV0bGFuZSBzxIUga29sdW1ueSBkb215xZtsbmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGt0w7NyZSBlbGVtZW50eSBzxIUgZG9zdMSZcG5lIGRsYSAiQWN0aW9uIiBuYSB0cnplY2ltIHBvemlvbWllIHN0cnVrdHVyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdPa3JlxZtsYSwga3TDs3JlIGVsZW1lbnR5IHPEhSBkb3N0xJlwbmUgbmEgcGllcndzenltIHBvemlvbWllIHN0cnVrdHVyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnT2tyZcWbbGEsIGt0w7NyZSBlbGVtZW50eSBzxIUgZG9zdMSZcG5lIG5hIGRydWdpbSBwb3ppb21pZSBzdHJ1a3R1cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBrdMOzcnkgdHlwIHBvd2nEhXphbmlhIChuYXp3YW55IHogcGVyc3Bla3R5d3kgemfFgm9zemVuaWEpIG1vxbxlIHdwxYJ5d2HEhyBuYSBzdGF0dXMgcG93acSFemFuZWdvIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ09rcmXFm2xhLCBrdMOzcnkgdHlwIHpnxYJvc3plbmlhIG1vxbxlIHdwxYJ5d2HEhyBuYSBzdGF0dXMgcG93acSFemFuZWdvIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FrdHVhbGl6YWNqYSBkZWZpbmljamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1VzdcWEIGVsZW1lbnQga29uZmlndXJhY2ppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnS29sb3Igc3RhbnUgd2Ryb8W8ZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNb2R1xYIgemRhcnplxYQgcMOzbCBkeW5hbWljem55Y2gsIGt0w7NyeSBvem5hY3phIGRlZmluaWNqZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBqYWtvIG5pZXpzeW5jaHJvbml6b3dhbmUsIGplxZtsaSB6YXdpZXJhasSFY2UgamUgcG9sYSBkeW5hbWljem5lIHVsZWduxIUgem1pYW5pZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvbGEgZHluYW1pY3puZSB3ecWbd2lldGxhbmUgbmEgZWtyYW5pZSBkb2RhdGtvd3ljaCBww7NsIElUU00gaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaWN6bmUgcG9sYSB3ecWbd2lldGxhbmUgbmEgZWtyYW5pZSBwcnplZ2zEhWR1IGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3Uga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY3puZSBwb2xhIHd5xZt3aWV0bGFuZSBuYSBla3JhbmllIHd5c3p1a2l3YW5pYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnV8WCxIVjemEgZnVua2NqxJkgbWFzb3dlaiBha2NqaSBlbGVtZW50dSBrb25maWd1cmFjamkgZGxhIGludGVyZmVqc3UgYWdlbnRhLCBhYnkgcHJhY293YcSHIG5hIHdpxJljZWogbmnFvCBqZWRueW0gZWxlbWVuY2llIGtvbmZpZ3VyYWNqaSBuYXJhei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1fFgsSFY3phIGZ1bmtjasSZIGFrY2ppIHpiaW9yY3plaiBlbGVtZW50dSBrb25maWd1cmFjamkgdHlsa28gZGxhIHd5bWllbmlvbnljaCBncnVwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdXxYLEhWN6YS93ecWCxIVjemEgZnVua2NqxJkgc3ByYXdkemFuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSBwb2Qga8SFdGVtIHVuaWthbG55Y2ggbmF6dy4gUHJ6ZWQgd8WCxIVjemVuaWVtIHRlaiBvcGNqaSBuYWxlxbx5IHNwcmF3ZHppxIcgc3lzdGVtIHBvZCBrxIV0ZW0ganXFvCBpc3RuaWVqxIVjeWNoIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHplIHpkdXBsaWtvd2FueW1pIG5hendhbWkuIE1vxbxuYSB0byB6cm9iacSHIHphIHBvbW9jxIUgcG9sZWNlbmlhIGtvbnNvbGkgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1xYIgemRhcnplxYQgZG8gdXN0YXdpYW5pYSBzdGF0dXN1IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBuYSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdQb2xhIGluZGVrc3UgcG96eWNqaSBrb25maWd1cmFjamksIHXFvHl3YW5lIGRvIHd5c3p1a2l3YW5pYSBwZcWCbm90ZWtzdG93ZWdvLiBQb2xhIHPEhSByw7N3bmllxbwgcHJ6ZWNob3d5d2FuZSwgYWxlIG5pZSBzxIUgb2Jvd2nEhXprb3dlIGRsYSBvZ8OzbG5laiBmdW5rY2pvbmFsbm/Fm2NpLiBEb8WCxIVjemFuaWUgemHFgsSFY3puaWvDs3cgbW/FvG5hIHd5xYLEhWN6ecSHLCB1c3Rhd2lhasSFYyB3YXJ0b8WbxIcgd3Bpc3UgbmEgMCBsdWIgdXN1d2FqxIVjIGdvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnUG9sYSBwcnplY2hvd3l3YW5lIHcgaW5kZWtzaWUgcG96eWNqaSBrb25maWd1cmFjamksIGt0w7NyZSBzxIUgd3lrb3J6eXN0eXdhbmUgZG8gaW5ueWNoIGNlbMOzdyBuacW8IHd5c3p1a2l3YW5pZSBwZcWCbm90ZWtzdG93ZS4gRGxhIHBlxYJuZWogZnVua2Nqb25hbG5vxZtjaSB3c3p5c3RraWUgcG9sYSBzxIUgb2Jvd2nEhXprb3dlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ0RsYSBrYcW8ZGVqIHVzxYJ1Z2kgd2Vic2VydmljZSAoa2x1Y3opIG1vxbxuYSB6ZGVmaW5pb3dhxIcgdGFibGljxJkga2xhcyAod2FydG/Fm8SHKSwgZGxhIGt0w7NyeWNoIGltcG9ydCBqZXN0IG9ncmFuaWN6b255LiBEbGEgd3N6eXN0a2ljaCB3eWJyYW55Y2gga2xhcyBsdWIgd3N6eXN0a2ljaCBpc3RuaWVqxIVjeWNoIGtsYXMgYXRyeWJ1dHkgaWRlbnR5ZmlrdWrEhWNlIGLEmWTEhSBtdXNpYcWCeSB6b3N0YcSHIHd5YnJhbmUgdyBrb25maWd1cmFjamkgd3l3b8WCdWrEhWNlZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlamVzdHJhY2phIG1vZHXFgnUgR2VuZXJpY0ludGVyZmFjZSBkbGEgd2Fyc3R3eSB3eXdvxYJ1asSFY2VqIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWplc3RyYWNqYSBtb2R1xYJ1IEdlbmVyaWNJbnRlcmZhY2UgZGxhIHdhcnN0d3kgd3l3b8WCdWrEhWNlaiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlamVzdHJhY2phIG1vZHXFgnUgR2VuZXJpY0ludGVyZmFjZSBkbGEgd2Fyc3R3eSB3eXdvxYJ1asSFY2VqIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUHJ6ZWdsxIVkIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2Jlam11amUgc3Rhbnkgd2Ryb8W8ZW5pYSB3IHd5c3p1a2l3YW5pdSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ09iZWptdWplIHN0YW55IGluY3lkZW50w7N3IHcgd3lzenVraXdhbml1IGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3Uga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc3ltYWxuYSBsaWN6YmEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgZG8gd3nFm3dpZXRsZW5pYSB3IHd5bmlrdSB0ZWogb3BlcmFjamkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdcWCIHNwcmF3ZHphasSFY3kgZ3J1cMSZIG9kcG93aWVkemlhbG7EhSB6YSBrbGFzxJkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdcWCIGRvIHNwcmF3ZHphbmlhIGdydXB5IG9kcG93aWVkemlhbG5laiB6YSBlbGVtZW50IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1xYIgZG8gZ2VuZXJvd2FuaWEgc3RhdHlzdHlrIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTmF6d2EgbW9kdcWCdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTW9kdcWCIG51bWVyeWN6bnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTGljemJhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHd5xZt3aWV0bGFueWNoIG5hIGthxbxkZWogc3Ryb25pZSB3eW5pa8OzdyB3eXN6dWtpd2FuaWEgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0xpY3piYSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3ecWbd2lldGxhbnljaCBuYSBrYcW8ZGVqIHN0cm9uaWUgd3luaWvDs3cgd3lzenVraXdhbmlhIHcgaW50ZXJmZWpzaWUga2xpZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnT2JpZWt0eSBkbyB3eXN6dWthbmlhLCBpbGUgd3Bpc8OzdyBpIGt0w7NyZSBhdHJ5YnV0eSBwb2themHEhy4gQXRyeWJ1dHkgQ29uZmlnSXRlbSBtdXN6xIUgYnnEhyBqYXduaWUgcHJ6ZWNob3d5d2FuZSBwcnpleiBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcnplZ2zEhWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIGthdGVnb3JpaSBrbGFzIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgZmlsdHLDs3cga29sdW1uIHcgbWHFgnltIHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaS4gVXdhZ2E6IHVzdGF3aWVuaWUgIkFjdGl2ZSIgbmEgMCB1bmllbW/FvGxpd2kgYWdlbnRvbSBlZHljasSZIHVzdGF3aWXFhCB0ZWogZ3J1cHkgdyBpY2ggb3NvYmlzdHljaCBwcmVmZXJlbmNqYWNoLCBhbGUgbmFkYWwgcG96d29saSBhZG1pbmlzdHJhdG9yb20gZWR5dG93YcSHIHVzdGF3aWVuaWEgdyBpbWllbml1IGlubmVnbyB1xbx5dGtvd25pa2EuIFXFvHlqICJQcmVmZXJlbmNlR3JvdXAiLCBhYnkga29udHJvbG93YcSHLCB3IGt0w7NyeW0gb2JzemFyemUgdGUgdXN0YXdpZW5pYSBwb3dpbm55IGJ5xIcgd3nFm3dpZXRsYW5lIHcgaW50ZXJmZWpzaWUgdcW8eXRrb3duaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IGtvbG9yw7N3IHN0YW7Ds3cgd2Ryb8W8ZW5pYSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgc3RhbsOzdyB3ZHJvxbxlbmlhIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIHByenlrxYJhZG93eWNoIGdydXAgdXByYXduaWXFhCBhdHJ5YnV0w7N3IGthdGFsb2d1IGfFgsOzd25lZ28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJ5IG1vZHXFgnUgbmF6d3kgZGxhIGtsYXMgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIG1vZHXFgnUgbGljemJ5IGRsYSBrbGFzIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IHByZWZlcmVuY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIHN0cm9uIChuYSBrdMOzcnljaCB3ecWbd2lldGxhbmUgc8SFIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSBkbGEgbW9kdcWCdSDFgmHFhGN1Y2hhIHdlcnNqaSBkbGEga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cnkgZGxhIG1vZHXFgnUgc3phYmxvbnUgxYJhxYRjdWNoYSB3ZXJzamkgZGxhIGtsYXMgZWxlbWVudMOzdyBrb25maWd1cmFjamkgdyB3aWRva3UgcHJlZmVyZW5jamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyeSB3eXp3YWxhY3phIHdlcnNqaSBkbGEga2xhcyBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwcmVmZXJlbmNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdXeWtvbnVqZSB6YXBsYW5vd2FuZSBha2NqZSBkbGEga2HFvGRlZ28gd3lkYcW8ZW5pYSAoamFrbyBXenl3YWrEhWN5KSBkbGEga2HFvGRlaiBza29uZmlndXJvd2FuZWogdXPFgnVnaSBzaWVjaW93ZWouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwYSBVcHJhd25pZcWEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBha2NqaSBkb8WCxIVjemFuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSB3eXN6dWtpd2FuaWEgZWxlbWVudMOzdyBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGtsaWVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgd2lkb2t1IGRyemV3YSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXeW1hZ2FuZSB1cHJhd25pZW5pYSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBwb3dpxJlrc3plbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IGRvZGF3YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgZWxlbWVudHUga29uZmlndXJhY2ppIHpiaW9yY3plaiBJVFNNIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVcHJhd25pZW5pYSB3eW1hZ2FuZSBkbyBrb3J6eXN0YW5pYSB6IGVrcmFudSBlZHljamkgZWxlbWVudHUga29uZmlndXJhY2ppIElUU00gdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1VwcmF3bmllbmlhIHd5bWFnYW5lIGRvIGtvcnp5c3RhbmlhIHogZWtyYW51IGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBJVFNNIGhpc3RvcmlpIHcgaW50ZXJmZWpzaWUgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3ltYWdhbmUgdXByYXduaWVuaWEgZG8ga29yenlzdGFuaWEgeiBla3JhbnUgZHJ1a293YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgSVRTTSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1d5bWFnYW5lIHVwcmF3bmllbmlhIGRvIHVzdXdhbmlhIGVsZW1lbnTDs3cga29uZmlndXJhY2ppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1d5c3p1a2FqIGVsZW1lbnR5IGtvbmZpZ3VyYWNqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1VzdGF3IHN0YW4gaW5jeWRlbnR1IENJIGF1dG9tYXR5Y3puaWUsIGdkeSBUaWNrZXQgamVzdCBwb3dpxIV6YW55IHogQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVXN0YXdpYSBzdGFuIHdkcm/FvGVuaWEgbmEgZWtyYW5pZSB6YmlvcmN6eW0gZWxlbWVudHUga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVc3Rhd2lhIHN0YW4gemRhcnplbmlhIG5hIGVrcmFuaWUgemJpb3JjenltIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51LCBrdMOzcmUgdW1vxbxsaXdpYSBwb3dpxIV6YW5pZSBlbGVtZW50dSBrb25maWd1cmFjamkgeiBpbm55bSBvYmlla3RlbSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSBkb3N0xJlwIGRvIGhpc3RvcmlpIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHByemVnbMSFZHppZSBlbGVtZW50w7N3IGtvbmZpZ3VyYWNqaSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2UgZG9zdMSZcCBkbyBoaXN0b3JpaSBlbGVtZW50dSBrb25maWd1cmFjamkgdyB3aWRva3UgcG93acSZa3N6ZW5pYSBpbnRlcmZlanN1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSB1c3VuacSZY2llIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSwgYWJ5IHd5xZt3aWV0bGnEhyDFgsSFY3phIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIHcgd2lkb2t1IGRyemV3YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IGRvIGR1cGxpa293YW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgdyBwcnplZ2zEhWR6aWUgZWxlbWVudMOzdyBrb25maWd1cmFjamkgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdyBjZWx1IHBvd2llbGVuaWEgZWxlbWVudHUga29uZmlndXJhY2ppIHcgd2lkb2t1IHBvd2nEmWtzemVuaWEgaW50ZXJmZWpzdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdXecWbd2lldGxhIMWCxIVjemUgdyBtZW51IHVtb8W8bGl3aWFqxIVjZSBlZHljasSZIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2UgcG93csOzdCBkbyB3aWRva3UgcG93acSZa3N6ZW5pYSBlbGVtZW50dSBrb25maWd1cmFjamkgdyBpbnRlcmZlanNpZSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSDFgsSFY3plIHcgbWVudSB1bW/FvGxpd2lhasSFY2Ugd3lkcnVrb3dhbmllIGVsZW1lbnR1IGtvbmZpZ3VyYWNqaSB3IHdpZG9rdSBwb3dpxJlrc3plbmlhIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1d5xZt3aWV0bGEgxYLEhWN6ZSB3IG1lbnUgdW1vxbxsaXdpYWrEhWNlIHBvd2nEmWtzemVuaWUgZWxlbWVudHUga29uZmlndXJhY2ppIHcgcHJ6ZWdsxIVkemllIGVsZW1lbnTDs3cga29uZmlndXJhY2ppIGludGVyZmVqc3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnV3nFm3dpZXRsYSBoaXN0b3JpxJkgZWxlbWVudMOzdyBrb25maWd1cmFjamkgKHcgb2R3cm90bmVqIGtvbGVqbm/Fm2NpKSB3IGludGVyZmVqc2llIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnRG9tecWbbG5hIGthdGVnb3JpYSwga3TDs3JhIGplc3Qgd3nFm3dpZXRsYW5hLCBqZcWbbGkgbmllIHd5YnJhbm8gxbxhZG5lai4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50eWZpa2F0b3IgZWxlbWVudHUga29uZmlndXJhY2ppLCBucC4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIERvbXnFm2xuaWUgamVzdCB0byBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXR5Y3puaWUgdXJ1Y2hhbWlhIHd5d2/FgmFuaWUgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+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+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnTnVtZXIgaW53ZW50YXJ6b3d5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnS29zenR5IGlud2VzdHljamknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdOdW1lciBmYWt0dXJ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnS2xhd2lhdHVyYSc7CiAgICAkU2VsZi0+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+eydXZWJjYW0nfSA9ICdLYW1lcmEgaW50ZXJuZXRvd2EnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydObyBjb25maWcgaXRlbSBkYXRhIGZvdW5kLid9ID0gJ05lbmh1bSBkYWRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZm9pIGVuY29udHJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU2VsZWNpb25lIGVzc2UgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0V4ZWN1dGFyIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1Byb2N1cmFyIG5hcyB2ZXLDtWVzIGFudGVyaW9yZXMgdGFtYsOpbT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBwYXJhIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdOw612ZWwgZGUgcHJvZnVuZGlkYWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnQXVtZW50YXIgZSBkaW1pbnVpciBvIHpvb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTsOtdmVsIG3DoXhpbW8gZGUgbGlua3MgYXRpbmdpZG8gcGFyYSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw6NvIGRvIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAnRXN0YWRvIGRlIEltcGxhbnRhw6fDo28gQXR1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ0VzdGFkbyBkbyBJbmNpZGVudGUgQXR1YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAnw5psdGltYSBtb2RpZmljYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ8OabHRpbWEgbW9kaWZpY2HDp8OjbyBwb3InOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdTZXVzIENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ1Blc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBcyBzZWd1aW50ZXMgY2xhc3NlcyBzZXLDo28gaW1wb3J0YWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdBcyBzZWd1aW50ZXMgZnVuw6fDtWVzIHNlcsOjbyBpbXBvcnRhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ09ic2VydmUgcXVlIG9zIGNhbXBvcyBkaW7Dom1pY29zIGUgYXMgY2xhc3NlcyBHZW5lcmFsQ2F0YWxvZyBjb3JyZXNwb25kZW50ZXMgdGFtYsOpbSBzZXLDo28gY3JpYWRvcyBlIG7Do28gaGF2ZXLDoSByZW1vw6fDo28gYXV0b23DoXRpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnVm9jw6ogcXVlciBwcm9zc2VndWlyPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdQcmVjaXNhIGRlIEV4YW1wbGVDbGFzc2VzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICdBIGRlZmluacOnw6NvIG7Do28gw6kgdW0gaGFzaCBZQU1MIHbDoWxpZG8uJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnVmlzw6NvIGdlcmFsOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIENvbmZpZ0l0ZW1JRCDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ1ZvY8OqIHByZWNpc2Egc2VsZWNpb25hciBwZWxvIG1lbm9zIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnVm9jw6ogbsOjbyB0ZW0gYWNlc3NvIGRlIGVzY3JpdGEgcGFyYSBlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo286ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOZW5odW1hIGRlZmluacOnw6NvIHBhcmEgYSBjbGFzc2UgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdJdGVtIGRlIGNvbmZpZ3VyYcOnw6NvICIlcyIgbsOjbyBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTsOjbyBmb2kgcG9zc8OtdmVsIGV4Y2x1aXIgbyBJRCBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTmVuaHVtYSB2ZXJzw6NvIGVuY29udHJhZGEgcGFyYSBvIENvbmZpZ0l0ZW1JRCAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3UgQ2xhc3NJRCDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnTmVuaHVtIGFjZXNzbyDDqSBkYWRvISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOw6NvIMOpIHBvc3PDrXZlbCBleGliaXIgaGlzdMOzcmljby4gTmVuaHVtIENvbmZpZ0l0ZW1JRCDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ07Do28gw6kgcG9zc8OtdmVsIGV4aWJpciBoaXN0w7NyaWNvLiBOZW5odW0gZGlyZWl0byBkZSBhY2Vzc28gw6kgZGFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdm8gSXRlbSBkZSBDb25maWd1cmHDp8OjbyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3ZhIHZlcnPDo28gKElEID0gJXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnRXN0YWRvIGRlIGltcGxlbWVudGHDp8OjbyBhdHVhbGl6YWRvIChub3ZvPSVzICwgYW50aWdvPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdFc3RhZG8gZGUgaW5jaWRlbnRlIGF0dWFsaXphZG8gKG5vdm89JXMsIGFudGlnbz0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICdJdGVtIGRlIENvbmZpZ3VyYcOnw6NvIChJRD0lcykgZXhjbHXDrWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAnVsOtbmN1bG8gcGFyYSAlcyAodGlwbz0lcykgYWRpY2lvbmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBkZWxldGVkJ30gPSAnVsOtbmN1bG8gcGFyYSAlcyAodGlwbz0lcykgZGVsZXRhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0RlZmluacOnw6NvIGRlIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28gKElEPSVzKSBhdHVhbGl6YWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTm9tZSBhdHVhbGl6YWRvIChub3ZvPSVzLCBhbnRpZ289JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnQXRyaWJ1dG8gJXMgYXR1YWxpemFkbyBkZSAiJXMiIHBhcmEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJzw6NvICVzIGV4Y2x1w61kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdOZW5odW0gQ29uZmlnSXRlbUlEIG91IFZlcnNpb25JRCDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgZXhpYmlyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uIE5lbmh1bSBkaXJlaXRvIGRlIGFjZXNzbyDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0NvbmZpZ0l0ZW1JRCAlcyBuw6NvIGVuY29udHJhZG8gbmEgYmFzZSBkZSBkYWRvcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0l0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ0ltcHJlc3NvIHBvciAlcyBlbSAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXLDqm5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdDbGFzc0lEIGludsOhbGlkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOZW5odW0gQ2xhc3NJRCDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ05lbmh1bSBkaXJlaXRvIGRlIGFjZXNzbyBwYXJhIGVzdGEgY2xhc3NlIMOpIGRhZG8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOZW5odW0gcmVzdWx0YWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ1Jlc3VsdGFkb3MgZGEgcGVzcXVpc2EgZGUgSXRlbnMgZGUgY29uZmlndXJhw6fDo28nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ07Do28gZm9pIHBvc3PDrXZlbCBleGliaXIgaXRlbS4gTmVuaHVtIGRpcmVpdG8gZGUgYWNlc3NvIHBhcmEgQ29uZmlnSXRlbSDDqSBkYWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICdDb25maWdJdGVtIG7Do28gZW5jb250cmFkbyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmVuaHVtYSB2ZXJzw6NvIGVuY29udHJhZGEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnb3BlcmFjaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2F2aXNvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnaW5jaWRlbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdPIGVzdGFkbyBkZSBpbXBsYW50YcOnw6NvIGRlc3RlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdPIGVzdGFkbyBkZSBpbmNpZGVudGUgZGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ1NlbSBQZXJtaXNzw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICdGaWx0cm8gaW52w6FsaWRvISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnUGFyw6JtZXRyb3MgZGUgcGVzcXVpc2EgaW52w6FsaWRvcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICdFeGliaXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwbyBkZSBFc3RhZG8gZGUgSW1wbGFudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdFc3RhZG8gQXR1YWwgZGUgSW5jaWRlbnRlIHBvciB0aXBvJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ0VudHJlJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmnDp8O1ZXMgZGUgY2xhc3NlIHBhcmEgbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2lvbmUgdW1hIG91IG1haXMgY2xhc3NlcyBwYXJhIHJlc3RyaW5naXIgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc2VsZWNpb27DoXZlaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ1Jlc3RyacOnw7VlcyBkZSBjbGFzc2UgcGFyYSBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdTZWxlY2lvbmUgdW1hIG91IG1haXMgY2xhc3NlcyBwYXJhIHJlc3RyaW5naXIgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc2VsZWNpb27DoXZlaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICdEaW7Dom1pY28gKENvbmZpZ0l0ZW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICdTdGF0aWMgKHZlcnPDo28pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1RpcG8gZGUgcmVmZXLDqm5jaWEgZGUgbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdTZSBlc3NlIGxpbmsgc2UgYXBsaWNhIGFvIENvbmZpZ0l0ZW0gb3Ugw6AgdmVyc8OjbyBlc3TDoXRpY2EgZG8gb2JqZXRvIGRlIHJlZmVyw6puY2lhLiBPIGPDoWxjdWxvIGRvIGVzdGFkbyBhdHVhbCBkbyBpbmNpZGVudGUgc8OzIMOpIHJlYWxpemFkbyBlbSBsaW5rcyBkaW7Dom1pY29zLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1NlbGVjaW9uZSBvIGF0cmlidXRvIHBlbG8gcXVhbCBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzZXLDo28gcGVzcXVpc2Fkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ0EgZXN0cnV0dXJhIGLDoXNpY2EgbsOjbyDDqSB2w6FsaWRhLiBGb3JuZcOnYSB1bSBoYXNoIGNvbSBkYWRvcyBubyBmb3JtYXRvIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnw4kgbmVjZXNzw6FyaW8gaW5pY2lhciBhIHN0cmluZyBZQU1MIGNvbSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOw6NvIGZvaSBwb3Nzw612ZWwgbGltcGFyIGEgdGFiZWxhIGNvbmZpZ2l0ZW1fbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcmVsZXZhbnQgZHluYW1pYyBmaWVsZHMgd2VyZSBmb3VuZCd9ID0gJ07Do28gZm9yYW0gZW5jb250cmFkb3MgY2FtcG9zIGRpbsOibWljb3MgcmVsZXZhbnRlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ07Do28gZm9pIHBvc3PDrXZlbCBpbnNlcmlyIG5hIHRhYmVsYSBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VyaXUgMCBsaW5oYXMgbmEgdGFiZWxhIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdOw7ptZXJvIG3DoXhpbW8gZGUgdW0gZWxlbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnQ2FkZWlhIGRlIGNhcmFjdGVyZXMgZGEgdmVyc8Ojbyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICdFcnJvIGFvIHNpbmNyb25pemFyIGFzIGRlZmluacOnw7Vlcy4gVmVyaWZpcXVlIG8gcmVnaXN0cm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVm9jw6ogdGVtIGRlZmluacOnw7VlcyBkZSBJVFNNQ29uZmlnSXRlbSBxdWUgbsOjbyBlc3TDo28gc2luY3Jvbml6YWRhcy4gSW1wbGVtZW50ZSBzdWFzIGFsdGVyYcOnw7VlcyBkZSBjYW1wbyBkaW7Dom1pY28gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnV0ZW7Dp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmVqYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1JlcGFybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnUmV0aXJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJ1Rlc3RlIGRlIFF1YWxpZGFkZSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnVmlzw6NvIGdlcmFsIGUgY29uZmlybWHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnRhw6fDo28gZGUgY2xhc3Nlcy9mdW7Dp8O1ZXMgZSBzZXVzIGNhbXBvcyByZWxhY2lvbmFkb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdPY29ycmV1IHVtIGVycm8gZHVyYW50ZSBhIGltcG9ydGHDp8OjbyBkYSBjbGFzc2UuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSBPY3VsdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIE1vc3RyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpw6fDtWVzIGRlIHBlc3F1aXNhIGVzdGVuZGlkYXMgbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQ29tIGVzc2UgcmVjdXJzbywgdm9jw6ogcG9kZSBwZXNxdWlzYXIsIHBvciBleGVtcGxvLCBvIG5vbWUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBjb20gZXNzZSB0aXBvIGRlIGNvbmRpw6fDo28sIGNvbW8gIigqa2V5MSomJiprZXkyKikiIG91ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnUGVybWl0ZSBjb25kacOnw7VlcyBkZSBwZXNxdWlzYSBlc3RlbmRpZGFzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLiBDb20gZXNzZSByZWN1cnNvLCB2b2PDqiBwb2RlIHBlc3F1aXNhciwgcG9yIGV4ZW1wbG8sIG8gbm9tZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbSBlc3NlIHRpcG8gZGUgY29uZGnDp8OjbywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdJQ3MgYXRyaWJ1w61kb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0lDIGF0cmlidWlkbyDDoCBlbXByZXNhIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdJQyBhdHJpYnVpZG8gYW8gdXN1w6FyaW8gY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ29uZmlndXJhw6fDtWVzIGRvIENNREInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ1ZlcmlmaXF1ZSBzZSBvIG5vbWUgw6kgw7puaWNvIGFwZW5hcyBkZW50cm8gZGEgbWVzbWEgY2xhc3NlIGRlIElDIChcJ2NsYXNzZSkgb3UgZ2xvYmFsbWVudGUgKFwnZ2xvYmFsXCcpLCBvIHF1ZSBzaWduaWZpY2EgcXVlIGNhZGEgSUMgZXhpc3RlbnRlIMOpIGxldmFkbyBlbSBjb250YSBhbyBwcm9jdXJhciBwb3IgZHVwbGljYcOnw7Vlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0VzY29saGEgdW0gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW0gZXNxdWVtYSBkZSBub21lbmNsYXR1cmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbnVtYmVyIHNjaGVtZS4nfSA9ICdFc2NvbGhhIHVtIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVtIGVzcXVlbWEgbnVtw6lyaWNvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICdFc2NvbGhhIHVtIG3Ds2R1bG8gcGFyYSBhcGxpY2FyIHVtIGVzcXVlbWEgZGUgc3RyaW5nIGRlIHZlcnPDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnRXNjb2xoYSBhdHJpYnV0b3MgcGFyYSBhY2lvbmFyIGEgY3JpYcOnw6NvIGRlIHVtYSBub3ZhIHZlcnPDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0VzY29saGEgYXMgY2F0ZWdvcmlhcyBhIHNlcmVtIGF0cmlidcOtZGFzIGEgZXNzYSBjbGFzc2UgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cm9zIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGUgY29sdW5hIHBhcmEgVmlzw6NvIGdlcmFsIGRvIENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdDb2x1bmFzIHF1ZSBwb2RlbSBzZXIgZmlsdHJhZGFzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIE9ic2VydmHDp8OjbzogU29tZW50ZSBhdHJpYnV0b3MgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBlIGNhbXBvcyBkaW7Dom1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpIHPDo28gcGVybWl0aWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnSXRlbnMgZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0FkaWNpb25hciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBlZGl0Lid9ID0gJ0VkaXRhciBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcXVlIHBlcm1pdGUgcmVnaXN0cmFyIG8gaGlzdMOzcmljbyBkYSBpbnRlcmZhY2UgZG8gYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBhdHVhbGl6YSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBwYXJhIHN1YSBkZWZpbmnDp8OjbyBhdHVhbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdIaXN0w7NyaXZvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJlc3PDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdab29tIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnVmlzdWFsaXphw6fDo28gZW0gw6Fydm9yZSBkbyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ1ZlcnPDo28gZG8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdPcyBDb25maWdJdGVtcyBkYXMgc2VndWludGVzIGNsYXNzZXMgbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzc28gYW9zIENJcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gQ0kgZGV2ZSBzZXIgZXhlY3V0YWRhIHBvciBtZWlvIGRvIGNvbnNvbGUsIGFww7NzIGEgYWx0ZXJhw6fDo28gZGVzc2Egb3DDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnT3MgQ29uZmlnSXRlbXMgY29tIG9zIHNlZ3VpbnRlcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzc28gYW9zIENJcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gQ0kgZGV2ZSBzZXIgZXhlY3V0YWRhIHBvciBtZWlvIGRvIGNvbnNvbGUsIGFww7NzIGEgYWx0ZXJhw6fDo28gZGVzc2Egb3DDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIExpbWl0J30gPSAnTGltaXRlIGRlIEl0ZW0gZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0xpbWl0ZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBvciBww6FnaW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQ29uZmlndXJhw6fDo28gZG8gR2VyZW5jaWFtZW50byBkbyBCYW5jbyBkZSBEYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03Ds2R1bG8gZGUgYcOnw6NvIGVtIG1hc3NhIGVtIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdSb3RlYWRvciBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ0NyaWFyIGUgZ2VyZW5jaWFyIGFzIGRlZmluacOnw7VlcyBkZSBJdGVucyBkZSBDb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdDcmlhIHTDrXF1ZXRlcyBwYXJhIENvbmZpZ0l0ZW1zIGVtIHBvbnRvcyBkZSB0ZW1wbyBlc3BlY8OtZmljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ09zIGNsaWVudGVzIHBvZGVtIHZlciBvIGhpc3TDs3JpY28gZGFzIHZlcnPDtWVzIGRlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdPcyBjbGllbnRlcyB0w6ptIGEgcG9zc2liaWxpZGFkZSBkZSBhbHRlcm5hciBtYW51YWxtZW50ZSBlbnRyZSBhcyB2ZXJzw7VlcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdEYWRvcyBwYWRyw6NvIGEgc2VyZW0gdXNhZG9zIG5vIGF0cmlidXRvIHBhcmEgYSB0ZWxhIGRlIHBlc3F1aXNhIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uIEV4ZW1wbG86ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGFkb3MgcGFkcsOjbyBhIHNlcmVtIHVzYWRvcyBubyBhdHJpYnV0byBwYXJhIGEgdGVsYSBkZSBwZXNxdWlzYSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW5hIEHDp8O1ZXMgb25kZSB1bSBib3TDo28gZGUgY29uZmlndXJhw6fDtWVzIGVzdMOhIGRpc3BvbsOtdmVsIG5vIHdpZGdldCBkZSBvYmpldG9zIHZpbmN1bGFkb3MgKExpbmtPYmplY3Q6OlZpZXdNb2RlPSJjb21wbGV4IikuIE9ic2VydmUgcXVlIGVzc2FzIGHDp8O1ZXMgZGV2ZW0gdGVyIHJlZ2lzdHJhZG8gb3Mgc2VndWludGVzIGFycXVpdm9zIEpTIGUgQ1NTOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBlIENvcmUuQWdlbnQgLkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmUgdW0gZXNxdWVtYSBUZW1wbGF0ZTo6VG9vbGtpdCBwYXJhIGNhZGVpYXMgZGUgY2FyYWN0ZXJlcyBkZSB2ZXJzw6NvLiBVc2FkbyBzb21lbnRlIHNlIG8gVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGVzdGl2ZXIgZGVmaW5pZG8gY29tbyBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbmUgdW0gY29uanVudG8gZGUgY29uZGnDp8O1ZXMgc29iIGFzIHF1YWlzIHVtIGNsaWVudGUgdGVtIHBlcm1pc3PDo28gcGFyYSB2ZXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gQXMgY29uZGnDp8O1ZXMgcG9kZW0sIG9wY2lvbmFsbWVudGUsIHNlciByZXN0cml0YXMgYSBkZXRlcm1pbmFkb3MgZ3J1cG9zIGRlIGNsaWVudGVzLiBPIG5vbWUgw6kgbyDDum5pY28gYXRyaWJ1dG8gb2JyaWdhdMOzcmlvLiBTZSBuZW5odW1hIG91dHJhIG9ww6fDo28gZm9yIGZvcm5lY2lkYSwgdG9kb3Mgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZmljYXLDo28gdmlzw612ZWlzIG5lc3NhIGNhdGVnb3JpYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhIHBlcm1pc3PDo28gbmVjZXNzw6FyaW8gcGFyYSByZW1vdmVyIEl0ZW5zIGRlIENvbmZpZ3VyYcOnw6NvIHVzYW5kbyBhIEludGVyZmFjZSBHZW7DqXJpY2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgcmVxdWVyaWRhcyBwYXJhIG9idGVyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdXNhbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyByZXF1ZXJpZGFzIHBhcmEgbG9jYWxpemFyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gdXNhbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSBkZWZpbmlyIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIElUU00gdXNhbmRvIGEgaW50ZXJmYWNlIGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgdmlzw6NvIGdlcmFsIHBhcmEgbW9zdHJhciBhIHZpc8OjbyBwZXF1ZW5hIGRhIGxpc3RhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmUgc2Ugb3MgcsOzdHVsb3MgZGUgdGlwbyBkZSBsaW5rIGRldmVtIHNlciBleGliaWRvcyBuYXMgY29uZXjDtWVzIGRlIG7Dsy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWUgZXhwcmVzc8O1ZXMgcmVndWxhcmVzIGluZGl2aWR1YWxtZW50ZSBwYXJhIGNhZGEgY2xhc3NlIGRlIElDIHBhcmEgdmVyaWZpY2FyIG8gbm9tZSBkbyBJQyBlIHBhcmEgZXhpYmlyIGFzIG1lbnNhZ2VucyBkZSBlcnJvIGNvcnJlc3BvbmRlbnRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkaXNwb27DrXZlaXMgZGUgSUNzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgY29uc2lzdGlyIGVtIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvIGRpbsOibWljbyBkZXZlbSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBhZHLDo28gcGFyYSBhIGNsYXNzaWZpY2HDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcGFkcsOjbyBwYXJhIGEgY2xhc3NpZmljYcOnw6NvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHBhZHLDo28gcGFyYSBhIGNsYXNzaWZpY2HDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGVzc2Egb3BlcmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHBhZHLDo28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQWNpbWE6IG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBwYWRyw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbm8gcmVzdWx0YWRvIGRhIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLiBBY2ltYTogbWFpcyBhbnRpZ28gbm8gdG9wby4gUGFyYSBiYWl4bzogbyBtYWlzIHJlY2VudGUgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gcGFkcsOjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5vIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkZXNzYSBvcGVyYcOnw6NvLiBBY2ltYTogbWFpcyBhbnRpZ28gbm8gdG9wby4gUGFyYSBiYWl4bzogbyBtYWlzIHJlY2VudGUgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIHBhZHLDo28gZXhpYmlkYXMgZGUgSUNzIG5hIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCBkZXBlbmRlbmRvIGRhIGNsYXNzZSBkbyBJQy4gQ2FkYSBlbnRyYWRhIGRldmUgY29uc2lzdGlyIGVtIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvIGRpbsOibWljbyBkZXZlbSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJ0RlZmluZSBhIHByb2Z1bmRpZGFkZSBwYWRyw6NvIGRhcyByZWxhw6fDtWVzIGEgc2VyZW0gbW9zdHJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBwYWRyw6NvIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbW9zdHJhZG8gcGFyYSBhIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIHBhZHLDo28gZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBtb3N0cmFkbyBwYXJhIGEgdGVsYSBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiS2V5IiAoQ2hhdmUpIGRldmUgdGVyIG8gbm9tZSBkbyBjYW1wbyBkaW7Dom1pY28sIG5lc3NlIGNhc28gXCdYXCcsICJDb250ZW50IiAoQ29udGXDumRvKSBkZXZlIHRlciBvIHZhbG9yIGRvIGNhbXBvIGRpbsOibWljbywgZGVwZW5kZW5kbyBkbyB0aXBvIGRlIGNhbXBvIGRpbsOibWljbywgVGV4dCAoVGV4dG8pOiBcJ3VtIHRleHRvXCcsIERyb3Bkb3duIChNZW51IHN1c3BlbnNvKTogXCcxXCcsIERhdGUvVGltZSAoRGF0YS9Ib3JhKTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGUgb3UgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnRGVmaW5lIG8gc3Vib2JqZXRvIHBhZHLDo28gZGEgY2xhc3NlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRpc3BvbsOtdmVpcyBkZSBJQ3MgbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBjb25zaXN0aXIgZW0gdW0gbm9tZSBkZSBjbGFzc2UgZSB1bWEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb27DrXZlaXMgcGFyYSBhIGNsYXNzZSBjb3JyZXNwb25kZW50ZS4gQXMgZW50cmFkYXMgZGUgY2FtcG8gZGluw6JtaWNvIGRldmVtIHJlc3BlaXRhciBvIGVzcXVlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lIGEgYWx0dXJhIGRvIGNvbXBvbmVudGUgZGUgZWRpw6fDo28gcmljaCB0ZXh0IGRlc3RhIHRlbGEuIFJlZ2lzdHJlIHVtIG7Dum1lcm8gKHBpeGVscykgb3UgdW1hIHBvcmNlbnRhZ2VtIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIG7Dum1lcm8gZGUgbGluaGFzIGRvIGVkaXRvciBkZSBkZWZpbmnDp8OjbyBkbyBJQyBuYSBpbnRlcmZhY2UgZGUgYWRtaW5pc3RyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbmUgYSBvcmRlbSBkb3MgZXN0YWRvcyBkZSBpbmNpZGVudGUgZGUgYWx0byAoZXg6IGNyw610aWNvKSBwYXJhIGJhaXhvIChleDogZnVuY2lvbmFsKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gb25kZSBjaGFtYWRvcyBhc3NvY2lhZG9zIHBvZGVtIGFmZXRhciBvIGVzdGFkb3MgZGUgdW0gSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgYSB0ZWxhIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgYSB0ZWxhIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgYSB0ZWxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgYSB0ZWxhIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRlIElDcyBtb3N0cmFkYXMgbmEgdmlzdWFsaXphw6fDo28gY29tcGxleGEgZGEgdGFiZWxhIGRlIGxpbmtzIHBhcmEgdG9kYXMgYXMgY2xhc3NlcyBkZSBJQ3MuIFNlIG7Do28gaG91dmVyIG5lbmh1bWEgZW50cmFkYSwgYXMgY29sdW5hcyBwYWRyw6NvIHNlcsOjbyBtb3N0cmFkYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgZXhpYmlkYXMgbmEgdGVsYSBkZSB0YWJlbGEgY29tcGxleGEgZGUgbGlua3MsIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgcHJlZml4YWRhIGNvbSBvIG5vbWUgZGEgY2xhc3NlIGUgZHVwbG8gZG9pcyBwb250b3MgKGV4LiBDb21wdXRhZG9yOjopLiBIw6EgYWxndW5zIGF0cmlidXRvcyBkZSBJQyBxdWUgc8OjbyBjb211bnMgYSB0b2RvcyBvcyBJQ3MgKHRhbCBjb21vIGEgY2xhc3NlIENvbXB1dGFkb3I6IENvbXB1dGFkb3I6Ok5vbWUsIENvbXB1dGFkb3I6OkVzdGFkb0ltcGxBdHVhbCwgQ29tcHV0YWRvcjo6SG9yYUNyaWFjYW8pLiBQYXJhIGV4aWJpciBhdHJpYnV0b3MgZGUgSUMgaW5kaXZpZHVhbG1lbnRlIGNvbW8gZGVmaW5pZG8gbmEgZGVmaW5pw6fDo28gZG8gSUMsIG8gc2VndWludGUgZXNxdWVtYSBkZXZlIHNlciB1c2FkbyAoY2xhc3NlIENvbXB1dGFkb3IsIHBvciBleGVtcGxvKTogQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjEsIENvbXB1dGFkb3I6OkRpc2NvUmlnaWRvOjoxOjpDYXBhY2lkYWRlOjoxLCBDb21wdXRhZG9yOjpEaXNjb1JpZ2lkbzo6MiwgQ29tcHV0YWRvcjo6RGlzY29SaWdpZG86OjI6OkNhcGFjaWRhZGU6OjEuIFNlIG7Do28gaMOhIGVudHJhZGEgcGFyYSBhIGNsYXNzZSBJQywgZW50w6NvIGFzIGNvbHVuYXMgcGFkcsOjbyBzw6NvIGV4aWJpZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWFpcyBpdGVucyBlc3TDo28gZGlzcG9uw612ZWlzIHBhcmEgIkHDp8OjbyIgbm8gdGVyY2Vpcm8gbsOtdmVsIGRhIGVzdHJ1dHVyYSBkbyBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXVhaXMgaXRlbnMgZXN0w6NvIGRpc3BvbsOtdmVpcyBubyBwcmltZWlybyBuw612ZWwgZGEgZXN0cnV0dXJhIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmUgcXVhaXMgaXRlbnMgZXN0w6NvIGRpc3BvbsOtdmVpcyBubyBzZWd1bmRvIG7DrXZlbCBkYSBlc3RydXR1cmEgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWFsIHRpcG8gZGUgYXNzb2NpYcOnw6NvIChub21lYWRvIGEgcGFydGlyIGRhIHBlcnNwZWN0aXZhIGRvIGNoYW1hZG8pIHBvZGUgYWZldGFyIG8gZXN0YWRvIGRlIHVtIElDIGFzc29jaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmUgcXVhbCB0aXBvIGRlIGNoYW1hZG8gcG9kZSBhZmV0YXIgbyBlc3RhZG8gZGUgdW0gSUMgYXNzb2NpYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0F0dWFsaXphw6fDo28gZGEgZGVmaW5pw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0V4Y2x1aXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0NvciBkbyBFc3RhZG8gZGUgSW1wbGFudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdFc3RhZG8gZGEgaW1wbGFudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ03Ds2R1bG8gZGUgZXZlbnRvIGRlIGNhbXBvIGRpbsOibWljbyBxdWUgbWFyY2EgYXMgZGVmaW5pw6fDtWVzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbW8gZm9yYSBkZSBzaW5jcm9uaWEsIHNlIG9zIGNhbXBvcyBkaW7Dom1pY29zIGNvbnRpZG9zIGZvcmVtIGFsdGVyYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBubyBjYW1wbyBkZSB0ZWxhIElUU00gYWRpY2lvbmFsIGRhIGludGVyZmFjZSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NhbXBvcyBkaW7Dom1pY29zIG1vc3RyYWRvcyBuYSB0ZWxhIGRlIHZpc8OjbyBnZXJhbCBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3MgbmEgdGVsYSBkZSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICdIYWJpbGl0YSBhIGZ1bsOnw6NvIGRlIGHDp8OjbyBlbSBtYXNzYSBlbSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlIHBhcmEgdHJhYmFsaGFyIGVtIG1haXMgZGUgdW0gSUMgcG9yIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0hhYmlsaXRhIGEgZnVuw6fDo28gZGUgYcOnw6NvIGVtIG1hc3NhIGVtIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGFwZW5hcyBwYXJhIGdydXBvcyBsaXN0YWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQXRpdmEvZGVzYXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBwYXJhIHZlcmlmaWNhciBzZSBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyBJVFNNIHTDqm0gbm9tZXMgZXhjbHVzaXZvcy4gQW50ZXMgZGUgYXRpdmFyIGVzc2Egb3DDp8Ojbywgdm9jw6ogZGV2ZSB2ZXJpZmljYXIgc2UgaMOhIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGrDoSBleGlzdGVudGVzIGNvbSBub21lcyBkdXBsaWNhZG9zIGVtIHNldSBzaXN0ZW1hLiBWb2PDqiBwb2RlIGZhemVyIGlzc28gY29tIG8gY29tYW5kbyBkbyBjb25zb2xlIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBFdmVudG8gcGFyYSBjb25maWd1cmFyIG8gZXN0YWRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcXVhbmRvIHVtIGNoYW1hZG8gZm9yIGFzc29jaWFkbyBhIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdDYW1wb3MgZG8gw61uZGljZSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLCB1c2Fkb3MgcGFyYSBhIHBlc3F1aXNhIGRlIHRleHRvIGNvbXBsZXRvLiBPcyBjYW1wb3MgdGFtYsOpbSBzw6NvIGFybWF6ZW5hZG9zLCBtYXMgbsOjbyBzw6NvIG9icmlnYXTDs3Jpb3MgcGFyYSBhIGZ1bmNpb25hbGlkYWRlIGdlcmFsLiBBIGluY2x1c8OjbyBkZSBhbmV4b3MgcG9kZSBzZXIgZGVzYXRpdmFkYSBkZWZpbmluZG8gYSBlbnRyYWRhIGNvbW8gMCBvdSBleGNsdWluZG8tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhcm1hemVuYWRvcyBubyDDrW5kaWNlIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcXVlIHPDo28gdXNhZG9zIHBhcmEgb3V0cmFzIGNvaXNhcyBhbMOpbSBkZSBwZXNxdWlzYXMgZGUgdGV4dG8gY29tcGxldG8uIFBhcmEgYSBmdW5jaW9uYWxpZGFkZSBjb21wbGV0YSwgdG9kb3Mgb3MgY2FtcG9zIHPDo28gb2JyaWdhdMOzcmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQYXJhIGNhZGEgc2VydmnDp28gZGEgV2ViIChjaGF2ZSksIMOpIHBvc3PDrXZlbCBkZWZpbmlyIHVtYSBtYXRyaXogZGUgY2xhc3NlcyAodmFsb3IpIG5hIHF1YWwgYSBpbXBvcnRhw6fDo28gw6kgcmVzdHJpdGEuIFBhcmEgdG9kYXMgYXMgY2xhc3NlcyBlc2NvbGhpZGFzIG91IHRvZGFzIGFzIGNsYXNzZXMgZXhpc3RlbnRlcywgb3MgYXRyaWJ1dG9zIGRlIGlkZW50aWZpY2HDp8OjbyBkZXZlcsOjbyBzZXIgZXNjb2xoaWRvcyBuYSBjb25maWd1cmHDp8OjbyBkbyBpbnZvY2Fkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZG8gbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgYSBjYW1hZGEgZG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cm8gZG8gbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgYSBjYW1hZGEgZG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnVmlzw6NvIEdlcmFsICBkbyBJdGVtIGRlIENvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkbyBkbyBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1aSBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1aSBlc3RhZG9zIGRlIGluY2lkZW50ZXMgbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhIHNlcmVtIGV4aWJpZG9zIG5vIHJlc3VsdGFkbyBkZXNzYSBvcGVyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ03Ds2R1bG8gcGFyYSB2ZXJpZmljYXIgbyBncnVwbyByZXNwb25zw6F2ZWwgcG9yIHVtYSBjbGFzc2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBvIGdydXBvIHJlc3BvbnPDoXZlbCBwb3IgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNw7NkdWxvIHBhcmEgZ2VyYXIgZXN0YXTDrXN0aWNhcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTm9tZSBkbyBtw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdOw7ptZXJvIGRvIG3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhIHNlcmVtIGV4aWJpZG9zIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTsO6bWVybyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhIHNlcmVtIGV4aWJpZG9zIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamV0b3MgYSBzZXJlbSBwZXNxdWlzYWRvcywgcXVhbnRhcyBlbnRyYWRhcyBlIHF1YWlzIGF0cmlidXRvcyBkZXZlbSBzZXIgZXhpYmlkb3MuIE9zIGF0cmlidXRvcyBkbyBDb25maWdJdGVtIGRldmVtIHNlciBhcm1hemVuYWRvcyBleHBsaWNpdGFtZW50ZSBwb3IgbWVpbyBkbyBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXPDo28gR2VyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIGFzIGNhdGVnb3JpYXMgZGUgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN1YWxpemHDp8OjbyBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvcyBmaWx0cm9zIGRlIGNvbHVuYSBkYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwZXF1ZW5hLiBPYnNlcnZhw6fDo286IGEgZGVmaW5pw6fDo28gZGUgIkFjdGl2ZSIgY29tbyAwIGltcGVkaXLDoSBhcGVuYXMgcXVlIG9zIGFnZW50ZXMgZWRpdGVtIGFzIGNvbmZpZ3VyYcOnw7VlcyBkZXNzZSBncnVwbyBlbSBzdWFzIHByZWZlcsOqbmNpYXMgcGVzc29haXMsIG1hcyBhaW5kYSBwZXJtaXRpcsOhIHF1ZSBvcyBhZG1pbmlzdHJhZG9yZXMgZWRpdGVtIGFzIGNvbmZpZ3VyYcOnw7VlcyBlbSBub21lIGRlIG91dHJvIHVzdcOhcmlvLiBVc2UgIlByZWZlcmVuY2VHcm91cCIgcGFyYSBjb250cm9sYXIgZW0gcXVlIMOhcmVhIGVzc2FzIGNvbmZpZ3VyYcOnw7VlcyBkZXZlbSBzZXIgbW9zdHJhZGFzIG5hIGludGVyZmFjZSBkbyB1c3XDoXJpby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgYSBjb3IgZG9zIGVzdGFkb3MgZGUgaW1wbGFudGHDp8OjbyBuYSB0ZWxhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkZSBlc3RhZG8gZGUgaW1wbGFudGHDp8OjbyBuYXMgcHJlZmVyw6puY2lhcyBkZSBleGliacOnw6NvIGRhIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIGRvIGdydXBvcyBkZSBwZXJtaXNzw6NvIGRlIGV4ZW1wbG8gZG9zIGF0cmlidXRvcyBkbyBjYXTDoWxvZ28gZ2VyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgbm9tZSBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdWFsaXphw6fDo28gZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIG3Ds2R1bG8gZGUgbsO6bWVyb3MgcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGFzIHDDoWdpbmFzIChuYXMgcXVhaXMgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc8OjbyBtb3N0cmFkb3MpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gbcOzZHVsbyBkZSBzdHJpbmcgZGUgdmVyc8OjbyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdWFsaXphw6fDo28gZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRvIGtpdCBkZSBmZXJyYW1lbnRhcyBkZSBtb2RlbG8gZGUgc3RyaW5nIGRlIHZlcnPDo28gcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3VhbGl6YcOnw6NvIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGFjaW9uYWRvciBkZSB2ZXJzw6NvIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN1YWxpemHDp8OjbyBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnRXhlY3V0YSBhIGHDp8OjbyBjb25maWd1cmFkYSBwYXJhIGNhZGEgZXZlbnRvIChjb21vIHVtIEludm9jYWRvcikgcGFyYSBjYWRhIFdlYnNlcnZpY2UgY29uZmlndXJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwbyBkZSBwZXJtaXNzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIGHDp8OjbyBkZSBhbmV4YcOnw6NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZG8gSVRTTSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZG8gSVRTTSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSB2aXN1YWxpemHDp8OjbyBlbSDDoXJ2b3JlIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZG8gSVRTTSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBkZXRhbGhlcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBhZGnDp8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGUgSVRTTSBlbSBtYXNzYSBuYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIGEgdGVsYSBkZSBlZGnDp8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBhIHRlbGEgZGUgaGlzdMOzcmljbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgYSB0ZWxhIGRlIGltcHJlc3PDo28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkbyBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWzDqWdpb3MgbmVjZXNzw6FyaW9zIHBhcmEgYXBhZ2FyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1Byb2N1cmFyIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAnQ29uZmlndXJhciBvIGVzdGFkbyBkZSB1bSBJQyBhdXRvbWF0aWNhbWVudGUgcXVhbmRvIHVtIENoYW1hZG8gZm9yIGFzc29jaWFkby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDb25maWd1cmEgbyBlc3RhZG8gZGUgaW1wbGFudGHDp8OjbyBuYSB0ZWxhIGRlIGHDp8OjbyBlbSBtYXNzYSBkZSBJQ3MgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ29uZmlndXJhIG8gZXN0YWRvIGRlIGluY2lkZW50ZSBuYSB0ZWxhIGRlIGHDp8OjbyBlbSBtYXNzYSBkZSBJQ3MgbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGFzc29jaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIHVtIG91dHJvIG9iamV0byBuYSB2aXPDo28gZGUgZGV0YWxoZXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBhY2Vzc2FyIG8gaGlzdMOzcmljbyBkZSB1bSBJQyBuYSB2aXPDo28gZ2VyYWwgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZXNzYXIgbyBoaXN0w7NyaWNvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzw6NvIGRlIGRldGFsaGVzIGRvIG1lc21vIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFwYWdhciBvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgVmlzw6NvIERldGFsaGFkYSBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGV4aWJpciBvcyBsaW5rcyBkb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gY29tbyB1bWEgdmlzdWFsaXphw6fDo28gZW0gw6Fydm9yZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZHVwbGljYXIgdW0gSUMgbmEgdmlzw6NvIGdlcmFsIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bSBsaW5rIG5vIG1lbnUgcGFyYSBkdXBsaWNhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc8OjbyBkZSBkZXRhbGhlcyBkbyBtZXNtbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc8OjbyBkZSBkZXRhbGhlcyBkbyBtZXNtbyBuYSBpbnRlcmZhY2UgZGUgYXRlbmRlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIHJldG9ybmFyIMOgIHRlbGEgZGUgdmlzw6NvIGRlIGRldGFsaGVzIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgaW1wcmltaXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXPDo28gZGUgZGV0YWxoZXMgZG8gbWVzbW8gbmEgaW50ZXJmYWNlIGRlIGF0ZW5kZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHBhcmEgZGV0YWxoYXIgdW0gSUMgbmEgdmlzw6NvIGdlcmFsIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgbyBoaXN0w7NyaWNvIGRvIGl0ZW0gY29uZmlndXJhw6fDo28gKG9yZGVtIHJldmVyc2EpIG5hIGludGVyZmFjZSBkZSBhdGVuZGVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0EgY2F0ZWdvcmlhIHBhZHLDo28gcXVlIMOpIG1vc3RyYWRhLCBzZSBuZW5odW1hIGZvciBzZWxlY2lvbmFkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ08gaWRlbnRpZmljYWRvciBwYXJhIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGV4LiBJdGVtQ29uZmlnIywgTWV1SXRlbUNvbmZpZyMuIE8gcGFkcsOjbyDDqSBJdGVtQ29uZmlnIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjaW9uYSBvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2ggYXV0b21hdGljYW1lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnRXhwcmVzc8OjbyBkZSBjYWRlaWEgZGUgY2FyYWN0ZXJlcyBkYSB2ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1ZlcnPDo28gU3RyaW5nIE1vZHVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdBY2lvbmFkb3IgZGUgdmVyc8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnU2UgYSBleGVjdcOnw6NvIGRvIENvbmZpZ0l0ZW1BQ0wgcG9kZSBzZXIgZXZpdGFkYSBwZWxhIHZlcmlmaWNhw6fDo28gZGFzIGRlcGVuZMOqbmNpYXMgZGUgY2FtcG8gZW0gY2FjaGUuIElzc28gcG9kZSBtZWxob3JhciBvIHRlbXBvIGRlIGNhcnJlZ2FtZW50byBkb3MgZm9ybXVsw6FyaW9zLCBtYXMgZGV2ZSBzZXIgZGVzYXRpdmFkbyBzZSBvcyBBQ0xNb2R1bGVzIGZvcmVtIHVzYWRvcyBwYXJhIElUU01Db25maWdJdGVtLSBlIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdRdWFpcyBpbmZvcm1hw6fDtWVzIGdlcmFpcyBzw6NvIG1vc3RyYWRhcyBubyBjYWJlw6dhbGhvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2NsYXNzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3DDs3MtcHJvZHV0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdpbXByb2R1dGl2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHV0aXZvJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiA0NCw0NSBjbSAoMTcsNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxIHBvbGVnYWRhcyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDY2LDY4IGNtICgyNiwyNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwb2xlZ2FkYXMgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDE5IHBvbGVnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDQsNDUgY20gKDEsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHBvbGVnYWRhcyAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnUmFjayBkZSAyMSBwb2xlZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBvbGVnYWRhcyAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJ1JhY2sgZGUgMjMgcG9sZWdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwb2xlZ2FkYXMgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHBvbGVnYWRhcyAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcG9sZWdhZGFzICgxMjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJVOiA4LDg5IGNtICgzLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBvbGVnYWRhcyAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcG9sZWdhZGFzICg4MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJ30gPSAnMzNVOiA1Nyw3NSBwb2xlZ2FkYXMgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBvbGVnYWRhcyAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcG9sZWdhZGFzICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcG9sZWdhZGFzICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgcG9sZWdhZGFzICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcG9sZWdhZGFzICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogMTg2LDY5IGNtICg3Myw1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgcG9sZWdhZGFzICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDIwMCwwMiBjbSAoNzgsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcxMjAwIG1tICg0NywyIHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDIxMywzNiBjbSAoODQgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKSd9ID0gJzRVOiA3IHBvbGVnYWRhcyAoMTcsNzggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDIyLDIzIGNtICg4LDc1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMjYsNjcgY20gKDEwLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMzEsMTIgY20gKDEyLDI1IHBvbGVnYWRhcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0IHBvbGVnYWRhcyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiA0MCwwMSBjbSAoMTUsNzUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ0NvbnRhYmlsaWRhZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICdBbG9jYcOnw6NvIGRlIGVuZGVyZcOnb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ0FkbWluaXN0cmFkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnVGVsZWZvbmUgYW5hbMOzZ2ljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ1RpcG8gZGUgYXBhcmVsaG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdDYXBhY2lkYWRlIGRhIGJhdGVyaWEgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUaXBvIGRlIGJhdGVyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdWZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZhY2UgZGUgYmFycmFtZW50byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnUHJvY2Vzc2Fkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ2xhc3NlIGRlIENQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnQ2FwYWNpZGFkZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnQ2FwYWNpZGFkZSBwb3IgcGxhY2EgZGUgdsOtZGVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTsO6bWVybyBkbyBjYXJ0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVpdG9yIGRlIGNhcnTDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVGlwbyBkZSBjYXJ0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdTb2Z0d2FyZSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0NhdGVnb3JpYSBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ1RheGEgZGUgcmVsw7NnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1ZlbG9jaWRhZGUgZG8gcmVsw7NnaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ0NlcnRpZmljYWRvcyBkZSBhc3NpbmF0dXJhIGRlIGPDs2RpZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ1RlbGVmb25lIGRlIGNvbmZlcsOqbmNpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGNvbnN1bHRvcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdDb250YXRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdFbnRyZSBlbSBjb250YXRvIGNvbSBvIGRpc3RyaWJ1aWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ0dlcmVuY2lhbWVudG8gZGUgY29udMOqaW5lcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcG8gZGUgY29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkbyBjb250cmF0byBhIHBhcnRpciBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkbyBjb250cmF0byBhdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbGVmb25lIHNlbSBmaW8gKHRlbGVmb25lIERFQ1QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nvc3QgdW5pdCd9ID0gJ1VuaWRhZGUgZGUgY3VzdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdDb250YWdlbSBkZSBsaWNlbsOnYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0RhdGEgZGUgY3JpYcOnw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdSYWNrIHBlcnNvbmFsaXphZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmVzZXJ2YWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2aWRvciBETlMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ0RhdGEgZGEgZmF0dXJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdEYXRhIGRvIHBlZGlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRGF0YSBkYSBnYXJhbnRpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICdEYXRhIGRlIGxhbsOnYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdEZXNrdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgYXNzaW5hdHVyYSBkZSBkb2N1bWVudG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnUmFjayBFVFNJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdDZXJ0aWZpY2Fkb3MgZGUgZS1tYWlsIChjZXJ0aWZpY2Fkb3MgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0byBkZSB0cmFiYWxobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0VuZGVyZcOnbyBJUCBmaW5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbSBkbyBzdXBvcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnRGF0YSBkZSBleHBpcmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRGlzY28gcsOtZ2lkbyBleHRlcm5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnRmlyZXdhbGwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICdGaXJtd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ0FybWF6ZW5hbWVudG8gZGUgZW5lcmdpYSBubyB2b2xhbnRlIGRvIG1vdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmF0b3IgZGUgZm9ybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ0NvbnRyYXRvIGRlIGZyYW5xdWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnTGl2cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcOnw7VlcyBnZXJhaXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdQbGFjYXMgZGUgdsOtZGVvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICdQbGFjYSBkZSB2w61kZW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsbyBkZSBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQZXNvIGRvIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdGb25lIGRlIG91dmlkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sbyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXJlbmNpYW1lbnRvIGRlIGlkZW50aWRhZGUgZSBhY2Vzc28gKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ07Dum1lcm8gZGUgaW52ZW50w6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDdXN0b3MgZGUgaW52ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEICh0ZWxhIGRlIGNyaXN0YWwgbMOtcXVpZG8pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIGRlIExFRCAoZGlvZG8gZW1pc3NvciBkZSBsdXopJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+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+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0ZvbmUgZGUgb3V2aWRvIFZSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1RlbGVmb25lIFZvSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9sdW1lIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dlYmNhbSd9ID0gJ1dlYmNhbSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</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+eydDb25maWcgSXRlbXMgcGVyIHBhZ2UnfSA9ICdJdGVucyBkZSBjb25maWd1cmHDp8OjbyBwb3IgcMOhZ2luYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnTsOjbyBmb3JhbSBlbmNvbnRyYWRvcyBkYWRvcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTZWxlY2lvbmFyIGVzdGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojbyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ0V4ZWN1dGFyIFBlc3F1aXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1Byb2N1cmFyIG5hcyB2ZXJzw7VlcyBhbnRlcmlvcmVzIHRhbWLDqW0/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcGFyYSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnTsOtdmVsIGRlIHByb2Z1bmRpZGFkZSc7CiAgICAkU2VsZi0+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+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRXJybyBhbyBzaW5jcm9uaXphciBhcyBkZWZpbmnDp8O1ZXMuIFZlcmlmaWNhciBvIHJlZ2lzdG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAnVGVtIGRlZmluacOnw7VlcyBJVFNNQ29uZmlnSXRlbSBxdWUgbsOjbyBlc3TDo28gc2luY3Jvbml6YWRhcy4gUG9yIGZhdm9yLCBpbXBsZW1lbnRlIGFzIGFsdGVyYcOnw7VlcyBkbyBjYW1wbyBkaW7Dom1pY28gSVRTTUNvbmZpZ0l0ZW0uJzsKCiAgICAjIERhdGFiYXNlIFhNTCAvIFNPUE0gRGVmaW5pdGlvbjogSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50LnNvcG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyZWQnfSA9ICdFeHBpcmFkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hbnV0ZW7Dp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmVhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUmVwYXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1JldGlyYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Jldmlzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0ZSBkZSBRdWFsaWRhZGUnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ1Zpc8OjbyBnZXJhbCBlIGNvbmZpcm1hw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0YcOnw6NvIGRlIGNsYXNzZXMvZnVuw6fDtWVzIGUgcmVzcGVjdGl2b3MgY2FtcG9zIHJlbGFjaW9uYWRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ09jb3JyZXUgdW0gZXJybyBkdXJhbnRlIGEgaW1wb3J0YcOnw6NvIGRhIGNsYXNzZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIE9jdWx0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gTW9zdHJhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Blcm1pdGUgY29uZGnDp8O1ZXMgZGUgcGVzcXVpc2EgYWxhcmdhZGFzIG5hIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuIENvbSBlc3RhIGZ1bmNpb25hbGlkYWRlLCDDqSBwb3Nzw612ZWwgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzdGUgdGlwbyBkZSBjb25kacOnw7VlcywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpw6fDtWVzIGRlIHBlc3F1aXNhIGFsYXJnYWRhcyBuYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4gQ29tIGVzdGEgZnVuY2lvbmFsaWRhZGUsIHBvZGUgcGVzcXVpc2FyLCBwb3IgZXhlbXBsbywgbyBub21lIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gY29tIGVzdGUgdGlwbyBkZSBjb25kacOnw7VlcywgY29tbyAiKCprZXkxKiYmKmtleTIqKSIgb3UgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdJQ3MgYXRyaWJ1w61kb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0lDcyBhdHJpYnXDrWRhcyDDoCBlbXByZXNhIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdJQ3MgYXRyaWJ1w61kYXMgYW8gdXRpbGl6YWRvciBkbyBjbGllbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICdEZWZpbmnDp8O1ZXMgZGEgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnVmVyaWZpY2EgdW0gbm9tZSDDum5pY28gYXBlbmFzIGRlbnRybyBkYSBtZXNtYSBjbGFzc2UgZGUgQ29uZmlnSXRlbSAoXCdjbGFzc1wnKSBvdSBnbG9iYWxtZW50ZSAoXCdnbG9iYWxcJyksIG8gcXVlIHNpZ25pZmljYSBxdWUgdG9kb3Mgb3MgQ29uZmlnSXRlbSBleGlzdGVudGVzIHPDo28gdGlkb3MgZW0gY29udGEgYW8gcHJvY3VyYXIgZHVwbGljYWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ0VzY29saGEgdW0gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW0gZXNxdWVtYSBkZSBub21lcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1NlbGVjaW9uYXIgdW0gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW0gZXNxdWVtYSBudW3DqXJpY28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0VzY29saGEgdW0gbcOzZHVsbyBwYXJhIGFwbGljYXIgdW0gZXNxdWVtYSBkZSBjYWRlaWEgZGUgdmVyc8O1ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnU2VsZWNpb25hciBhdHJpYnV0b3MgcGFyYSBhY2lvbmFyIGEgY3JpYcOnw6NvIGRlIHVtYSBub3ZhIHZlcnPDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBjYXRlZ29yaWVzIHRvIGFzc2lnbiB0byB0aGlzIGNvbmZpZyBpdGVtIGNsYXNzLid9ID0gJ0VzY29saGEgY2F0ZWdvcmlhcyBwYXJhIGF0cmlidWlyIGEgZXN0YSBjbGFzc2UgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdGaWx0cm9zIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRlIGNvbHVuYSBwYXJhIFZpc8OjbyBnZXJhbCBkbyBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sdW5hcyBxdWUgcG9kZW0gc2VyIGZpbHRyYWRhcyBuYSBzw61udGVzZSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLiBOb3RhOiBBcGVuYXMgc8OjbyBwZXJtaXRpZG9zIGF0cmlidXRvcyBkZSBJdGVucyBkZSBDb25maWd1cmHDp8OjbyBlIENhbXBvcyBEaW7Dom1pY29zIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdJdGVucyBkZSBDb25maWd1cmHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnQWRpY2lvbmFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnRWRpdGFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBxdWUgcGVybWl0ZSByZWdpc3RhciBvIGhpc3TDs3JpY28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG8gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBxdWUgYWN0dWFsaXphIG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHBhcmEgYSBzdWEgZGVmaW5pw6fDo28gYXR1YWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnSGlzdMOzcmljbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnSW1wcmltaXIgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdDb25maWd1cmFyIG8gem9vbSBkbyBpdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ1Zpc3RhIGVtIMOhcnZvcmUgZG8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFZlcnPDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnT3MgQ29uZmlnSXRlbXMgZGFzIHNlZ3VpbnRlcyBjbGFzc2VzIG7Do28gc2Vyw6NvIGFybWF6ZW5hZG9zIG5vIHNlcnZpZG9yIEVsYXN0aWNzZWFyY2guIFBhcmEgYXBsaWNhciBpc3RvIGFvcyBJQ3MgZXhpc3RlbnRlcywgYSBtaWdyYcOnw6NvIGRvIElDIHRlbSBkZSBzZXIgZXhlY3V0YWRhIGF0cmF2w6lzIGRhIGNvbnNvbGEsIGRlcG9pcyBkZSBhbHRlcmFyIGVzdGEgb3DDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnT3MgQ29uZmlnSXRlbXMgY29tIG9zIHNlZ3VpbnRlcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbsOjbyBzZXLDo28gYXJtYXplbmFkb3Mgbm8gc2Vydmlkb3IgRWxhc3RpY3NlYXJjaC4gUGFyYSBhcGxpY2FyIGlzdG8gYW9zIElDcyBleGlzdGVudGVzLCBhIG1pZ3Jhw6fDo28gZG8gSUMgdGVtIGRlIHNlciBleGVjdXRhZGEgYXRyYXbDqXMgZGEgY29uc29sYSwgZGVwb2lzIGRlIGFsdGVyYXIgZXN0YSBvcMOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdMaW1pdGUgZGUgSXRlbXMgZGUgQ29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0NvbmZpZ3VyYcOnw6NvIExpbWl0ZSBkZSBpdGVucyBwb3IgcMOhZ2luYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0Jhc2UgZGUgZGFkb3MgZGUgZ2VzdMOjbyBkYSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ03Ds2R1bG8gZW0gYmxvY28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUm91dGVyIGRlIHBlc3F1aXNhIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JpYXIgZSBnZXJpciBhcyBkZWZpbmnDp8O1ZXMgZGUgSXRlbnMgZGUgQ29uZmlndXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnQ3JpYSBiaWxoZXRlcyBwYXJhIENvbmZpZ0l0ZW1zIGVtIHBvbnRvcyBkZSB0ZW1wbyBlc3BlY8OtZmljb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ09zIGNsaWVudGVzIHBvZGVtIHZlciB2ZXJzw7VlcyBoaXN0w7NyaWNhcyBkZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnT3MgY2xpZW50ZXMgdMOqbSBhIHBvc3NpYmlsaWRhZGUgZGUgYWx0ZXJuYXIgbWFudWFsbWVudGUgZW50cmUgdmVyc8O1ZXMgaGlzdMOzcmljYXMgZGUgSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGFkb3MgcHJlZGVmaW5pZG9zIGEgdXRpbGl6YXIgbm8gYXRyaWJ1dG8gcGFyYSBvIGVjcsOjIGRlIHBlc3F1aXNhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLiBFeGVtcGxvOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhZG9zIHByZWRlZmluaWRvcyBhIHV0aWxpemFyIG5vIGF0cmlidXRvIHBhcmEgbyBlY3LDoyBkZSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ0RlZmluaXIgQWPDp8O1ZXMgb25kZSB1bSBib3TDo28gZGUgY29uZmlndXJhw6fDtWVzIGVzdMOhIGRpc3BvbsOtdmVsIG5hIHdpZGdldCB0aGUgb2JqZWN0b3MgbGlnYWRvcyAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiAgRXN0YXMgQWPDp8O1ZXMgZGV2ZW0gZXN0YXIgcmVnaXN0YWRhcyBub3Mgc2VndWludGVzIGZpY2hlaXJvcyBKUyBlIENTUzogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ0RlZmluZSB1bSBlc3F1ZW1hIFRlbXBsYXRlOjpUb29sa2l0IHBhcmEgc3RyaW5ncyBkZSB2ZXJzw6NvLiBBcGVuYXMgdXRpbGl6YWRvIHNlIG8gbcOzZHVsbyBWZXJzaW9uIFN0cmluZyBlc3RpdmVyIGRlZmluaWRvIGNvbW8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIGNvbmp1bnRvIGRlIGNvbmRpw6fDtWVzIHNvYiBhcyBxdWFpcyB1bSBjbGllbnRlIMOpIGF1dG9yaXphZG8gYSB2ZXIgdW0gaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gQXMgY29uZGnDp8O1ZXMgcG9kZW0sIG9wY2lvbmFsbWVudGUsIHNlciByZXN0cmluZ2lkYXMgYSBkZXRlcm1pbmFkb3MgZ3J1cG9zIGRlIGNsaWVudGVzLiBPIG5vbWUgw6kgbyDDum5pY28gYXRyaWJ1dG8gb2JyaWdhdMOzcmlvLiBTZSBuw6NvIGZvcmVtIGRhZGFzIG91dHJhcyBvcMOnw7VlcywgdG9kb3Mgb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gc2Vyw6NvIHZpc8OtdmVpcyBuZXNzYSBjYXRlZ29yaWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgYXMgcGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgZWxpbWluYXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB1dGlsaXphbmRvIGEgaW50ZXJmYWNlIGdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBwZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSBvYnRlciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHV0aWxpemFuZG8gYSBpbnRlcmZhY2UgZ2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHBlc3F1aXNhciBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBJVFNNIHV0aWxpemFuZG8gYSBJbnRlcmZhY2UgR2Vuw6lyaWNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lIGFzIHBlcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIGRlZmluaXIgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB1dGlsaXphbmRvIGEgSW50ZXJmYWNlIEdlbsOpcmljYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lIHVtIG3Ds2R1bG8gZGUgdmlzdGEgZ2VyYWwgcGFyYSBtb3N0cmFyIGEgdmlzdGEgcGVxdWVuYSBkYSBsaXN0YSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lIHNlIGFzIGV0aXF1ZXRhcyBkbyB0aXBvIGRlIGxpZ2HDp8OjbyBkZXZlbSBzZXIgYXByZXNlbnRhZGFzIG5hcyBsaWdhw6fDtWVzIGRvcyBuw7NzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnRGVmaW5lIGV4cHJlc3PDtWVzIHJlZ3VsYXJlcyBpbmRpdmlkdWFsbWVudGUgcGFyYSBjYWRhIGNsYXNzZSBDb25maWdJdGVtIHBhcmEgdmVyaWZpY2FyIG8gbm9tZSBkbyBDb25maWdJdGVtIGUgbW9zdHJhciBhcyBtZW5zYWdlbnMgZGUgZXJybyBjb3JyZXNwb25kZW50ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lIGFzIGNvbHVuYXMgZGlzcG9uw612ZWlzIGRlIElDcyBuYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIHNlciBjb21wb3N0YSBwb3IgdW0gbm9tZSBkZSBjbGFzc2UgZSB1bWEgbWF0cml6IGRlIGNhbXBvcyBkaXNwb27DrXZlaXMgcGFyYSBhIGNsYXNzZSBjb3JyZXNwb25kZW50ZS4gQXMgZW50cmFkYXMgZGUgY2FtcG9zIGRpbsOibWljb3MgdMOqbSBkZSByZXNwZWl0YXIgbyBlc3F1ZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHByZWRlZmluaWRvIHBhcmEgYSBvcmRlbmHDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGF0cmlidXRvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gcHJlZGVmaW5pZG8gcGFyYSBhIG9yZGVuYcOnw6NvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRvIHJlc3VsdGFkbyBkYSBwZXNxdWlzYSBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZGUgY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIHByZWRlZmluaWRvIHBhcmEgYSBvcmRlbmHDp8OjbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBkbyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGVzdGEgb3BlcmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHByZWRlZmluaWRhIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4gQWNpbWE6IG8gbWFpcyBhbnRpZ28gbm8gdG9wby4gUGFyYSBiYWl4bzogbyBtYWlzIHJlY2VudGUgbm8gdG9wby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHByZWRlZmluaWRhIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuIEFjaW1hOiBvIG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZSBhIG9yZGVtIHByZWRlZmluaWRhIGRvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBubyByZXN1bHRhZG8gZGEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGVzdGEgb3BlcmHDp8Ojby4gUGFyYSBjaW1hOiBvIG1haXMgYW50aWdvIG5vIHRvcG8uIFBhcmEgYmFpeG86IG8gbWFpcyByZWNlbnRlIG5vIHRvcG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgZXhpYmlkYXMgcG9yIHBhZHLDo28gbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgY29tcG9zdGEgcG9yIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7Dom1pY29zIHTDqm0gZGUgcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmUgYSBwcm9mdW5kaWRhZGUgZGFzIHJlbGHDp8O1ZXMgcHJlZGVmaW5pZGFzIGEgc2VyZW0gbW9zdHJhZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBhdHJpYnV0byBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG1vc3RyYWRvIHBvciBkZWZlaXRvIHBhcmEgbyBlY3LDoyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5lIG8gYXRyaWJ1dG8gZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBtb3N0cmFkbyBwb3IgZGVmZWl0byBwYXJhIG8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbSBkZSBjb25maWd1cmHDp8Ojby4gRXhlbXBsbzogIktleSIgKENoYXZlKSBkZXZlIHRlciBvIG5vbWUgZG8gY2FtcG8gZGluw6JtaWNvLCBuZXN0ZSBjYXNvICJYIiwgIkNvbnRlbnQiIChDb250ZcO6ZG8pIGRldmUgdGVyIG8gdmFsb3IgZG8gY2FtcG8gZGluw6JtaWNvLCBkZXBlbmRlbmRvIGRvIHRpcG8gZGUgY2FtcG8gZGluw6JtaWNvLCBUZXh0IChUZXh0byk6ICJ1bSB0ZXh0byIsIERyb3Bkb3duIChNZW51IHN1c3BlbnNvKTogIjEiLCBEYXRlL1RpbWUgKERhdGEvSG9yYSk6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBlIG91IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluZSBvIHN1Ym9iamV0byBwb3Igb21pc3PDo28gZGEgY2xhc3NlIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIGRpc3BvbsOtdmVpcyBkZSBJQ3MgbmEgdmlzw6NvIGdlcmFsIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIGRlcGVuZGVuZG8gZGEgY2xhc3NlIGRvIElDLiBDYWRhIGVudHJhZGEgZGV2ZSBzZXIgY29tcG9zdGEgcG9yIHVtIG5vbWUgZGUgY2xhc3NlIGUgdW1hIG1hdHJpeiBkZSBjYW1wb3MgZGlzcG9uw612ZWlzIHBhcmEgYSBjbGFzc2UgY29ycmVzcG9uZGVudGUuIEFzIGVudHJhZGFzIGRlIGNhbXBvcyBkaW7Dom1pY29zIHTDqm0gZGUgcmVzcGVpdGFyIG8gZXNxdWVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbmUgYSBhbHR1cmEgZG8gY29tcG9uZW50ZSBkbyBlZGl0b3IgZGUgcmljaCB0ZXh0IHBhcmEgZXN0ZSBlY3LDoy4gSW50cm9kdXphIG8gbsO6bWVybyAocGl4w6lpcykgb3UgbyB2YWxvciBwZXJjZW50dWFsIChyZWxhdGl2bykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIG7Dum1lcm8gZGUgbGluaGFzIHBhcmEgbyBlZGl0b3IgZGUgZGVmaW5pw6fDo28gZGUgSUMgbmEgaW50ZXJmYWNlIGRlIGFkbWluaXN0cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnRGVmaW5lIGEgb3JkZW0gZG9zIGVzdGFkb3MgaW5jaWRlbnRlcyBkZSBhbHRvIChwb3IgZXhlbXBsbywgY3JpY2l0YWwpIHBhcmEgYmFpeG8gKHBvciBleGVtcGxvLCBmdW5jaW9uYWwpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSByZWxldmFudCBkZXBsb3ltZW50IHN0YXRlcyB3aGVyZSBsaW5rZWQgdGlja2V0cyBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gcmVsZXZhbnRlcyBvbmRlIG9zIHRpY2tldHMgdmluY3VsYWRvcyBwb2RlbSBhZmV0YXIgbyBzdGF0dXMgZGUgdW0gSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgbyBlY3LDoyBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGxpbWl0ZSBkZSBwZXNxdWlzYSBwYXJhIG8gZWNyw6MgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmUgbyBsaW1pdGUgZGUgcGVzcXVpc2EgcGFyYSBvIGVjcsOjIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lIG8gbGltaXRlIGRlIHBlc3F1aXNhIHBhcmEgbyBlY3LDoyBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmUgYXMgY29sdW5hcyBkZSBJQ3MgYXByZXNlbnRhZGFzIG5hIHZpc3RhIGNvbXBsZXhhIGRhIHRhYmVsYSBkZSBsaWdhw6fDtWVzIHBhcmEgdG9kYXMgYXMgY2xhc3NlcyBkZSBJQ3MuIFNlIG7Do28gaG91dmVyIG5lbmh1bWEgZW50cmFkYSwgZW50w6NvIGFzIGNvbHVuYXMgcGFkcsOjbyBzw6NvIG1vc3RyYWRhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluZSBhcyBjb2x1bmFzIG1vc3RyYWRhcyBkb3MgSUNzIG5hIHZpc8OjbyBjb21wbGV4YSBkYSB0YWJlbGEgZGUgbGlnYcOnw7VlcywgZGVwZW5kZW5kbyBkYSBjbGFzc2UgZG8gSUMuIENhZGEgZW50cmFkYSBkZXZlIHNlciBwcmVmaXhhZGEgY29tIG8gbm9tZSBkYSBjbGFzc2UgZSBkb2lzIHBvbnRvcyBkdXBsb3MgKHBvciBleGVtcGxvLCBDb21wdXRhZG9yOjopLiBFeGlzdGVtIGFsZ3VucyBhdHJpYnV0b3MgZGUgSUMgcXVlIHPDo28gY29tdW5zIGEgdG9kb3Mgb3MgSUNzIChleGVtcGxvIHBhcmEgYSBjbGFzc2UgQ29tcHV0YWRvcjogQ29tcHV0YWRvcjo6Tm9tZSwgQ29tcHV0YWRvcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRhZG9yOjpDcmVhdGVUaW1lKS4gUGFyYSBtb3N0cmFyIGF0cmlidXRvcyBkZSBJQyBpbmRpdmlkdWFpcywgdGFsIGNvbW8gZGVmaW5pZG9zIG5hIGRlZmluacOnw6NvIGRlIElDLCBkZXZlIHNlciB1dGlsaXphZG8gbyBzZWd1aW50ZSBlc3F1ZW1hIChleGVtcGxvIHBhcmEgYSBjbGFzc2UgQ29tcHV0YWRvcik6IENvbXB1dGFkb3I6OkhhcmREaXNrOjoxLCBDb21wdXRhZG9yOjpIYXJkRGlzazo6MTo6Q2FwYWNpZGFkZTo6MSwgQ29tcHV0YWRvcjo6SGFyZERpc2s6OjIsIENvbXB1dGFkb3I6OkhhcmREaXNrOjoyOjpDYXBhY2lkYWRlOjoxLiBTZSBuw6NvIGV4aXN0aXIgcXVhbHF1ZXIgcmVnaXN0byBwYXJhIHVtYSBjbGFzc2UgZGUgSUMsIHPDo28gYXByZXNlbnRhZGFzIGFzIGNvbHVuYXMgcHJlZGVmaW5pZGFzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBpdGVucyBxdWUgZXN0w6NvIGRpc3BvbsOtdmVpcyBwYXJhICJBw6fDo28iIG5vIHRlcmNlaXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lIG9zIGl0ZW5zIHF1ZSBlc3TDo28gZGlzcG9uw612ZWlzIG5vIHByaW1laXJvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvcyBpdGVucyBxdWUgZXN0w6NvIGRpc3BvbsOtdmVpcyBubyBzZWd1bmRvIG7DrXZlbCBkYSBlc3RydXR1cmEgZG8gSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RlZmluZSBxdWUgdGlwbyBkZSBsaWdhw6fDo28gKG5vbWVhZGEgYSBwYXJ0aXIgZGEgcGVyc3BldGl2YSBkbyBiaWxoZXRlKSBwb2RlIGFmZXRhciBvIGVzdGFkbyBkZSB1bSBJQyBsaWdhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lIHF1ZSB0aXBvIGRlIGJpbGhldGUgcG9kZSBhZmV0YXIgbyBlc3RhZG8gZGUgdW0gSUMgbGlnYWRvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0F0dWFsaXphw6fDo28gZGEgZGVmaW5pw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsaW1pbmFyIGl0ZW0gZGUgY29uZmlndXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdDb3IgZG8gZXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRXN0YWRvIGRlIGltcGxhbnRhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGljYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICdNw7NkdWxvIGRlIGV2ZW50byBkZSBjYW1wbyBkaW7Dom1pY28gcXVlIG1hcmNhIGFzIGRlZmluacOnw7VlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBjb21vIGZvcmEgZGUgc2luY3JvbmlhLCBzZSBvcyBjYW1wb3MgZGluw6JtaWNvcyBjb250aWRvcyBmb3JlbSBhbHRlcmFkb3MuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBtb3N0cmFkb3Mgbm8gZWNyw6IgYWRpY2lvbmFsIElUU00gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ2FtcG9zIGRpbsOibWljb3MgYXByZXNlbnRhZG9zIG5vIGVjcsOjIGRlIHPDrW50ZXNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkZSBjbGllbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDYW1wb3MgZGluw6JtaWNvcyBhcHJlc2VudGFkb3Mgbm8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQXRpdmEgYSBmdW5jaW9uYWxpZGFkZSBkZSBhw6fDo28gZW0gbWFzc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gcGFyYSBxdWUgbyBmcm9udGVuZCBkbyBhZ2VudGUgdHJhYmFsaGUgZW0gbWFpcyBkbyBxdWUgdW0gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkZSBjYWRhIHZlei4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0F0aXZhIGEgZnVuY2lvbmFsaWRhZGUgZGUgYcOnw6NvIGVtIG1hc3NhIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGFwZW5hcyBwYXJhIG9zIGdydXBvcyBsaXN0YWRvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQXRpdmEvZGVzYWN0aXZhIGEgZnVuY2lvbmFsaWRhZGUgcGFyYSB2ZXJpZmljYXIgc2Ugb3MgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSB0w6ptIG5vbWVzIMO6bmljb3MuIEFudGVzIGRlIGF0aXZhciBlc3RhIG9ww6fDo28sIGRldmUgdmVyaWZpY2FyIHNlIGV4aXN0ZW0gbm8gc2V1IHNpc3RlbWEgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gY29tIG5vbWVzIGR1cGxpY2Fkb3MuIFBvZGUgZmF6w6otbG8gY29tIG8gY29tYW5kbyBkYSBjb25zb2xhIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTcOzZHVsbyBkZSBldmVudG9zIHBhcmEgZGVmaW5pciBvIGVzdGFkbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5vIGxpbmsgdGlja2V0LWNvbmZpZ2l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ0NhbXBvcyBkbyDDrW5kaWNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvLCB1dGlsaXphZG9zIHBhcmEgYSBwZXNxdWlzYSBkZSB0ZXh0byBpbnRlZ3JhbC4gT3MgY2FtcG9zIHRhbWLDqW0gc8OjbyBhcm1hemVuYWRvcywgbWFzIG7Do28gc8OjbyBvYnJpZ2F0w7NyaW9zIHBhcmEgYSBmdW5jaW9uYWxpZGFkZSBnZXJhbC4gQSBpbmNsdXPDo28gZGUgYW5leG9zIHBvZGUgc2VyIGRlc2FjdGl2YWRhIGRlZmluaW5kbyBhIGVudHJhZGEgY29tbyAwIG91IGVsaW1pbmFuZG8tYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ0NhbXBvcyBhcm1hemVuYWRvcyBubyDDrW5kaWNlIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIHF1ZSBzw6NvIHV0aWxpemFkb3MgcGFyYSBvdXRyYXMgY29pc2FzIHBhcmEgYWzDqW0gZGUgcGVzcXVpc2FzIGRlIHRleHRvIGludGVncmFsLiBQYXJhIHVtYSBmdW5jaW9uYWxpZGFkZSBjb21wbGV0YSwgdG9kb3Mgb3MgY2FtcG9zIHPDo28gb2JyaWdhdMOzcmlvcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQYXJhIGNhZGEgc2VydmnDp28gV2ViIChjaGF2ZSkgcG9kZSBzZXIgZGVmaW5pZG8gdW0gY29uanVudG8gZGUgY2xhc3NlcyAodmFsb3IpIMOgcyBxdWFpcyBhIGltcG9ydGHDp8OjbyDDqSBsaW1pdGFkYS4gUGFyYSB0b2RhcyBhcyBjbGFzc2VzIGVzY29saGlkYXMsIG91IHBhcmEgdG9kYXMgYXMgY2xhc3NlcyBleGlzdGVudGVzLCBvcyBhdHJpYnV0b3MgZGUgaWRlbnRpZmljYcOnw6NvIHRlcsOjbyBkZSBzZXIgZXNjb2xoaWRvcyBuYSBjb25maWd1cmHDp8OjbyBkbyBpbnZvY2Fkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdG8gZG8gbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgYSBjYW1hZGEgZG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RvIGRvIG3Ds2R1bG8gR2VuZXJpY0ludGVyZmFjZSBwYXJhIGEgY2FtYWRhIGRvIGludm9jYWRvciBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdG8gZG8gbcOzZHVsbyBHZW5lcmljSW50ZXJmYWNlIHBhcmEgYSBjYW1hZGEgZG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnU8OtbnRlc2UgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0VzdGFkbyBkbyBpbmNpZGVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1aSBlc3RhZG9zIGRlIGltcGxhbnRhw6fDo28gbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1aSBlc3RhZG9zIGRlIGluY2lkZW50ZXMgbmEgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ07Dum1lcm8gbcOheGltbyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBhIGFwcmVzZW50YXIgbm8gcmVzdWx0YWRvIGRlc3RhIG9wZXJhw6fDo28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTcOzZHVsbyBwYXJhIHZlcmlmaWNhciBvIGdydXBvIHJlc3BvbnPDoXZlbCBwb3IgdW1hIGNsYXNzZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNw7NkdWxvIHBhcmEgdmVyaWZpY2FyIG8gZ3J1cG8gcmVzcG9uc8OhdmVsIHBvciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ03Ds2R1bG8gcGFyYSBnZXJhciBlc3RhdMOtc3RpY2FzIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICdOb21lIGRvIG3Ds2R1bG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ07Dum1lcm8gTcOzZHVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOw7ptZXJvIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGEgYXByZXNlbnRhciBlbSBjYWRhIHDDoWdpbmEgZGUgdW0gcmVzdWx0YWRvIGRlIHBlc3F1aXNhIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ07Dum1lcm8gZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gYSBhcHJlc2VudGFyIGVtIGNhZGEgcMOhZ2luYSBkZSB1bSByZXN1bHRhZG8gZGUgcGVzcXVpc2EgbmEgaW50ZXJmYWNlIGRvIGNsaWVudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVjdG9zIGEgcHJvY3VyYXIsIHF1YW50YXMgZW50cmFkYXMgZSBxdWFpcyBvcyBhdHJpYnV0b3MgYSBtb3N0cmFyLiBPcyBhdHJpYnV0b3MgQ29uZmlnSXRlbSB0w6ptIGRlIHNlciBhcm1hemVuYWRvcyBleHBsaWNpdGFtZW50ZSBhdHJhdsOpcyBkbyBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdWaXPDo28gR2VyYWwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIGFzIGNhdGVnb3JpYXMgZGUgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvcyBmaWx0cm9zIGRlIGNvbHVuYSBkYSB2aXPDo28gZ2VyYWwgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBwZXF1ZW5vLiBOb3RhOiBhIGRlZmluacOnw6NvIGRlICJBY3RpdmUiIChBdGl2bykgcGFyYSAwIGFwZW5hcyBpbXBlZGUgb3MgYWdlbnRlcyBkZSBlZGl0YXJlbSBhcyBkZWZpbmnDp8O1ZXMgZGVzdGUgZ3J1cG8gbmFzIHN1YXMgcHJlZmVyw6puY2lhcyBwZXNzb2FpcywgbWFzIGNvbnRpbnVhIGEgcGVybWl0aXIgcXVlIG9zIGFkbWluaXN0cmFkb3JlcyBlZGl0ZW0gYXMgZGVmaW5pw6fDtWVzIGVtIG5vbWUgZGUgb3V0cm8gdXRpbGl6YWRvci4gVXRpbGl6ZSAiUHJlZmVyZW5jZUdyb3VwIiBwYXJhIGNvbnRyb2xhciBlbSBxdWUgw6FyZWEgZXN0YXMgZGVmaW5pw6fDtWVzIGRldmVtIHNlciBhcHJlc2VudGFkYXMgbmEgaW50ZXJmYWNlIGRvIHV0aWxpemFkb3IuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIGEgY29yIGRvcyBlc3RhZG9zIGRlIGltcGxlbWVudGHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgZGUgZXN0YWRvIGRlIGltcGxlbWVudGHDp8OjbyBuYXMgcHJlZmVyw6puY2lhcyBkZSB2aXN1YWxpemHDp8OjbyBkYSBpbnRlcmZhY2UgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkbyBncnVwb3MgZGUgcGVybWlzc8OjbyBkZSBleGVtcGxvIGRvcyBhdHJpYnV0b3MgZG8gY2F0w6Fsb2dvIGdlcmFsLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRlIG5vbWVzIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBwYXJhIG8gbcOzZHVsbyBkZSBuw7ptZXJvcyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdQYXLDom1ldHJvcyBkYXMgcMOhZ2luYXMgKG5hcyBxdWFpcyBvcyBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBzw6NvIHZpc3VhbGl6YWRvcykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRlIGNhZGVpYSBkZSB2ZXJzw7VlcyBwYXJhIGNsYXNzZXMgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgcHJlZmVyw6puY2lhcyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcsOibWV0cm9zIHBhcmEgbyBtw7NkdWxvIGRvIGNvbmp1bnRvIGRlIGZlcnJhbWVudGFzIGRvIG1vZGVsbyBkZSBjYWRlaWEgZGUgdmVyc8O1ZXMgcGFyYSBjbGFzc2VzIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIHByZWZlcsOqbmNpYXMgZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyw6JtZXRyb3MgcGFyYSBvIGFjaW9uYWRvciBkZSB2ZXJzw6NvIHBhcmEgY2xhc3NlcyBkZSBpdGVucyBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBwcmVmZXLDqm5jaWFzIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnRXhlY3V0YSBhIGHDp8OjbyBjb25maWd1cmFkYSBwYXJhIGNhZGEgZXZlbnRvIChjb21vIEludm9jYWRvcikgcGFyYSBjYWRhIFdlYnNlcnZpY2UgY29uZmlndXJhZG8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdQZXJtaXNzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXRpbGl6YXIgYSBhw6fDo28gZGUgYW5leGHDp8OjbyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBwZXNxdWlzYSBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHV0aWxpemFyIG8gZWNyw6MgZGUgcGVzcXVpc2EgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gSVRTTSBuYSBpbnRlcmZhY2UgZG8gY2xpZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1dGlsaXphciBvIGVjcsOjIGRlIHZpc3VhbGl6YcOnw6NvIGVtIMOhcnZvcmUgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBJVFNNIG5hIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBkZXRhbGhlcyBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBhZGnDp8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1dGlsaXphciBvIGVjcsOjIGRlIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gZW0gbWFzc2EgbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzc8O1ZXMgbmVjZXNzw6FyaWFzIHBhcmEgdXNhciBvIGZvcm11bMOhcmlvIGRlIGVkacOnw6NvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc3PDtWVzIG5lY2Vzc8OhcmlhcyBwYXJhIHVzYXIgbyBmb3JtdWzDoXJpbyBkZSBoaXN0w7NyaWNvIGRlIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gSVRTTSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNzw7VlcyBuZWNlc3PDoXJpYXMgcGFyYSB1c2FyIG8gZm9ybXVsw6FyaW8gZGUgaW1wcmVzc8OjbyBkZSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIElUU00gbmEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1ByaXZpbMOpZ2lvcyBuZWNlc3PDoXJpb3MgcGFyYSBlbGltaW5hciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdQcm9jdXJhciBpdGVucyBkZSBjb25maWd1cmHDp8Ojby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ0RlZmluaXIgbyBlc3RhZG8gZG8gaW5jaWRlbnRlIGRlIHVtIElDIGF1dG9tYXRpY2FtZW50ZSBxdWFuZG8gdW0gdGlja2V0IMOpIHZpbmN1bGFkbyBhIHVtIElDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZSBvIGVzdGFkbyBkZSBpbXBsZW1lbnRhw6fDo28gbm8gZWNyw6MgZW0gYmxvY28gZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkYSBpbnRlcmZhY2UgZG8gYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmUgbyBlc3RhZG8gZG8gaW5jaWRlbnRlIG5vIGVjcsOjIGVtIGJsb2NvIGRvIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb3N0cmEgdW0gbGluayBubyBtZW51IHF1ZSBwZXJtaXRlIGFzc29jaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gYSBvdXRybyBvYmpldG8gbmEgdmlzdGEgZGUgZGV0YWxoZXMgZG8gaXRlbSBkZSBjb25maWd1cmHDp8OjbyBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGFjZWRlciBhbyBoaXN0w7NyaWNvIGRlIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGFjZWRlciBvIGhpc3TDs3JpY28gZGUgaXRlbSBkZSBjb25maWd1cmHDp8OjbyBuYSB2aXN0YSBkZSBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGVsaW1pbmFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc3VhIHZpc3RhIGRlIHpvb20gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSBhcHJlc2VudGFyIGFzIGxpZ2HDp8O1ZXMgZG9zIGl0ZW5zIGRlIGNvbmZpZ3VyYcOnw6NvIGNvbW8gdW1hIFZpc3RhIGVtIMOBcnZvcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtYSBsaWdhw6fDo28gbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGR1cGxpY2FyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGVkaXRhciB1bSBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIG5hIHZpc3RhIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSB2b2x0YXIgw6AgdmlzdGEgZGUgem9vbSBkbyBpdGVtIGRlIGNvbmZpZ3VyYcOnw6NvIGRhIGludGVyZmFjZSBkbyBhZ2VudGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9zdHJhIHVtIGxpbmsgbm8gbWVudSBwYXJhIGltcHJpbWlyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgdmlzdGEgZGUgZGV0YWxoZXMgZGUgYWdlbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSB1bWEgbGlnYcOnw6NvIG5vIG1lbnUgcGFyYSBhbXBsaWFyIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28gbmEgc8OtbnRlc2UgZGUgaXRlbnMgZGUgY29uZmlndXJhw6fDo28gZGEgaW50ZXJmYWNlIGRvIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vc3RyYSBvIGhpc3TDs3JpY28gZG8gaXRlbSBjb25maWd1cmHDp8OjbyAob3JkZW0gaW52ZXJzYSkgbm8gaW50ZXJmYWNlIGRlIGFnZW50ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnQSBjYXRlZ29yaWEgcHJlZGVmaW5pZGEgcXVlIMOpIG1vc3RyYWRhLCBzZSBuw6NvIGZvciBzZWxlY2lvbmFkYSBuZW5odW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnTyBpZGVudGlmaWNhZG9yIGRlIHVtIGl0ZW0gZGUgY29uZmlndXJhw6fDo28sIHBvciBleGVtcGxvLCBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gQSBwcmVkZWZpbmnDp8OjbyDDqSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0FjY2lvbmEgYXV0b21hdGljYW1lbnRlIG8gaW52b2NhZG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnPDo28gRXhwcmVzc8OjbyBkZSBjYWRlaWEgZGUgY2FyYWN0ZXJlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICdWZXJzw6NvIFN0cmluZyBNw7NkdWxvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ0FjaW9uYWRvciBkZSB2ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICdTZSBhIGV4ZWN1w6fDo28gZGUgQ29uZmlnSXRlbUFDTCBwb2RlIHNlciBldml0YWRhIGF0cmF2w6lzIGRhIHZlcmlmaWNhw6fDo28gZGFzIGRlcGVuZMOqbmNpYXMgZGUgY2FtcG8gZW0gY2FjaGUuIElzdG8gcG9kZSBtZWxob3JhciBvcyB0ZW1wb3MgZGUgY2FycmVnYW1lbnRvIGRvcyBmb3JtdWzDoXJpb3MsIG1hcyB0ZW0gZGUgc2VyIGRlc2F0aXZhZG8sIHNlIG9zIEFDTE1vZHVsZXMgdGl2ZXJlbSBkZSBzZXIgdXRpbGl6YWRvcyBwYXJhIElUU01Db25maWdJdGVtLSBlIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdRdWUgaW5mb3JtYcOnw7VlcyBnZXJhaXMgc8OjbyBhcHJlc2VudGFkYXMgbm8gY2FiZcOnYWxoby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdjbGFzc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnZ2xvYmFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncMOzcy1wcm9kdXRpdm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ3Byw6ktcHJvZHV0aXZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdXRpdm8nOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcG9sZWdhZGFzICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcG9sZWdhZGFzICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcG9sZWdhZGFzICg2Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThVOiAzMSw1IHBvbGVnYWRhcyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJ1JhY2sgZGUgMTkgcG9sZWdhZGFzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBwb2xlZ2FkYXMgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcG9sZWdhZGFzICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICdSYWNrIGRlIDIxIHBvbGVnYWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUgcG9sZWdhZGFzICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnRXN0YW50ZSBkZSAyMyBwb2xlZ2FkYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IHBvbGVnYWRhcyAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcG9sZWdhZGFzICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwb2xlZ2FkYXMgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBwb2xlZ2FkYXMgKDgsODkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUgcG9sZWdhZGFzICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwb2xlZ2FkYXMgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHBvbGVnYWRhcyAoMTQ2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQgcG9sZWdhZGFzICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwb2xlZ2FkYXMgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwb2xlZ2FkYXMgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwb2xlZ2FkYXMgKDE3MywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSBwb2xlZ2FkYXMgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiAxODYsNjkgY20gKDczLDUgcG9sZWdhZGFzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwb2xlZ2FkYXMgKDExMDAgbW0pOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogMjAwLDAyIGNtICg3OCw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcG9sZWdhZGFzICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogMjEzLDM2IGNtICg4NCBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcG9sZWdhZGFzICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBwb2xlZ2FkYXMgKDIyLDIzIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZVOiAyNiw2NyBjbSAoMTAsNSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwb2xlZ2FkYXMgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcG9sZWdhZGFzICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDQwLDAxIGNtICgxNSw3NSBwb2xlZ2FkYXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAnQ29udGFiaWxpZGFkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0F0cmlidWnDp8OjbyBkZSBlbmRlcmXDp29zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ1RlbGVmb25lIGFuYWzDs2dpY28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICdUaXBvIGRlIGFwYXJlbGhvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnQ2FwYWNpZGFkZSBkYSBiYXRlcmlhIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVGlwbyBkZSBiYXRlcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnUHLDqWRpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnSW50ZXJmYWNlIGRlIGJhcnJhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ1Byb2Nlc3NhZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ0NsYXNzZSBkZSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0NhcGFjaWRhZGUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0NhcGFjaWRhZGUgcG9yIHBsYWNhIGdyw6FmaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnTsO6bWVybyBkbyBjYXJ0w6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnTGVpdG9yIGRlIGNhcnTDtWVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ1RpcG8gZGUgY2FydMOjbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGNsaWVudGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnU29mdHdhcmUgZGUgY2xpZW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICdDYXRlZ29yaWEgZGUgY2xpZW50ZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnVmVsb2NpZGFkZSBkbyByZWzDs2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnVmVsb2NpZGFkZSBkbyByZWzDs2dpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGFzc2luYXR1cmEgZGUgY8OzZGlnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnVGVsZWZvbmUgZGUgY29uZmVyw6puY2lhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgY29uc3VsdG9yaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ0NvbnRhY3RvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdDb250YWN0YXIgbyBkaXN0cmlidWlkb3InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdHZXN0w6NvIGRlIGNvbnRlbnRvcmVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnQ29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ1RpcG8gZGUgY29udHJhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdQZXLDrW9kbyBkbyBjb250cmF0byBhIHBhcnRpciBkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdQZXLDrW9kbyBkbyBjb250cmF0byBhdMOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ1RlbGVmb25lIHNlbSBmaW9zICh0ZWxlZm9uZSBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdDdXN0byB1bml0w6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdOw7ptZXJvIGRlIGxpY2Vuw6dhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0YSBkZSBjcmlhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ0VzdGFudGUgcGVyc29uYWxpemFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXNlcnZhZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ1NlcnZpZG9yIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0YSBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0RhdGEgZGEgZW5jb21lbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXRhIGRhIGdhcmFudGlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ0RhdGEgZGUgbGFuw6dhbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ8OBcmVhICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWNhZG9zIGRlIGFzc2luYXR1cmEgZGUgZG9jdW1lbnRvcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0Jhc3RpZG9yIEVUU0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1haWwgQ2VydGlmaWNhdGVzIChTL01JTUUgQ2VydGlmaWNhdGVzKSd9ID0gJ0NlcnRpZmljYWRvcyBkZSBjb3JyZWlvIGVsZXRyw7NuaWNvIChDZXJ0aWZpY2Fkb3MgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICdDb250cmF0byBkZSB0cmFiYWxobyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0VuZGVyZcOnbyBJUCBmaW5hbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0ZpbSBkbyBhcG9pbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0RhdGEgZGUgZXhwaXJhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0Rpc2NvIHLDrWdpZG8gZXh0ZXJubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ0ZpcmV3YWxsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnRmlybXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICdBcm1hemVuYW1lbnRvIGRlIGVuZXJnaWEgbm8gdm9sYW50ZSBkbyBtb3Rvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0ZhdG9yIGRlIGZvcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBmcmFucXVpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ0xpdnJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8O1ZXMgZ2VyYWlzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnUGxhY2FzIGdyw6FmaWNhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnUGxhY2EgZ3LDoWZpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdIYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsbyBkZSBoYXJkd2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdQZXNvIGRvIGhhcmR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdBdXNjdWx0YWRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ1Byb3RvY29sbyBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdHZXN0w6NvIGRlIElkZW50aWRhZGUgZSBBY2Vzc28gKElBTSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJ07Dum1lcm8gZGUgaW52ZW50w6FyaW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdDdXN0b3MgZGUgaW52ZXJzw6NvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnTsO6bWVybyBkYSBmYXR1cmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICdUZWNsYWRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ01vbml0b3IgTENEIChlY3LDoyBkZSBjcmlzdGFpcyBsw61xdWlkb3MpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdNb25pdG9yIExFRCAoRMOtb2RvIEVtaXNzb3IgZGUgTHV6KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdUZWxlZm9uZSBmaXhvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ3BvcnTDoXRpbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ0xhdGl0dWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnQ2FtYWRhIDE6IENhbWFkYSBmw61zaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ0NhbWFkYSAyOiBDYW1hZGEgZGUgbGlnYcOnw6NvIGRlIGRhZG9zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICdDYW1hZGEgMzogQ2FtYWRhIGRlIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJ30gPSAnQ2FtYWRhIDM6IENhbWFkYSBkZSByZWRlIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnQ2FtYWRhIDQ6IENhbWFkYSBkZSB0cmFuc3BvcnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdDYW1hZGEgNTogQ2FtYWRhIGRlIHNlc3PDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnQ2FtYWRhIDY6IENhbWFkYSBkZSBhcHJlc2VudGHDp8Ojbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0NhbWFkYSA3OiBDYW1hZGEgZGUgYXBsaWNhw6fDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgYXJyZW5kYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgTGljZW7Dp2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0NoYXZlIGRlIGxpY2Vuw6dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ1RpcG8gZGUgbGljZW7Dp2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgZnJvbSd9ID0gJ1BlcsOtb2RvIGRlIGxpY2Vuw6dhIGRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnUGVyw61vZG8gZGUgbGljZW7Dp2EgYXTDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBmb3NmYXRvIGRlIGZlcnJvIGUgbMOtdGlvIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBkZSBpw7VlcyBkZSBsw610aW8gKExpLWlvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdDb250cmF0byBkZSBlbXByw6lzdGltbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAnTG9jYWxpemFkbyBlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICdMb25naXR1ZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdGYWJyaWNhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICdDYXBhY2lkYWRlIG3DoXhpbWEgZGUgY2FyZ2EgKFcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSd9ID0gJ01lbcOzcmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnVGlwbyBkZSBtZW3Ds3JpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbGVtw7N2ZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAnTcOzdmVsL0VtYmFyY2Fkbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ0Rlc2NyacOnw6NvIGRvIG1vZGVsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICdSZXNvbHXDp8OjbyBkbyBtb25pdG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ1RhbWFuaG8gZG8gbW9uaXRvcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ3JhdG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnSW5mb3JtYcOnw7VlcyBzb2JyZSBhIHJlZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWHDp8O1ZXMgc29icmUgYSByZWRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdDYW1hZGEgZGUgcmVkZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgZGUgbsOtcXVlbC1jw6FkbWlvIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ0JhdGVyaWEgZGUgaGlkcmV0byBtZXTDoWxpY28gZGUgbsOtcXVlbCAoTmlNSCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnQWNvcmRvIGRlIG7Do28gZGl2dWxnYcOnw6NvIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQ2FkZXJubyBkZSBub3Rhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ07Dum1lcm8gZGUgQ1BVcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdOw7ptZXJvIGRlIG3Ds2R1bG9zIGRlIFJBTSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdOw7ptZXJvIGRlIHBsYWNhcyBncsOhZmljYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ01vbml0b3IgT0xFRCAoRMOtb2RvIEVtaXNzb3IgZGUgTHV6IE9yZ8OibmljbyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnQ3VzdG9zIGRlIGZ1bmNpb25hbWVudG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnTsO6bWVybyBkZSBlbmNvbWVuZGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICdPdXRybyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnU2HDrWRhcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdBY29yZG8gZGUgcGFyY2VyaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdOw7ptZXJvIGRlIHRlbGVmb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUaXBvIGRlIHRlbGVmb25lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnTsO6Y2xlb3MgZsOtc2ljb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICdGb3JuZWNpbWVudG8gZGUgZW5lcmdpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ0NvbXByYWRvIGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdQcm9mdW5kaWRhZGUgZGEgZXN0YW50ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1VuaWRhZGVzIGRlIHJhY2sgKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdTYWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnQ2FydMOjbyBTSU0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpY2Fkb3MgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ0NvbnRyYXRvIGRlIHZlbmRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1RlbGVmb25lIHBvciBzYXTDqWxpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnQmF0ZXJpYSBzZWxhZGEgZGUgY2h1bWJvLcOhY2lkbyAoU0xBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ07Dum1lcm8gZGUgc8OpcmllJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlIGRlIHNlcnZpZG9yJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnQ29udHJhdG8gZGUgc2VydmnDp28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICdFdGlxdWV0YSBkZSBzZXJ2acOnbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICdUaXBvIGRlIHRvbWFkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1NvZnR3YXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NwZWFrZXJzJ30gPSAnQWx0aWZhbGFudGVzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1BhZHLDo28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ0VuZGVyZcOnbyBJUCBpbmljaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICdBcm1hemVuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnUGFydGnDp8OjbyBkZSBhcm1hemVuYW1lbnRvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnRmlsaWFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdSZXN1bW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICdDbGllbnRlIGZpbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ0Zpb3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnUkFNIHRvdGFsIGRhIHBsYWNhIGdyw6FmaWNhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICdSQU0gdG90YWwgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAnTW9uaXRvciBkZSBlY3LDoyB0w6F0aWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnSHViIFVTQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ0F1cmljdWxhciBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdUZWxlZm9uZSBWb0lQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJjYW0nOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1NlbGVjdGHIm2kgYWNlc3QgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1J1bGHIm2kgY8SDdXRhcmVhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0RlIGFzZW1lbmVhLCBjxIN1dGHIm2kgw65uIHZlcnNpdW5pbGUgYW50ZXJpb2FyZT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBwZW50cnUgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ05pdmVsdWwgZGUgYWTDom5jaW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnWm9vbSBJbi9PdXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTml2ZWx1bCBtYXhpbSBkZSBsZWfEg3R1cmkgYSBmb3N0IGF0aW5zIHBlbnRydSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0VsZW1lbnQgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3JtYcibaWkgZGVzcHJlIGVsZW1lbnR1bCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICdTdGFyZWEgYWN0dWFsxIMgZGUgZGVzZsSDyJl1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnU3RhcmVhIGFjdHVhbMSDIGEgaW5jaWRlbnR1bHVpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1VsdGltYSBtb2RpZmljYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ01vZGlmaWNhdCB1bHRpbWEgZGF0xIMgZGUnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICdFbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ0PEg3V0YXJlIENvbmZpZ0l0ZW0nOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICdTZSB2b3IgaW1wb3J0YSB1cm3Eg3RvYXJlbGUgY2xhc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnVXJtxIN0b2FyZWxlIHJvbHVyaSB2b3IgZmkgaW1wb3J0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1JlyJtpbmXIm2kgY8SDIHZvciBmaSBjcmVhdGUgyJlpIGPDom1wdXJpbGUgZGluYW1pY2UgY29yZXNwdW56xIN0b2FyZSDImWkgY2xhc2VsZSBHZW5lcmFsQ2F0YWxvZyDImWkgY8SDIG51IGV4aXN0xIMgbyBlbGltaW5hcmUgYXV0b21hdMSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ1ZyZcibaSBzxIMgY29udGludWHIm2k/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ0F2ZcibaSBuZXZvaWUgZGUgRXhhbXBsZUNsYXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluacibaWEgbnUgZXN0ZSB1biBoYXNoIFlBTUwgdmFsaWQuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnUHJlemVudGFyZSBnZW5lcmFsxIM6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOdSBlc3RlIGRhdCBuaWNpdW4gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ0F2ZcibaSBuZXZvaWUgZGUgY2VsIHB1yJtpbiB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIHNlbGVjdGF0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ051IGF2ZcibaSBhY2NlcyBkZSBzY3JpZXJlIGxhIGFjZXN0IGVsZW1lbnQgZGUgY29uZmlndXJhcmU6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICdOdSBhIGZvc3QgZGVmaW5pdMSDIG5pY2lvIGRlZmluacibaWUgcGVudHJ1IGNsYXNhICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnRWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlICIlcyIgbnUgc2UgZ8SDc2XImXRlIMOubiBiYXphIGRlIGRhdGUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnTnUgYSBmb3N0IHBvc2liaWzEgyDImXRlcmdlcmVhIGNvbmZpZ2l0ZW11bHVpIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnTnUgcy1hIGfEg3NpdCBuaWNpbyB2ZXJzaXVuZSBwZW50cnUgQ29uZmlnSXRlbUlEICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOdSBlc3RlIGluZGljYXQgbmljaXVuIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgc2F1IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICdOdSBzZSBvZmVyxIMgYWNjZXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ051IHNlIHBvYXRlIGFmaciZYSBpc3RvcmljdWwsIG51IGVzdGUgZGF0IG5pY2l1biBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTnUgc2UgcG9hdGUgYWZpyJlhIGlzdG9yaWN1bCwgbnUgc2UgYWNvcmTEgyBkcmVwdHVyaSBkZSBhY2NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ05vdSBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ1ZlcnNpdW5lIG5vdcSDIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICdTdGFyZWEgZGUgaW1wbGVtZW50YXJlIGFjdHVhbGl6YXTEgyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXJlYSBpbmNpZGVudHVsdWkgYSBmb3N0IGFjdHVhbGl6YXTEgyAobmV3PSVzLCBvbGQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAnQ29uZmlnSXRlbSAoSUQ9JXMpIMiZdGVycyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ0xpbmsgY8SDdHJlICVzICh0aXA9JXMpIGFkxIN1Z2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICdMaW5rIGPEg3RyZSAlcyAodGlwPSVzKSDImXRlcnMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0RlZmluacibaWUgQ29uZmlnSXRlbSBhY3R1YWxpemF0xIMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ051bWUgYWN0dWFsaXphdCAobm91PSVzLCB2ZWNoaT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYnV0dWwgJXMgYSBmb3N0IGFjdHVhbGl6YXQgZGUgbGEgIiVzIiBsYSAiJXMiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJ1ZlcnNpdW5lYSAlcyDImXRlYXJzxIMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAnTnUgZXN0ZSBpbmRpY2F0IG5pY2l1biBDb25maWdJdGVtSUQgc2F1IFZlcnNpb25JRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTnUgc2UgcG9hdGUgYWZpyJlhIGVsZW1lbnR1bCBkZSBjb25maWd1cmFyZSwgbnUgc3VudCBhY29yZGF0ZSBkcmVwdHVyaSBkZSBhY2NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdDb25maWdJdGVtSUQgJXMgbnUgYSBmb3N0IGfEg3NpdCDDrm4gYmF6YSBkZSBkYXRlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAndGlwxINyaXQgZGUgJXMgbGEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyaW7Im8SDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnQ2xhc3NJRCBpbnZhbGlkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ051IGVzdGUgZGF0IG5pY2l1biBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ051IHNlIGFjb3JkxIMgZHJlcHR1cmkgZGUgYWNjZXMgcGVudHJ1IGFjZWFzdMSDIGNsYXPEgyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ05pY2kgdW4gcmV6dWx0YXQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnUmV6dWx0YXRlbGUgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAnTnUgc2UgcG9hdGUgYWZpyJlhIGVsZW1lbnR1bCwgbnUgc3VudCBhY29yZGF0ZSBkcmVwdHVyaSBkZSBhY2NlcyBwZW50cnUgQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSBudSBhIGZvc3QgZ8SDc2l0ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICdOdSBzLWF1IGfEg3NpdCB2ZXJzaXVuaSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICdvcGVyYcibaW9uYWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ2F2ZXJ0aXphcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhcmVhIGRlIGRlc2bEg8iZdXJhcmUgYSBhY2VzdHVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdTdGFyZWEgaW5jaWRlbnTEgyBhIGFjZXN0dWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gcGVybWlzc2lvbid9ID0gJ051IGFpIHBlcm1pc2l1bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ0ZpbHRydSBpbnZhbGlkISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ0VsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIGFmaciZYXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ1RpcCBkZSBzdGF0IGRlIGRlc2bEg8iZdXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVGlwdWwgZGUgc3RhdCBhbCBpbmNpZGVudHVsdWkgY3VyZW50JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJ8OObnRyZSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnUmVzdHJpY8ibaWkgZGUgY2xhc8SDIHBlbnRydSBlbGVtZW50dWwgZGUgY29uZmlndXJhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjdGHIm2kgdW5hIHNhdSBtYWkgbXVsdGUgY2xhc2UgcGVudHJ1IGEgcmVzdHJpY8ibaW9uYSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlIHNlbGVjdGFiaWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICdSZXN0cmljyJtpaSBkZSBjbGFzxIMgcGVudHJ1IGVsZW1lbnR1bCBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ1NlbGVjdGHIm2kgdW5hIHNhdSBtYWkgbXVsdGUgY2xhc2UgcGVudHJ1IGEgcmVzdHJpY8ibaW9uYSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlIHNlbGVjdGFiaWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRGluYW1pYyAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpYyAoVmVyc2l1bmUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgUmVmZXJlbmNpbmcgVHlwZSd9ID0gJ1RpcHVsIGRlIHJlZmVyaW7Im8SDIGEgbGVnxIN0dXJpaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICdEYWPEgyBhY2Vhc3TEgyBsZWfEg3R1csSDIHNlIGFwbGljxIMgbGEgQ29uZmlnSXRlbSBzYXUgbGEgdmVyc2l1bmVhIHN0YXRpY8SDIGEgb2JpZWN0dWx1aSBkZSByZWZlcmluyJvEgy4gQ2FsY3VsdWwgIkN1cnJlbnQgSW5jaWRlbnQgU3RhdGUiIHNlIGVmZWN0dWVhesSDIG51bWFpIMOubiBjYXp1bCBsZWfEg3R1cmlsb3IgZGluYW1pY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnU2VsZWN0YcibaSBhdHJpYnV0dWwgZHVwxIMgY2FyZSB2b3IgZmkgY8SDdXRhdGUgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnU3RydWN0dXJhIGRlIGJhesSDIG51IGVzdGUgdmFsaWTEgy4gVsSDIHJ1Z8SDbSBzxIMgZnVybml6YcibaSB1biBoYXNoIGN1IGRhdGUgw65uIGZvcm1hdCBZQU1MLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydGluZyB0aGUgWUFNTCBzdHJpbmcgd2l0aCBcJy0tLVwnIGlzIHJlcXVpcmVkLid9ID0gJ0VzdGUgbmVjZXNhciBjYSDImWlydWwgWUFNTCBzxIMgw65uY2VhcMSDIGN1ICItLS0iLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICdOdSBzLWEgcHV0dXQgY3VyxIPIm2EgdGFiZWx1bCBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOdSBhdSBmb3N0IGfEg3NpdGUgY8OibXB1cmkgZGluYW1pY2UgcmVsZXZhbnRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnTnUgcy1hIHB1dHV0IGluc2VyYSDDrm4gdGFiZWx1bCBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ0luc2VyYXRlIDAgcsOibmR1cmkgw65uIHRhYmVsdWwgY29uZmlnaXRlbV9saW5rJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC9PYmplY3RCYWNrZW5kL0lUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCd9ID0gJ051bcSDcnVsIG1heGltIGFsIHVudWkgZWxlbWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdWZXJzaXVuZWEgU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ0Vyb2FyZSBkZSBzaW5jcm9uaXphcmUgYSBkZWZpbmnIm2lpbG9yLiBWxIMgcnVnxINtIHPEgyB2ZXJpZmljYcibaSBqdXJuYWx1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdBdmXIm2kgZGVmaW5pyJtpaSBJVFNNQ29uZmlnSXRlbSBjYXJlIG51IHN1bnQgc2luY3Jvbml6YXRlLiBWxIMgcnVnxINtIHPEgyBpbXBsZW1lbnRhyJtpIG1vZGlmaWPEg3JpbGUgY8OibXB1cmlsb3IgZGluYW1pY2UgYWxlIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnRXhwaXJhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ8OObnRyZcibaW5lcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnUGxhbmlmaWNhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBhcmHIm2lpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaW9uYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUmV2aXp1aXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0YXJlL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQcmV6ZW50YXJlIGdlbmVyYWzEgyDImWkgY29uZmlybWFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICdJbXBvcnR1bCBjbGFzZWxvci9yb2x1cmlsb3IgyJlpIGFsIGPDom1wdXJpbG9yIGFmZXJlbnRlIGFjZXN0b3JhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnUy1hIHByb2R1cyBvIGVyb2FyZSDDrm4gdGltcHVsIGltcG9ydHVsdWkgY2xhc2VpLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gQXNjdW5zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBBZmnImWF0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpyJtpaSBkZSBjxIN1dGFyZSBleHRpbnNlIMOubiBjxIN1dGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLiBDdSBhY2Vhc3TEgyBmdW5jyJtpZSBwdXRlyJtpIGPEg3V0YSwgZGUgZXhlbXBsdSwgbnVtZWxlIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGN1IGFjZXN0IHRpcCBkZSBjb25kacibaWksIGN1bSBhciBmaSAiKCprZXkxKiYmJiprZXkyKikiIHNhdSAiKCprZXkxKnx8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdQZXJtaXRlIGNvbmRpyJtpaSBkZSBjxIN1dGFyZSBleHRpbnNlIMOubiBjxIN1dGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLiBDdSBhY2Vhc3TEgyBmdW5jyJtpZSBwdXRlyJtpIGPEg3V0YSwgZGUgZXhlbXBsdSwgbnVtZWxlIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGN1IGFjZXN0IHRpcCBkZSBjb25kacibaWksIGN1bSBhciBmaSAiKCprZXkxKiYmJiprZXkyKikiIHNhdSAiKCprZXkxKnx8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdJQyBhdHJpYnVpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ0lDIGF0cmlidWl0ZSBzb2NpZXTEg8ibaWkgY2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnSUMgYXRyaWJ1aXRlIHV0aWxpemF0b3J1bHVpIGNsaWVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnU2V0xINyaSBDTURCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdWZXJpZmljxIMgdW4gbnVtZSB1bmljIG51bWFpIMOubiBjYWRydWwgYWNlbGVpYciZaSBjbGFzZSBkZSBDb25maWdJdGVtICgiY2xhc3MiKSBzYXUgbGEgbml2ZWwgZ2xvYmFsICgiZ2xvYmFsIiksIGNlZWEgY2Ugw65uc2VhbW7EgyBjxIMgZmllY2FyZSBDb25maWdJdGVtIGV4aXN0ZW50IGVzdGUgbHVhdCDDrm4gY29uc2lkZXJhcmUgYXR1bmNpIGPDom5kIHNlIGNhdXTEgyBkdXBsaWNhdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdBbGVnZcibaSB1biBtb2R1bCBwZW50cnUgYSBpbXB1bmUgbyBzY2hlbcSDIGRlIGRlbnVtaXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQWxlZ2XIm2kgdW4gbW9kdWwgcGVudHJ1IGEgYXBsaWNhIG8gc2NoZW3EgyBkZSBudW1lcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ0FsZWdlyJtpIHVuIG1vZHVsIHBlbnRydSBhIGFwbGljYSBvIHNjaGVtxIMgZGUgyJlpcnVyaSBkZSB2ZXJzaXVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdBbGVnZcibaSBhdHJpYnV0ZWxlIHBlbnRydSBhIGRlY2xhbsiZYSBjcmVhcmVhIHVuZWkgbm9pIHZlcnNpdW5pLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdBbGVnZcibaSBjYXRlZ29yaWlsZSBwZSBjYXJlIHPEgyBsZSBhdHJpYnVpyJtpIGFjZXN0ZWkgY2xhc2UgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnRmlsdHJlIGRlIGNvbG9hbsSDIHBlbnRydSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlIHBlbnRydSBDb25maWdJdGVtIE92ZXJ2aWV3Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnQ29sb2FuZSBjYXJlIHBvdCBmaSBmaWx0cmF0ZSDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLiBOb3TEgzogU3VudCBwZXJtaXNlIG51bWFpIGF0cmlidXRlbGUgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgyJlpIGPDom1wdXJpbGUgZGluYW1pY2UgKER5bmFtaWNGaWVsZF9OYW1lWCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0VsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdBZMSDdWdhcmUgZWxlbWVudCBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdFZGl0YXJlIGVsZW1lbnQgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTW9kdWx1bCBkZSBldmVuaW1lbnRlIGFsIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGNhcmUgcGVybWl0ZSDDrm5yZWdpc3RyYXJlYSDDrm4gaXN0b3JpYyDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIGRlIGV2ZW5pbWVudCBhbCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBjYXJlIGFjdHVhbGl6ZWF6xIMgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBsYSBkZWZpbmnIm2lhIGxvciBjdXJlbnTEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdJc3RvcmljdWwgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ0ltcHJpbWFyZSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0NvbmZpZ3VyYcibaSB6b29tdWwgZWxlbWVudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnQ29uZmlnSXRlbSBUcmVlIFZpZXcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnVmVyc2l1bmVhIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgZGluIHVybcSDdG9hcmVsZSBjbGFzZSBudSB2b3IgZmkgc3RvY2F0ZSBwZSBzZXJ2ZXJ1bCBFbGFzdGljc2VhcmNoLiBQZW50cnUgYSBhcGxpY2EgYWNlc3QgbHVjcnUgbGEgSUMtdXJpbGUgZXhpc3RlbnRlLCBtaWdyYXJlYSBJQy11cmlsb3IgdHJlYnVpZSBzxIMgZmllIGV4ZWN1dGF0xIMgcHJpbiBpbnRlcm1lZGl1bCBjb25zb2xlaSwgZHVwxIMgbW9kaWZpY2FyZWEgYWNlc3RlaSBvcMibaXVuaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMgY3UgdXJtxIN0b2FyZWxlIHN0xINyaSBkZSBpbXBsZW1lbnRhcmUgbnUgdm9yIGZpIHN0b2NhdGUgcGUgc2VydmVydWwgRWxhc3RpY3NlYXJjaC4gUGVudHJ1IGEgYXBsaWNhIGFjZXN0IGx1Y3J1IGxhIElDLXVyaWxlIGV4aXN0ZW50ZSwgbWlncmFyZWEgSUMtdXJpbG9yIHRyZWJ1aWUgc8SDIGZpZSBleGVjdXRhdMSDIHByaW4gaW50ZXJtZWRpdWwgY29uc29sZWksIGR1cMSDIG1vZGlmaWNhcmVhIGFjZXN0ZWkgb3DIm2l1bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0NvbmZpZ3VyYcibaWUgRWxlbWVudCBsaW1pdMSDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdDb25maWd1cmHIm2llIExpbWl0YSBkZSBlbGVtZW50ZSBwZSBwYWdpbsSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnQmF6YSBkZSBkYXRlIGRlIGdlc3Rpb25hcmUgYSBjb25maWd1cmHIm2llaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0VsZW1lbnQgZGUgY29uZmlndXJhcmUgbW9kdWwgYnVsay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRWxlbWVudHVsIGRlIGNvbmZpZ3VyYXJlIGPEg3V0YXJlIHJvdXRlciBiYWNrZW5kIGFsIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnQ3JlYcibaSDImWkgZ2VzdGlvbmHIm2kgZGVmaW5pyJtpaWxlIHBlbnRydSBlbGVtZW50ZWxlIGRlIGNvbmZpZ3VyYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0NyZWVhesSDIGJpbGV0ZSBwZW50cnUgQ29uZmlnSXRlbXMgbGEgYW51bWl0ZSBtb21lbnRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdDbGllbsibaWkgcG90IHZlZGVhIHZlcnNpdW5pbGUgaXN0b3JpY2UgYWxlIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdDbGllbsibaWkgYXUgcG9zaWJpbGl0YXRlYSBkZSBhIGNvbXV0YSBtYW51YWwgw65udHJlIHZlcnNpdW5pbGUgaXN0b3JpY2UgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0ZSBpbXBsaWNpdGUgY2FyZSB0cmVidWllIHV0aWxpemF0ZSDDrm4gYXRyaWJ1dHVsIHBlbnRydSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuIEV4ZW1wbHU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnRGF0ZSBpbXBsaWNpdGUgY2FyZSB0cmVidWllIHV0aWxpemF0ZSDDrm4gYXRyaWJ1dHVsIHBlbnRydSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuIEV4ZW1wbHU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmnIm2kgYWPIm2l1bmlsZSDDrm4gY2FyZSBlc3RlIGRpc3BvbmliaWwgdW4gYnV0b24gZGUgc2V0xINyaSDDrm4gd2lkZ2V0dWwgb2JpZWN0ZWxvciBsZWdhdGUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUmXIm2luZcibaSBjxIMgYWNlc3RlIGFjyJtpdW5pIHRyZWJ1aWUgc8SDIGFpYsSDIMOubnJlZ2lzdHJhdGUgdXJtxIN0b2FyZWxlIGZpyJlpZXJlIEpTIMiZaSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIMiZaSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmnIm2kgbyBzY2hlbcSDIFRlbXBsYXRlOjpUb29sa2l0IHBlbnRydSDImWlydXJpbGUgZGUgdmVyc2l1bmkuIFNlIHV0aWxpemVhesSDIG51bWFpIGRhY8SDIG1vZHVsdWwgZGUgyJlpcnVyaSBkZSB2ZXJzaXVuaSBlc3RlIHNldGF0IGxhIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluacibaSB1biBzZXQgZGUgY29uZGnIm2lpIMOubiBjYXJlIHVuIGNsaWVudCBhcmUgdm9pZSBzxIMgdmFkxIMgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZS4gQ29uZGnIm2lpbGUgcG90IGZpIG9wyJtpb25hbCByZXN0cmljyJtpb25hdGUgbGEgYW51bWl0ZSBncnVwdXJpIGRlIGNsaWVuyJtpLiBOdW1lbGUgZXN0ZSBzaW5ndXJ1bCBhdHJpYnV0IG9ibGlnYXRvcml1LiBEYWPEgyBudSBzZSBvZmVyxIMgYWx0ZSBvcMibaXVuaSwgdG9hdGUgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSB2b3IgZmkgdml6aWJpbGUgw65uIGNhdGVnb3JpYSByZXNwZWN0aXbEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgcGVybWlzaXVuaWxlIG5lY2VzYXJlIHBlbnRydSBhIMiZdGVyZ2UgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZSBJVFNNIHV0aWxpesOibmQgaW50ZXJmYcibYSBnZW5lcmljxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHBlcm1pc2l1bmlsZSBuZWNlc2FyZSBwZW50cnUgYSBvYsibaW5lIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIElUU00gdXRpbGl6w6JuZCBpbnRlcmZhyJthIGdlbmVyaWPEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgcGVybWlzaXVuaWxlIG5lY2VzYXJlIHBlbnRydSBhIGPEg3V0YSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIHV0aWxpesOibmQgaW50ZXJmYcibYSBnZW5lcmljxIMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHBlcm1pc2l1bmlsZSBuZWNlc2FyZSBwZW50cnUgYSBzZXRhIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIElUU00gdXRpbGl6w6JuZCBpbnRlcmZhyJthIGdlbmVyaWPEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSB1biBtb2R1bCBkZSBwcmV6ZW50YXJlIGdlbmVyYWzEgyBwZW50cnUgYSBhZmnImWEgdml6dWFsaXphcmVhIG1pY8SDIGEgdW5laSBsaXN0ZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBkYWPEgyBldGljaGV0ZWxlIHRpcHVsdWkgZGUgbGVnxIN0dXLEgyB0cmVidWllIHPEgyBmaWUgYWZpyJlhdGUgw65uIGNvbmV4aXVuaWxlIG5vZHVyaWxvci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgZXhwcmVzaWkgcmVndWxhdGUgaW5kaXZpZHVhbCBwZW50cnUgZmllY2FyZSBjbGFzxIMgQ29uZmlnSXRlbSBwZW50cnUgYSB2ZXJpZmljYSBudW1lbGUgQ29uZmlnSXRlbSDImWkgcGVudHJ1IGEgYWZpyJlhIG1lc2FqZWxlIGRlIGVyb2FyZSBjb3Jlc3B1bnrEg3RvYXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgY29sb2FuZWxlIGRpc3BvbmliaWxlIHBlbnRydSBJQyDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgw65uIGZ1bmPIm2llIGRlIGNsYXNhIElDLiBGaWVjYXJlIGludHJhcmUgdHJlYnVpZSBzxIMgZmllIGNvbXB1c8SDIGRpbnRyLXVuIG51bWUgZGUgY2xhc8SDIMiZaSBvIG1hdHJpY2UgZGUgY8OibXB1cmkgZGlzcG9uaWJpbGUgcGVudHJ1IGNsYXNhIGNvcmVzcHVuesSDdG9hcmUuIEludHLEg3JpbGUgZGUgY8OibXB1cmkgZGluYW1pY2UgdHJlYnVpZSBzxIMgcmVzcGVjdGUgc2NoZW1hIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGF0cmlidXR1bCBpbXBsaWNpdCBhbCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBwZW50cnUgc29ydGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIHJlenVsdGF0dWwgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGF0cmlidXR1bCBpbXBsaWNpdCBhbCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBwZW50cnUgc29ydGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIHJlenVsdGF0dWwgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgaW1wbGljaXQgYWwgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgcGVudHJ1IHNvcnRhcmVhIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGFsIHJlenVsdGF0dWx1aSBjxIN1dMSDcmlpIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBhY2Vhc3TEgyBvcGVyYcibaXVuZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgb3JkaW5lYSBpbXBsaWNpdMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgw65uIHJlenVsdGF0dWwgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuIFN1czogY2VsIG1haSB2ZWNoaSDDrm4gcGFydGVhIGRlIHN1cy4gSm9zOiBjZWwgbWFpIHJlY2VudCDDrm4gcGFydGVhIGRlIHN1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgb3JkaW5lYSBpbXBsaWNpdMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgw65uIHJlenVsdGF0dWwgY8SDdXTEg3JpaSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuIFN1czogY2VsIG1haSB2ZWNoaSDDrm4gcGFydGVhIGRlIHN1cy4gSm9zOiBjZWwgbWFpIHJlY2VudCDDrm4gcGFydGVhIGRlIHN1cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBvcmRpbmVhIGltcGxpY2l0xIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSDDrm4gcmV6dWx0YXR1bCBjxIN1dMSDcmlpIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBhY2Vhc3TEgyBvcGVyYcibaXVuZS4gw45uIHN1czogY2VsIG1haSB2ZWNoaSDDrm4gc3VzLiBKb3M6IGNlbCBtYWkgcmVjZW50IMOubiBwYXJ0ZWEgZGUgc3VzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjb2xvYW5lbGUgYWZpyJlhdGUgw65uIG1vZCBpbXBsaWNpdCBhbGUgSUMgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIMOubiBmdW5jyJtpZSBkZSBjbGFzYSBJQy4gRmllY2FyZSBpbnRyYXJlIHRyZWJ1aWUgc8SDIGZpZSBjb21wdXPEgyBkaW50ci11biBudW1lIGRlIGNsYXPEgyDImWkgbyBtYXRyaWNlIGRlIGPDom1wdXJpIGRpc3BvbmliaWxlIHBlbnRydSBjbGFzYSBjb3Jlc3B1bnrEg3RvYXJlLiBJbnRyxINyaWxlIGRlIGPDom1wdXJpIGRpbmFtaWNlIHRyZWJ1aWUgc8SDIHJlc3BlY3RlIHNjaGVtYSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmXImXRlIGFkw6JuY2ltZWEgaW1wbGljaXTEgyBhIHJlbGHIm2lpbG9yIGNhcmUgdXJtZWF6xIMgc8SDIGZpZSBhZmnImWF0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBhdHJpYnV0dWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBhZmnImWF0IMOubiBtb2QgaW1wbGljaXQgcGVudHJ1IGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgYXRyaWJ1dHVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgYWZpyJlhdCDDrm4gbW9kIGltcGxpY2l0IHBlbnRydSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuIEV4ZW1wbHU6ICJLZXkiIHRyZWJ1aWUgc8SDIGFpYsSDIG51bWVsZSBjw6JtcHVsdWkgZGluYW1pYywgw65uIGFjZXN0IGNheiAiWCIsICJDb250ZW50IiB0cmVidWllIHPEgyBhaWLEgyB2YWxvYXJlYSBjw6JtcHVsdWkgZGluYW1pYyDDrm4gZnVuY8ibaWUgZGUgdGlwdWwgZGUgY8OibXAgZGluYW1pYywgVGV4dDogImEgdGV4dCIsIERyb3Bkb3duOiAiMSIsIERhdGUvVGltZTogIlNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFN0b3BTZWNvbmQ9NTk7XCcgyJlpIHNhdSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHN1Ym9iaWVjdHVsIGltcGxpY2l0IGFsIGNsYXNlaSAiSVRTTUNvbmZpZ0l0ZW0iLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjb2xvYW5lbGUgZGlzcG9uaWJpbGUgcGVudHJ1IElDIMOubiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSDDrm4gZnVuY8ibaWUgZGUgY2xhc2EgSUMuIEZpZWNhcmUgaW50cmFyZSB0cmVidWllIHPEgyBmaWUgY29tcHVzxIMgZGludHItdW4gbnVtZSBkZSBjbGFzxIMgyJlpIG8gbWF0cmljZSBkZSBjw6JtcHVyaSBkaXNwb25pYmlsZSBwZW50cnUgY2xhc2EgY29yZXNwdW56xIN0b2FyZS4gSW50csSDcmlsZSBkZSBjw6JtcHVyaSBkaW5hbWljZSB0cmVidWllIHPEgyByZXNwZWN0ZSBzY2hlbWEgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSDDrm7Eg2zIm2ltZWEgcGVudHJ1IGNvbXBvbmVudGEgZWRpdG9yIGRlIHRleHQgYm9nYXQgcGVudHJ1IGFjZXN0IGVjcmFuLiBJbnRyb2R1Y2XIm2kgbnVtxINydWwgKHBpeGVsaSkgc2F1IHZhbG9hcmVhIHByb2NlbnR1YWzEgyAocmVsYXRpdsSDKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBudW3Eg3J1bCBkZSByw6JuZHVyaSBwZW50cnUgZWRpdG9ydWwgZGUgZGVmaW5pyJtpaSBDSSBkaW4gaW50ZXJmYcibYSBkZSBhZG1pbmlzdHJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgb3JkaW5lYSBzdMSDcmlsb3IgaW5jaWRlbnRlIGRlIGxhIG1hcmUgKGRlIGV4ZW1wbHUsIGNyaWNpdGFsxIMpIGxhIG1pY8SDIChkZSBleGVtcGx1LCBmdW5jyJtpb25hbMSDKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmXImXRlIHN0xINyaWxlIGRlIGltcGxlbWVudGFyZSByZWxldmFudGUgw65uIGNhcmUgYmlsZXRlbGUgbGVnYXRlIHBvdCBhZmVjdGEgc3RhcmVhIHVudWkgSUMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBsaW1pdGEgZGUgY8SDdXRhcmUgcGVudHJ1IGVjcmFudWwgQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGxpbWl0YSBkZSBjxIN1dGFyZSBwZW50cnUgZWNyYW51bCBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluZciZdGUgbGltaXRhIGRlIGPEg3V0YXJlIHBlbnRydSBlY3JhbnVsIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBsaW1pdGEgZGUgY8SDdXRhcmUgcGVudHJ1IGVjcmFudWwgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjb2xvYW5lbGUgYWZpyJlhdGUgYWxlIElDIMOubiB2aXp1YWxpemFyZWEgY29tcGxleMSDIGEgdGFiZWx1bHVpIGRlIGxlZ8SDdHVyaSBwZW50cnUgdG9hdGUgY2xhc2VsZSBkZSBJQy4gRGFjxIMgbnUgZXhpc3TEgyBuaWNpbyBpbnRyYXJlLCBzdW50IGFmaciZYXRlIGNvbG9hbmVsZSBpbXBsaWNpdGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmXImXRlIGNvbG9hbmVsZSBhZmnImWF0ZSBhbGUgSUMgw65uIHZpenVhbGl6YXJlYSBjb21wbGV4xIMgYSB0YWJlbHVsdWkgZGUgbGVnxIN0dXJpLCDDrm4gZnVuY8ibaWUgZGUgY2xhc2EgSUMuIEZpZWNhcmUgaW50cmFyZSB0cmVidWllIHPEgyBmaWUgcHJlY2VkYXTEgyBkZSBudW1lbGUgY2xhc2VpIMiZaSBkZSBkb3XEgyBwdW5jdGUgZGUgc3VzcGVuc2llIChkZSBleGVtcGx1LCBDb21wdXRlcjo6OikuIEV4aXN0xIMgY8OidGV2YSBDSS1BdHRyaWJ1dGVzIGNhcmUgc3VudCBjb211bmUgdHV0dXJvciBJQy11cmlsb3IgKGV4ZW1wbHUgcGVudHJ1IGNsYXNhIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBQZW50cnUgYSBhZmnImWEgYXRyaWJ1dGVsZSBpbmRpdmlkdWFsZSBhbGUgSUMsIGFzdGZlbCBjdW0gc3VudCBkZWZpbml0ZSDDrm4gZGVmaW5pyJtpYSBJQywgdHJlYnVpZSB1dGlsaXphdMSDIHVybcSDdG9hcmVhIHNjaGVtxIMgKGV4ZW1wbHUgcGVudHJ1IGNsYXNhIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIERhY8SDIG51IGV4aXN0xIMgbmljaW8gaW50cmFyZSBwZW50cnUgbyBjbGFzxIMgZGUgSUMsIHN1bnQgYWZpyJlhdGUgY29sb2FuZWxlIGltcGxpY2l0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmXImXRlIGVsZW1lbnRlbGUgY2FyZSBzdW50IGRpc3BvbmliaWxlIHBlbnRydSAiQWPIm2l1bmUiIMOubiBhbCB0cmVpbGVhIG5pdmVsIGFsIHN0cnVjdHVyaWkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjZSBlbGVtZW50ZSBzdW50IGRpc3BvbmliaWxlIMOubiBwcmltdWwgbml2ZWwgYWwgc3RydWN0dXJpaSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjZSBlbGVtZW50ZSBzdW50IGRpc3BvbmliaWxlIMOubiBhbCBkb2lsZWEgbml2ZWwgYWwgc3RydWN0dXJpaSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjZSB0aXAgZGUgbGVnxIN0dXLEgyAobnVtaXTEgyBkaW4gcGVyc3BlY3RpdmEgYmlsZXR1bHVpKSBwb2F0ZSBhZmVjdGEgc3RhcmVhIHVudWkgSUMgbGVnYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnRGVmaW5lyJl0ZSBjZSB0aXAgZGUgdGljaGV0IHBvYXRlIGFmZWN0YSBzdGFyZWEgdW51aSBJQyBsZWdhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICdBY3R1YWxpemFyZSBkZWZpbmnIm2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfImHRlcmdlcmVhIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnQ3Vsb2FyZWEgc3TEg3JpaSBkZSBkZXNmxIPImXVyYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0RlcGxveW1lbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEdXBsaWNhdGUnfSA9ICdEdXBsaWNhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIGRlIGV2ZW5pbWVudCBwZW50cnUgY8OibXB1cmkgZGluYW1pY2UgY2FyZSBtYXJjaGVhesSDIGRlZmluacibaWlsZSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBjYSBmaWluZCBuZXNpbmNyb25pemF0ZSwgZGFjxIMgc2UgbW9kaWZpY8SDIGPDom1wdXJpbGUgZGluYW1pY2UgY2FyZSBsZSBjb27Im2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ8OibXB1cmkgZGluYW1pY2UgYWZpyJlhdGUgw65uIGVjcmFudWwgY8OibXB1bHVpIElUU00gc3VwbGltZW50YXIgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdDw6JtcHVyaSBkaW5hbWljZSBhZmnImWF0ZSDDrm4gZWNyYW51bCBkZSBwcmV6ZW50YXJlIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQ8OibXB1cmkgZGluYW1pY2UgYWZpyJlhdGUgw65uIGVjcmFudWwgZGUgY8SDdXRhcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ0FjdGl2ZWF6xIMgY2FyYWN0ZXJpc3RpY2EgZGUgYWPIm2l1bmUgw65uIG1hc8SDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgcGVudHJ1IGNhIGZyb250ZW5kLXVsIGFnZW50dWx1aSBzxIMgbHVjcmV6ZSBsYSBtYWkgbXVsdCBkZSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIG9kYXTEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0FjdGl2ZWF6xIMgZnVuY8ibaWEgZGUgYWPIm2l1bmUgw65uIGJsb2MgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBudW1haSBwZW50cnUgZ3J1cHVyaWxlIGVudW1lcmF0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnQWN0aXZlYXrEgy9kZXphY3RpdmVhesSDIGZ1bmPIm2lvbmFsaXRhdGVhIGRlIHZlcmlmaWNhcmUgYSBlbGVtZW50ZWxvciBkZSBvbmZpZ3VyYXJlIElUU00gcGVudHJ1IG51bWUgdW5pY2UuIMOObmFpbnRlIGRlIGEgYWN0aXZhIGFjZWFzdMSDIG9wyJtpdW5lLCBhciB0cmVidWkgc8SDIHZlcmlmaWNhyJtpIGRhY8SDIGV4aXN0xIMgZGVqYSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBjdSBudW1lIGR1cGxpY2F0ZSDDrm4gc2lzdGVtLiBQdXRlyJtpIGZhY2UgYWNlc3QgbHVjcnUgY3UgYWp1dG9ydWwgY29tZW56aWkgZGUgY29uc29sxIMgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bHVsIGRlIGV2ZW5pbWVudCBwZW50cnUgYSBzZXRhIHN0YXJlYSBhcnRpY29sdWx1aSBkZSBjb25maWd1cmFyZSBwZSBiaWxldHVsLWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnQ8OibXB1cmkgYWxlIGluZGV4dWx1aSBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSwgdXRpbGl6YXRlIHBlbnRydSBjxIN1dGFyZWEgZnVsbHRleHQuIEPDom1wdXJpbGUgc3VudCwgZGUgYXNlbWVuZWEsIHN0b2NhdGUsIGRhciBudSBzdW50IG9ibGlnYXRvcmlpIHBlbnRydSBmdW5jyJtpb25hbGl0YXRlYSBnZW5lcmFsxIMuIEluY2x1ZGVyZWEgYXRhyJlhbWVudGVsb3IgcG9hdGUgZmkgZGV6YWN0aXZhdMSDIHByaW4gc2V0YXJlYSBpbnRyxINyaWkgbGEgMCBzYXUgcHJpbiDImXRlcmdlcmVhIGFjZXN0ZWlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnQ8OibXB1cmkgc3RvY2F0ZSDDrm4gaW5kZXh1bCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBjYXJlIHN1bnQgdXRpbGl6YXRlIHBlbnRydSBhbHRlIHNjb3B1cmkgw65uIGFmYXLEgyBkZSBjxIN1dMSDcmlsZSBmdWxsdGV4dC4gUGVudHJ1IG8gZnVuY8ibaW9uYWxpdGF0ZSBjb21wbGV0xIMsIHRvYXRlIGPDom1wdXJpbGUgc3VudCBvYmxpZ2F0b3JpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdQZW50cnUgZmllY2FyZSBzZXJ2aWNpdSB3ZWIgKGNoZWllKSBzZSBwb2F0ZSBkZWZpbmkgbyBzZXJpZSBkZSBjbGFzZSAodmFsb2FyZSkgcGVudHJ1IGNhcmUgc2UgbGltaXRlYXrEgyBpbXBvcnR1bC4gUGVudHJ1IHRvYXRlIGNsYXNlbGUgYWxlc2Ugc2F1IHBlbnRydSB0b2F0ZSBjbGFzZWxlIGV4aXN0ZW50ZSwgYXRyaWJ1dGVsZSBkZSBpZGVudGlmaWNhcmUgdm9yIHRyZWJ1aSBzxIMgZmllIGFsZXNlIMOubiBjb25maWd1cmHIm2lhIGludm9jYXRvcnVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ8OObnJlZ2lzdHJhcmVhIG1vZHVsdWx1aSBHZW5lcmljSW50ZXJmYWNlIHBlbnRydSBzdHJhdHVsIGRlIGludm9jYXJlIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfDjm5yZWdpc3RyYXJlYSBtb2R1bHVsdWkgR2VuZXJpY0ludGVyZmFjZSBwZW50cnUgc3RyYXR1bCBkZSBpbnZvY2FyZSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ8OObnJlZ2lzdHJhcmVhIG1vZHVsdWx1aSBHZW5lcmljSW50ZXJmYWNlIHBlbnRydSBzdHJhdHVsIGRlIGludm9jYXJlIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUHJlemVudGFyZSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luY2x1ZGUgc3TEg3JpbGUgZGUgaW1wbGVtZW50YXJlIMOubiBjxIN1dGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgY3UgY2xpZW7Im2lpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmNsdWRlIHN0xINyaWxlIGluY2lkZW50ZWxvciDDrm4gY8SDdXRhcmVhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGN1IGNsaWVuyJtpaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTnVtxINydWwgbWF4aW0gZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgY2FyZSB1cm1lYXrEgyBzxIMgZmllIGFmaciZYXRlIMOubiByZXp1bHRhdHVsIGFjZXN0ZWkgb3BlcmHIm2l1bmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgZGUgdmVyaWZpY2FyZSBhIGdydXB1bHVpIHJlc3BvbnNhYmlsIHBlbnRydSBvIGNsYXPEgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICdNb2R1bCBkZSB2ZXJpZmljYXJlIGEgZ3J1cHVsdWkgcmVzcG9uc2FiaWwgcGVudHJ1IHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnTW9kdWwgZGUgZ2VuZXJhcmUgYSBzdGF0aXN0aWNpbG9yIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnRGVudW1pcmUgbW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bcSDciBNb2R1bHVsIGRlIG51bWVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW3Eg3J1bCBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBjYXJlIHVybWVhesSDIHPEgyBmaWUgYWZpyJlhdGUgw65uIGZpZWNhcmUgcGFnaW7EgyBhIHVudWkgcmV6dWx0YXQgZGUgY8SDdXRhcmUgw65uIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOdW3Eg3J1bCBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBjYXJlIHVybWVhesSDIHPEgyBmaWUgYWZpyJlhdGUgcGUgZmllY2FyZSBwYWdpbsSDIGEgdW51aSByZXp1bHRhdCBkZSBjxIN1dGFyZSDDrm4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iaWVjdGVsZSBjYXJlIHRyZWJ1aWUgY8SDdXRhdGUsIGPDonRlIGludHLEg3JpIMiZaSBjZSBhdHJpYnV0ZSB0cmVidWllIGFmaciZYXRlLiBBdHJpYnV0ZWxlIENvbmZpZ0l0ZW0gdHJlYnVpZSBzxIMgZmllIHN0b2NhdGUgw65uIG1vZCBleHBsaWNpdCBwcmluIEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ1ByZXplbnRhcmUgZ2VuZXJhbMSDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgY2F0ZWdvcmlpbGUgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgZmlsdHJlbGUgZGUgY29sb2FuxIMgZGluIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIG1pY2kuIFbEgyBydWfEg20gc8SDIHJlyJtpbmXIm2k6IHNldGFyZWEgIkFjdGl2ZSIgbGEgMCB2YSDDrm1waWVkaWNhIGRvYXIgYWdlbsibaWkgc8SDIGVkaXRlemUgc2V0xINyaWxlIGFjZXN0dWkgZ3J1cCDDrm4gcHJlZmVyaW7Im2VsZSBsb3IgcGVyc29uYWxlLCBkYXIgdmEgcGVybWl0ZSDDrm4gY29udGludWFyZSBhZG1pbmlzdHJhdG9yaWxvciBzxIMgZWRpdGV6ZSBzZXTEg3JpbGUgw65uIG51bWVsZSB1bnVpIGFsdCB1dGlsaXphdG9yLiBVdGlsaXphyJtpICJQcmVmZXJlbmNlR3JvdXAiIHBlbnRydSBhIGNvbnRyb2xhIMOubiBjZSB6b27EgyB0cmVidWllIGFmaciZYXRlIGFjZXN0ZSBzZXTEg3JpIMOubiBpbnRlcmZhyJthIGN1IHV0aWxpemF0b3J1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGN1bG9hcmVhIHN0xINyaWxvciBkZSBkZXNmxIPImXVyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IHN0xINyaWxlIGRlIGRlc2bEg8iZdXJhcmUgZGluIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaWkgcGVudHJ1IGdydXB1cmlsZSBkZSBwZXJtaXNpdW5pIGRlIGV4ZW1wbHUgYWxlIGF0cmlidXRlbG9yIGdlbmVyYWxlIGFsZSBjYXRhbG9ndWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBtb2R1bHVsIGRlIG51bWUgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBtb2R1bHVsIGRlIG51bWVyZSBwZW50cnUgY2xhc2VsZSBkZSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSDDrm4gdml6dWFsaXphcmVhIHByZWZlcmluyJtlbG9yIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgcGFnaW5pICjDrm4gY2FyZSBzdW50IGFmaciZYXRlIGVsZW1lbnRlbGUgZGUgY29uZmlndXJhcmUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBtb2R1bHVsIGRlIMiZaXJ1cmkgZGUgdmVyc2l1bmkgcGVudHJ1IGNsYXNlbGUgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBwcmVmZXJpbsibZWxvciBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpaSBwZW50cnUgbW9kdWx1bCBzZXR1bHVpIGRlIGluc3RydW1lbnRlIGRlIMiZYWJsb2FuZSBkZSDImWlydXJpIGRlIHZlcnNpdW5pIHBlbnRydSBjbGFzZWxlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmlpIHBlbnRydSBkZWNsYW7ImWFyZWEgdmVyc2l1bmlpIHBlbnRydSBjbGFzZWxlIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgcHJlZmVyaW7Im2Vsb3IgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ0VmZWN0dWVhesSDIGFjyJtpdW5lYSBjb25maWd1cmF0xIMgcGVudHJ1IGZpZWNhcmUgZXZlbmltZW50IChjYSBJbnZva2VyKSBwZW50cnUgZmllY2FyZSBzZXJ2aWNpdSB3ZWIgY29uZmlndXJhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0RyZXB0dXJpIEdydXAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgYWPIm2l1bmVhIGRlIGF0YciZYXJlIGEgZWxlbWVudHVsdWkgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBlbGVtZW50dWx1aSBkZSBjb25maWd1cmFyZSBJVFNNIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSBjxIN1dGFyZSBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIElUU00gw65uIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIGPEg3V0YXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBjdSBjbGllbsibaWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgdml6dWFsaXphcmUgYSBhcmJvcmVsdWkgZGUgZWxlbWVudGUgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIG3Eg3JpcmUgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBJVFNNIMOubiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBkZSBhZMSDdWdhcmUgYSB1bnVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgSVRTTSDDrm4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Blcm1pc2l1bmkgbmVjZXNhcmUgcGVudHJ1IGEgdXRpbGl6YSBlY3JhbnVsIGRlIGVsZW1lbnRlIGRlIGNvbmZpZ3VyYXJlIElUU00gw65uIG1hc8SDIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgZWRpdGFyZSBhIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIElUU00gZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQZXJtaXNpdW5pIG5lY2VzYXJlIHBlbnRydSBhIHV0aWxpemEgZWNyYW51bCBjdSBlbGVtZW50ZSBkZSBjb25maWd1cmFyZSBJVFNNIGlzdG9yaWMgw65uIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGVybWlzaXVuaSBuZWNlc2FyZSBwZW50cnUgYSB1dGlsaXphIGVjcmFudWwgZGUgdGlwxINyaXJlIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgSVRTTSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQcml2aWxlZ2lpIG5lY2VzYXJlIHBlbnRydSBhIMiZdGVyZ2UgZWxlbWVudGVsZSBkZSBjb25maWd1cmFyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICdDxIN1dGFyZWEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdTZXRhyJtpIGF1dG9tYXQgc3RhcmVhIGRlIGluY2lkZW50IGEgdW51aSBJQyBhdHVuY2kgY8OibmQgdW4gYmlsZXQgZXN0ZSBsZWdhdCBkZSB1biBJQy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTdGFiaWxlyJl0ZSBzdGFyZWEgZGUgZGVzZsSDyJl1cmFyZSDDrm4gZWNyYW51bCBkZSBhbnNhbWJsdSBhbCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0YWJpbGXImXRlIHN0YXJlYSBpbmNpZGVudHVsdWkgw65uIGVjcmFudWwgZGUgYW5zYW1ibHUgYWwgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBjYXJlIHBlcm1pdGUgY29yZWxhcmVhIHVudWkgZWxlbWVudCBkZSBjb25maWd1cmFyZSBjdSB1biBhbHQgb2JpZWN0IMOubiB2aXp1YWxpemFyZWEgY3Ugem9vbSBhIGVsZW1lbnR1bHVpIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgYWNjZXNhIGlzdG9yaWN1bCB1bnVpIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHByZXplbnRhcmVhIGdlbmVyYWzEgyBhIGVsZW1lbnRlbG9yIGRlIGNvbmZpZ3VyYXJlIGRpbiBpbnRlcmZhyJthIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGFjY2VzYSBpc3RvcmljdWwgdW51aSBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgY3Ugem9vbSBhIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgyJl0ZXJnZSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgc2EgY3Ugem9vbSBhIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBhZmnImWEgbGVnxIN0dXJpbGUgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgc3ViIGZvcm3EgyBkZSBUcmVlIFZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQWZpyJllYXrEgyBvIGxlZ8SDdHVyxIMgw65uIG1lbml1IHBlbnRydSBhIGR1cGxpY2EgdW4gZWxlbWVudCBkZSBjb25maWd1cmFyZSDDrm4gcHJlemVudGFyZWEgZ2VuZXJhbMSDIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIG8gbGVnxIN0dXLEgyDDrm4gbWVuaXUgcGVudHJ1IGEgZHVwbGljYSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgY3Ugem9vbSBhIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBlZGl0YSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiB2aXp1YWxpemFyZWEgY3Ugem9vbSBhIGludGVyZmXIm2VpIGFnZW50dWx1aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSByZXZlbmkgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgZWxlbWVudGVsb3IgZGUgY29uZmlndXJhcmUgZGluIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBpbXByaW1hIHVuIGVsZW1lbnQgZGUgY29uZmlndXJhcmUgw65uIHZpenVhbGl6YXJlYSBjdSB6b29tIGEgaW50ZXJmZcibZWkgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FmaciZZWF6xIMgbyBsZWfEg3R1csSDIMOubiBtZW5pdSBwZW50cnUgYSBtxINyaSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlIMOubiBwcmV6ZW50YXJlYSBnZW5lcmFsxIMgYSBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSBkaW4gaW50ZXJmYcibYSBhZ2VudHVsdWkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBZmnImWVhesSDIGlzdG9yaWN1bCBlbGVtZW50ZWxvciBkZSBjb25maWd1cmFyZSAow65uIG9yZGluZSBpbnZlcnPEgykgw65uIGludGVyZmHIm2EgYWdlbnR1bHVpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdDYXRlZ29yaWEgaW1wbGljaXTEgyBjYXJlIGVzdGUgYWZpyJlhdMSDIGRhY8SDIG51IGVzdGUgc2VsZWN0YXTEgyBuaWNpdW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmljYXRvcnVsIHBlbnRydSB1biBlbGVtZW50IGRlIGNvbmZpZ3VyYXJlLCBkZSBleGVtcGx1IENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBWYWxvYXJlYSBpbXBsaWNpdMSDIGVzdGUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICdEZWNsYW7ImWVhesSDIGF1dG9tYXQgaW52b2NhdG9ydWwgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+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+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ1Rhc3RhdHVyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdNb2RlbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnyJhvYXJlY2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ1JlyJtlYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm8nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vbi1EaXNjbG9zdXJlIEFncmVlbWVudCAoTkRBKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3BlcmF0aW5nIGNvc3RzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09yZGVyIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdGhlcid9ID0gJ0FsdGVsZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdXRwdXRzJ30gPSAnSWXImWlyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcnRuZXJzaGlwIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJwZXR1YWwgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgLyBWb0lQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ0NhbWVyxIMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdTTEEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBUYWcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnU29mdHdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnU3RhbmRhcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzaWRpYXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHVuZGVyYm9sdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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/0L7QuNGB0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn0JjRgdC60LDRgtGMINC4INCyINC/0YDQtdC00YvQtNGD0YnQuNGFINCy0LXRgNGB0LjRj9GFPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ1RyZWVWaWV3INC00LvRjyBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAn0KPRgNC+0LLQtdC90Ywg0LPQu9GD0LHQuNC90YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICfQo9Cy0LXQu9C40YfQtdC90LjQtS/Rg9C80LXQvdGM0YjQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXggbGlua3MgbGV2ZWwgcmVhY2hlZCBmb3IgQ29uZmlnSXRlbSEnfSA9ICfQlNC+0YHRgtC40LPQvdGD0YIg0LzQsNC60YHQuNC80LDQu9GM0L3Ri9C5INGD0YDQvtCy0LXQvdGMINGB0YHRi9C70L7QuiDQtNC70Y8gQ29uZmlnSXRlbSEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICcg0JjQvdGE0L7RgNC80LDRhtC40Y8g0L4g0JrQvtC90YQuINC10LQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ9Ci0LXQutGD0YnQtdC1INGB0L7RgdGC0L7Rj9C90LjQtSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KLQtdC60YPRidC10LUg0YHQvtGB0YLQvtGP0L3QuNC1INC40L3RhtC40LTQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfQktGA0LXQvNGPINC/0L7RgdC70LXQtNC90LXQs9C+INC40LfQvNC10L3QtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQkNCy0YLQvtGAINC/0L7RgdC70LXQtNC90LXQs9C+INC40LfQvNC10L3QtdC90LjRjyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ9CS0LDRiNC4IENvbmZpZ0l0ZW1zJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ9Cf0L7QuNGB0LogQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ9CR0YPQtNGD0YIg0LjQvNC/0L7RgNGC0LjRgNC+0LLQsNC90Ysg0YHQu9C10LTRg9GO0YnQuNC1INC60LvQsNGB0YHRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfQodC70LXQtNGD0Y7RidC40LUg0YDQvtC70Lgg0LHRg9C00YPRgiDQuNC80L/QvtGA0YLQuNGA0L7QstCw0L3Riyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICfQntCx0YDQsNGC0LjRgtC1INCy0L3QuNC80LDQvdC40LUsINGH0YLQviDRgtCw0LrQttC1INCx0YPQtNGD0YIg0YHQvtC30LTQsNC90Ysg0YHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNC1INC00LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjyDQuCDQutC70LDRgdGB0YsgR2VuZXJhbENhdGFsb2csINC4INCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC+0LPQviDRg9C00LDQu9C10L3QuNGPINC90LUg0L/RgNC+0LjQt9C+0LnQtNC10YIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn0JbQtdC70LDQtdGC0LUg0L/RgNC+0LTQvtC70LbQuNGC0Yw/JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ9Cd0YPQttC90Ysg0L/RgNC40LzQtdGA0Ysg0LrQu9Cw0YHRgdC+0LIhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ9Ce0L/RgNC10LTQtdC70LXQvdC40LUg0L3QtSDRj9Cy0LvRj9C10YLRgdGPINC00LXQudGB0YLQstC40YLQtdC70YzQvdGL0Lwg0YXRjdGI0LXQvCBZQU1MLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ9Ce0LHQt9C+0YA6IElUU00gQ29uZmlnSXRlbSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfQndC10YIgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgbmVlZCBhdCBsZWFzdCBvbmUgc2VsZWN0ZWQgQ29uZmlndXJhdGlvbiBJdGVtISd9ID0gJ9CS0LDQvCDQvdGD0LbQvdCwINGF0L7RgtGPINCx0Ysg0L7QtNC90LAg0LLRi9Cx0YDQsNC90L3QsNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QsNGPINC10LTQuNC90LjRhtCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ9CjINCy0LDRgSDQvdC10YIg0LTQvtGB0YLRg9C/0LAg0L3QsCDQt9Cw0L/QuNGB0Ywg0Y3RgtC+0Lkg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0Ys6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfQmtC70LDRgdGBICVzINC90LUg0LHRi9C7INC+0L/RgNC10LTQtdC70LXQvSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QsNGPINC10LTQuNC90LjRhtCwICIlcyIg0L3QtSDQvdCw0LnQtNC10L3QsCDQsiDQsdCw0LfQtSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfQndC1INGD0LTQsNC70L7RgdGMINGD0LTQsNC70LjRgtGMINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Rg9GOINC10LTQuNC90LjRhtGDINGBIElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAn0J3QtSDQvdCw0LnQtNC10L3QsCDQstC10YDRgdC40Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdC+0Lkg0LXQtNC40L3QuNGG0YsgJXMhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ9Cd0LUg0L/RgNC40YHQstC+0LXQvSBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEINC40LvQuCBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAn0J3QtdGCINC00L7RgdGC0YPQv9CwISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfQndC10LLQvtC30LzQvtC20L3QviDQv9C+0LrQsNC30LDRgtGMINC40YHRgtC+0YDQuNGOLCDQvdC10YIgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC/0L7QutCw0LfQsNGC0Ywg0LjRgdGC0L7RgNC40Y4sINC90LXQtNC+0YHRgtCw0YLQvtGH0L3QviDQv9GA0LDQsiEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ9Cd0L7QstCw0Y8g0JrQlSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfQndC+0LLQsNGPINCy0LXRgNGB0LjRjyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0KHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC+0LHQvdC+0LLQu9C10L3QviAo0L3QvtCy0L7QtT0lcywg0YHRgtCw0YDQvtC1PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQodC+0YHRgtC+0Y/QvdC40LUg0LjQvdGG0LjQtNC10L3RgtCwINC+0LHQvdC+0LLQu9C10L3QviAo0L3QvtCy0L7QtT0lcywg0YHRgtCw0YDQvtC1PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ9Ca0JUgKElEPSVzKSDRg9C00LDQu9C10L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ9Ch0LLRj9C30Ywg0YEgJXMgKNGC0LjQvz0lcykg0LTQvtCx0LDQstC70LXQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfQodCy0Y/Qt9GMINGBICVzICjRgtC40L89JXMpINGD0LTQsNC70LXQvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfQntC/0LjRgdCw0L3QuNC1INCa0JUg0L7QsdC90L7QstC70LXQvdC+IChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQmNC80Y8g0L7QsdC90L7QstC70LXQvdC+ICjQvdC+0LLQvtC1PSVzLCDRgdGC0LDRgNC+0LU9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAn0JDRgtGA0LjQsdGD0YIgJXMg0L7QsdC90L7QstC70LXQvSDRgSAiJXMiINC00L4gIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfQktC10YDRgdC40Y8gJXMg0YPQtNCw0LvQtdC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHVwbG9hZGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiByZW1vdmVkJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtUHJpbnQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBvciBWZXJzaW9uSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQv9GA0LjRgdCy0L7QtdC9IENvbmZpZ0l0ZW1JRCDQuNC70LggVmVyc2lvbklEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfQndC10LLQvtC30LzQvtC20L3QviDQvtGC0L7QsdGA0LDQt9C40YLRjCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YPRjiDQtdC00LjQvdC40YbRgywg0L3QtdGCINC00L7RgdGC0YPQv9CwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3QsNGPINC10LTQuNC90LjRhtCwICVzINC90LUg0L3QsNC50LTQtdC90LAg0LIg0LHQsNC30LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90LDRjyDQtdC00LjQvdC40YbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAn0L3QsNC/0LXRh9Cw0YLQsNC90L4gJXMg0LIgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ9Ch0YHRi9C70LrQsCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ9Cd0LXQstC10YDQvdGL0LkgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdDbGFzc0lEINC90LUg0L/RgNC40YHQstC+0LXQvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfQndC10YIg0LTQvtGB0YLRg9C/0LAg0LTQu9GPINGN0YLQvtCz0L4g0LrQu9Cw0YHRgdCwISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBSZXN1bHQhJ30gPSAn0J3QtdGCINGA0LXQt9GD0LvRjNGC0LDRgtCwL9Cg0LXRiNC10L3QuNGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ9Cg0LXQt9GD0LvRjNGC0LDRgtGLINC/0L7QuNGB0LrQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvRhSDQtdC00LjQvdC40YYnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ9Cd0LXQstC+0LfQvNC+0LbQvdC+INC+0YLQvtCx0YDQsNC30LjRgtGMINGN0LvQtdC80LXQvdGCLCDQvdC10LTQvtGB0YLQsNGC0L7Rh9C90L4g0L/RgNCw0LIg0LTQu9GPINCa0JUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ0NvbmZpZ0l0ZW0g0L3QtSDQvdCw0LnQtNC10L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ9CS0LXRgNGB0LjQuCDQvdC1INC90LDQudC00LXQvdGLISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ9C+0L/QtdGA0LDRgtC40LLQvdCw0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ9C/0YDQtdC00YPQv9GA0LXQttC00LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICfQuNC90YbQuNC00LXQvdGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfQodC+0YHRgtC+0Y/QvdC40LUg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0Y3RgtC+0Lkg0JrQlSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ9Ch0L7RgdGC0L7Rj9C90LjQtSDQuNC90YbQuNC00LXQvdGC0LAg0LTQu9GPINGN0YLQvtC5INCa0JUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfQndC10YIg0YDQsNC30YDQtdGI0LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn0KTQuNC70YzRgtGAINC90LXQtNC10LnRgdGC0LLQuNGC0LXQu9C10L0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfQndC10LTQvtC/0YPRgdGC0LjQvNGL0LUg0L/QsNGA0LDQvNC10YLRgNGLINC/0L7QuNGB0LrQsCEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICfQn9C+0LrQsNC30LDQvdC90YvQtSDRjdC70LXQvNC10L3RgtGLINC90LDRgdGC0YDQvtC50LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfQotC40L8g0KHQvtGB0YLQvtGP0L3QuNGPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ9Ci0LjQvyDQotC10LrRg9GJ0LXQs9C+INGB0L7RgdGC0L7Rj9C90LjRjyDQuNC90YbQuNC00LXQvdGC0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn0JzQtdC20LTRgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdC90LjRjyDQutC70LDRgdGB0LAg0LTQu9GPINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfQktGL0LHQtdGA0LjRgtC1INC+0LTQuNC9INC40LvQuCDQvdC10YHQutC+0LvRjNC60L4g0LrQu9Cw0YHRgdC+0LIsINGH0YLQvtCx0Ysg0L7Qs9GA0LDQvdC40YfQuNGC0Ywg0LLRi9Cx0L7RgCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfQntCz0YDQsNC90LjRh9C10L3QuNGPINC60LvQsNGB0YHQsCDQtNC70Y8g0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfQktGL0LHQtdGA0LjRgtC1INC+0LTQuNC9INC40LvQuCDQvdC10YHQutC+0LvRjNC60L4g0LrQu9Cw0YHRgdC+0LIsINGH0YLQvtCx0Ysg0L7Qs9GA0LDQvdC40YfQuNGC0Ywg0LLRi9Cx0L7RgCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAn0JTQuNC90LDQvNC40YfQtdGB0LrQuNC5IChDb25maWdJdGVtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGF0aWMgKFZlcnNpb24pJ30gPSAn0KHRgtCw0YLQuNC60LAgKNCy0LXRgNGB0LjRjyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn0KLQuNC/INGB0YHRi9C70LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoaXMgbGluayBhcHBsaWVzIHRvIHRoZSBDb25maWdJdGVtIG9yIHRoZSBzdGF0aWMgdmVyc2lvbiBvZiB0aGUgcmVmZXJlbmNpbmcgb2JqZWN0LiBDdXJyZW50IEluY2lkZW50IFN0YXRlIGNhbGN1bGF0aW9uIG9ubHkgaXMgcGVyZm9ybWVkIG9uIGR5bmFtaWMgbGlua3MuJ30gPQogICAgICAgICfQn9GA0LjQvNC10L3Rj9C10YLRgdGPINC70Lgg0Y3RgtCwINGB0YHRi9C70LrQsCDQuiBDb25maWdJdGVtINC40LvQuCDQuiDRgdGC0LDRgtC40YfQtdGB0LrQvtC5INCy0LXRgNGB0LjQuCDRgdGB0YvQu9Cw0Y7RidC10LPQvtGB0Y8g0L7QsdGK0LXQutGC0LAuINCg0LDRgdGH0LXRgiDRgtC10LrRg9GJ0LXQs9C+INGB0L7RgdGC0L7Rj9C90LjRjyDQuNC90YbQuNC00LXQvdGC0LAg0LLRi9C/0L7Qu9C90Y/QtdGC0YHRjyDRgtC+0LvRjNC60L4g0LTQu9GPINC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDRgdGB0YvQu9C+0LouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn0JLRi9Cx0LXRgNC40YLQtSDQsNGC0YDQuNCx0YPRgiwg0L/QviDQutC+0YLQvtGA0L7QvNGDINCx0YPQtNC10YIg0L7RgdGD0YnQtdGB0YLQstC70Y/RgtGM0YHRjyDQv9C+0LjRgdC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ9CR0LDQt9C+0LLQsNGPINGB0YLRgNGD0LrRgtGD0YDQsCDQvdC10LTQtdC50YHRgtCy0LjRgtC10LvRjNC90LAuINCf0L7QttCw0LvRg9C50YHRgtCwLCDQv9GA0LXQtNC+0YHRgtCw0LLRjNGC0LUg0YXRjdGIINGBINC00LDQvdC90YvQvNC4INCyINGE0L7RgNC80LDRgtC1IFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAn0J3QtdC+0LHRhdC+0LTQuNC80L4g0L3QsNGH0LjQvdCw0YLRjCDRgdGC0YDQvtC60YMgWUFNTCDRgSBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICfQndC1INGD0LTQsNC70L7RgdGMINC+0YfQuNGB0YLQuNGC0Ywg0YLQsNCx0LvQuNGG0YMgY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn0KHQvtC+0YLQstC10YLRgdGC0LLRg9GO0YnQuNC1INC00LjQvdCw0LzQuNGH0LXRgdC60LjQtSDQv9C+0LvRjyDQvdC1INC90LDQudC00LXQvdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0J3QtSDRg9C00LDQu9C+0YHRjCDQstGB0YLQsNCy0LjRgtGMINCyINGC0LDQsdC70LjRhtGDIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn0JLRgdGC0LDQstC70LXQvdC+IDAg0YHRgtGA0L7QuiDQsiDRgtCw0LHQu9C40YbRgyBjb25maWdpdGVtX2xpbmsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn0JzQsNC60YHQuNC80LDQu9GM0L3QvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INC+0LTQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ9Ch0YLRgNC+0LrQsCDQstC10YDRgdC40LgnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn0J7RiNC40LHQutCwINGB0LjQvdGF0YDQvtC90LjQt9Cw0YbQuNC4INC+0L/RgNC10LTQtdC70LXQvdC40LkuINCf0L7QttCw0LvRg9C50YHRgtCwLCDQv9GA0L7QstC10YDRjNGC0LUg0LbRg9GA0L3QsNC7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ9CjINCy0LDRgSDQtdGB0YLRjCDQvtC/0YDQtdC00LXQu9C10L3QuNGPIElUU01Db25maWdJdGVtLCDQutC+0YLQvtGA0YvQtSDQvdC1INGB0LjQvdGF0YDQvtC90LjQt9C40YDQvtCy0LDQvdGLLiDQn9C+0LbQsNC70YPQudGB0YLQsCwg0YDQsNC30LLQtdGA0L3QuNGC0LUg0LjQt9C80LXQvdC10L3QuNGPINC00LjQvdCw0LzQuNGH0LXRgdC60LjRhSDQv9C+0LvQtdC5IElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0KPRgdGC0LDRgNC10LvQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ9Ci0LXRhdC90LjRh9C10YHQutC+0LUg0L7QsdGB0LvRg9C20LjQstCw0L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn0K3QutGB0L/QtdGA0LjQvNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn0JfQsNC/0LvQsNC90LjRgNC+0LLQsNC90L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfQoNC10LzQvtC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ9Ch0L/QuNGB0LDQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ9Ct0LrRgdC/0LXRgNGC0LjQt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfQotC10YHRgtC40YDQvtCy0LDQvdC40LUnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ9Ce0LHQt9C+0YAg0Lgg0L/QvtC00YLQstC10YDQttC00LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAn0JjQvNC/0L7RgNGCINC60LvQsNGB0YHQvtCyL9GA0L7Qu9C10Lkg0Lgg0YHQstGP0LfQsNC90L3Ri9GFINGBINC90LjQvNC4INC/0L7Qu9C10LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfQktC+INCy0YDQtdC80Y8g0LjQvNC/0L7RgNGC0LAg0LrQu9Cw0YHRgdCwINC/0YDQvtC40LfQvtGI0LvQsCDQvtGI0LjQsdC60LAuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDQodC60YDRi9GC0YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g0L/QvtC60LDQt9Cw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J/QvtC30LLQvtC70Y/QtdGCINGA0LDRgdGI0LjRgNC40YLRjCDRg9GB0LvQvtCy0LjRjyDQv9C+0LjRgdC60LAg0L/RgNC4INC/0L7QuNGB0LrQtSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4g0KEg0L/QvtC80L7RidGM0Y4g0Y3RgtC+0Lkg0YTRg9C90LrRhtC40Lgg0LLRiyDQvNC+0LbQtdGC0LUg0LjRgdC60LDRgtGMLCDQvdCw0L/RgNC40LzQtdGALCDQuNC80Y8g0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0YEg0YLQsNC60LjQvNC4INGD0YHQu9C+0LLQuNGP0LzQuCwg0LrQsNC6ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICfQn9C+0LfQstC+0LvRj9C10YIg0YDQsNGB0YjQuNGA0LjRgtGMINGD0YHQu9C+0LLQuNGPINC/0L7QuNGB0LrQsCDQv9GA0Lgg0L/QvtC40YHQutC1INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LrQu9C40LXQvdGC0YHQutC+0Lwg0LjQvdGC0LXRgNGE0LXQudGB0LUuINChINC/0L7QvNC+0YnRjNGOINGN0YLQvtC5INGE0YPQvdC60YbQuNC4INCy0Ysg0LzQvtC20LXRgtC1INC40YHQutCw0YLRjCwg0L3QsNC/0YDQuNC80LXRgCwg0LjQvNGPINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INGBINGC0LDQutC40LzQuCDRg9GB0LvQvtCy0LjRj9C80LgsINC60LDQuiAiKCprZXkxKiYmKmtleTIqKSIg0LjQu9C4ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn0J3QsNC30L3QsNGH0LDQtdC80YvQtSDQmtCYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+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/QvtC40YHQutCwINCa0JUg0LIg0LDQs9C10L3RgtGB0LrQvtC8INC40L3RgtC10YDRhNC10LnRgdC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ9Ch0L7Qt9C00LDQvdC40LUg0Lgg0YPQv9GA0LDQstC70LXQvdC40LUg0L7Qv9C40YHQsNC90LjRj9C80Lgg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ9Ch0L7Qt9C00LDQtdGCINGC0LjQutC10YLRiyDQtNC70Y8gQ29uZmlnSXRlbXMg0LIg0L7Qv9GA0LXQtNC10LvQtdC90L3Ri9C1INC80L7QvNC10L3RgtGLINCy0YDQtdC80LXQvdC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfQmtC70LjQtdC90YLRiyDQvNC+0LPRg9GCINCy0LjQtNC10YLRjCDQuNGB0YLQvtGA0LjRh9C10YHQutC40LUg0LLQtdGA0YHQuNC4IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfQoyDQutC70LjQtdC90YLQvtCyINC10YHRgtGMINCy0L7Qt9C80L7QttC90L7RgdGC0Ywg0LLRgNGD0YfQvdGD0Y4g0L/QtdGA0LXQutC70Y7Rh9Cw0YLRjNGB0Y8g0LzQtdC20LTRgyDQuNGB0YLQvtGA0LjRh9C10YHQutC40LzQuCDQstC10YDRgdC40Y/QvNC4IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ9CU0LDQvdC90YvQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiwg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1INCyINCw0YLRgNC40LHRg9GC0LUg0LTQu9GPINGN0LrRgNCw0L3QsCDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0J/RgNC40LzQtdGAOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ9CU0LDQvdC90YvQtSDQv9C+INGD0LzQvtC70YfQsNC90LjRjiwg0LjRgdC/0L7Qu9GM0LfRg9C10LzRi9C1INCyINCw0YLRgNC40LHRg9GC0LUg0LTQu9GPINGN0LrRgNCw0L3QsCDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuC4g0J/RgNC40LzQtdGAOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINCU0LXQudGB0YLQstC40Y8vQWN0aW9ucyDQutC+0LPQtNCwINC60L3QvtC/0LrQsCDQvdCw0YHRgtGA0L7QudC60Lgg0LTQvtGB0YLRg9C/0L3QsCDQsiDRgdCy0Y/Qt9Cw0L3QvdC+0Lwg0LLQuNC00LbQtdGC0LUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4g0J7QsdGA0LDRgtC40YLQtSDQstC90LjQvNCw0L3QuNC1LCDRh9GC0L4g0Y3RgtC4INCU0LXQudGB0YLQstC40Y8vQWN0aW9ucyDQtNC+0LvQttC90Ysg0LjQvNC10YLRjCDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L3QvdGL0LUgSlMg0LjQu9C4IENTUyDRhNCw0LnQu9GLOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDQuCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDRgdGF0LXQvNGDIFRlbXBsYXRlOjpUb29sa2l0INC00LvRjyDRgdGC0YDQvtC6INCy0LXRgNGB0LjQuS4g0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINGC0L7Qu9GM0LrQviDQsiDRgtC+0Lwg0YHQu9GD0YfQsNC1LCDQtdGB0LvQuCDQtNC70Y8gVmVyc2lvbiBTdHJpbmcgTW9kdWxlINGD0YHRgtCw0L3QvtCy0LvQtdC90L4g0LfQvdCw0YfQtdC90LjQtSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9C40YLQtSDQvdCw0LHQvtGAINGD0YHQu9C+0LLQuNC5LCDQv9GA0Lgg0LrQvtGC0L7RgNGL0YUg0LrQu9C40LXQvdGC0YMg0YDQsNC30YDQtdGI0LDQtdGC0YHRjyDQstC40LTQtdGC0Ywg0Y3Qu9C10LzQtdC90YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4LiDQo9GB0LvQvtCy0LjRjyDQvNC+0LPRg9GCINCx0YvRgtGMINC+0LPRgNCw0L3QuNGH0LXQvdGLINC+0L/RgNC10LTQtdC70LXQvdC90YvQvNC4INCz0YDRg9C/0L/QsNC80Lgg0LrQu9C40LXQvdGC0L7Qsi4g0J3QsNC30LLQsNC90LjQtSAtINC10LTQuNC90YHRgtCy0LXQvdC90YvQuSDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdGL0Lkg0LDRgtGA0LjQsdGD0YIuINCV0YHQu9C4INC00YDRg9Cz0LjQtSDQv9Cw0YDQsNC80LXRgtGA0Ysg0L3QtSDRg9C60LDQt9Cw0L3Riywg0LLRgdC1INGN0LvQtdC80LXQvdGC0Ysg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCx0YPQtNGD0YIg0LLQuNC00L3RiyDQsiDRjdGC0L7QuSDQutCw0YLQtdCz0L7RgNC40LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNGC0Ywg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINGD0LTQsNC70LXQvdC40Y8gSVRTTSDQmtCVINGBINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC10LwgR2VuZXJpYyBJbnRlcmZhY2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC/0L7Qu9GD0YfQtdC90LjRjyBJVFNNINCa0JUg0YEg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LXQvCBHZW5lcmljIEludGVyZmFjZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgtGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0L/QvtC40YHQutCwIElUU00g0JrQlSDRgSDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjQtdC8IEdlbmVyaWMgSW50ZXJmYWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQvdC10L7QsdGF0L7QtNC40LzRi9C1INGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDRg9GB0YLQsNC90L7QstC60Lgg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCBJVFNNINGBINC/0L7QvNC+0YnRjNGOINC+0LHRidC10LPQviDQuNC90YLQtdGA0YTQtdC50YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINC80L7QtNGD0LvRjCDQv9GA0L7RgdC80L7RgtGA0LAg0JrQlSDQsiDQutGA0LDRgtC60L7QvCDQstC40LTQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIsINC00L7Qu9C20L3RiyDQu9C4INC80LXRgtC60Lgg0YLQuNC/0L7QsiDRgdCy0Y/Qt9C10Lkg0L7RgtC+0LHRgNCw0LbQsNGC0YzRgdGPINCyINGB0L7QtdC00LjQvdC10L3QuNGP0YUg0YPQt9C70L7Qsi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ9CX0LDQtNCw0LXRgiDRgNC10LPRg9C70Y/RgNC90YvQtSDQstGL0YDQsNC20LXQvdC40Y8g0LTQu9GPINC60LDQttC00L7Qs9C+INC+0YLQtNC10LvRjNC90L7Qs9C+INC60LvQsNGB0YHQsCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuCDQuNC80LXQvSDQmtCVINC4INCy0YvQtNCw0YfQuCDRgdC+0L7QsdGJ0LXQvdC40Lkg0L7QsSDQvtGI0LjQsdC60LDRhS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQtNC+0YHRgtGD0L/QvdGL0LUg0YHRgtC+0LvQsdGG0YsgQ0kg0LIg0L7QsdC30L7RgNC1INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LfQsNCy0LjRgdC40LzQvtGB0YLQuCDQvtGCINC60LvQsNGB0YHQsCBDSS4g0JrQsNC20LTQsNGPINC30LDQv9C40YHRjCDQtNC+0LvQttC90LAg0YHQvtGB0YLQvtGP0YLRjCDQuNC3INC40LzQtdC90Lgg0LrQu9Cw0YHRgdCwINC4INC80LDRgdGB0LjQstCwINC00L7RgdGC0YPQv9C90YvRhSDQv9C+0LvQtdC5INC00LvRjyDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0Y7RidC10LPQviDQutC70LDRgdGB0LAuINCX0LDQv9C40YHQuCDQtNC40L3QsNC80LjRh9C10YHQutC40YUg0L/QvtC70LXQuSDQtNC+0LvQttC90Ysg0YHQvtC+0YLQstC10YLRgdGC0LLQvtCy0LDRgtGMINGB0YXQtdC80LUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINCw0YLRgNC40LHRg9GCINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDRgdC+0YDRgtC40YDQvtCy0LrQuCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0LDRgtGA0LjQsdGD0YIg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINGB0L7RgNGC0LjRgNC+0LLQutC4INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQutC70LjQtdC90YLRgdC60L7QvCDQuNC90YLQtdGA0YTQtdC50YHQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQntC/0YDQtdC00LXQu9GP0LXRgiDQsNGC0YDQuNCx0YPRgiDRjdC70LXQvNC10L3RgtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0YHQvtGA0YLQuNGA0L7QstC60Lgg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDRgNC10LfRg9C70YzRgtCw0YLQtSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDRjdGC0L7QuSDQvtC/0LXRgNCw0YbQuNC4Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L/QvtGA0Y/QtNC+0Log0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4g0JLQstC10YDRhTog0YHQsNC80YvQuSDRgdGC0LDRgNGL0Lkg0YHQstC10YDRhdGDLiDQktC90LjQtzog0YHQsNC80YvQuSDQv9C+0YHQu9C10LTQvdC40Lkg0YHQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0J7Qv9GA0LXQtNC10LvRj9C10YIg0L/QvtGA0Y/QtNC+0Log0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQsiDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7QuNGB0LrQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLiDQktCy0LXRgNGFOiDRgdCw0LzRi9C5INGB0YLQsNGA0YvQuSDRgdCy0LXRgNGF0YMuINCS0L3QuNC3OiDRgdCw0LzRi9C5INC/0L7RgdC70LXQtNC90LjQuSDRgdCy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9Ce0L/RgNC10LTQtdC70Y/QtdGCINC/0L7RgNGP0LTQvtC6INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40Lgg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LIg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0LjRgdC60LAg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQv9GA0Lgg0LLRi9C/0L7Qu9C90LXQvdC40Lgg0Y3RgtC+0Lkg0L7Qv9C10YDQsNGG0LjQuC4g0JLQstC10YDRhTog0YHQsNC80YvQuSDRgdGC0LDRgNGL0Lkg0YHQstC10YDRhdGDLiDQktC90LjQtzog0YHQsNC80YvQuSDQv9C+0YHQu9C10LTQvdC40Lkg0YHQstC10YDRhdGDLic7CiAgICAkU2VsZi0+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/0YDQuNC80LXRgCwg0YTRg9C90LrRhtC40L7QvdCw0LvRjNC90YvRhSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0L7QvtGC0LLQtdGC0YHRgtCy0YPRjtGJ0LjQtSDRgdC+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+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCL9Cy0YvQutC70Y7Rh9Cw0LXRgiDRhNGD0L3QutGG0LjRjiDQv9GA0L7QstC10YDQutC4INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDQvdCwINC90LDQu9C40YfQuNC1INGD0L3QuNC60LDQu9GM0L3Ri9GFINC40LzQtdC9LiDQn9C10YDQtdC0INCy0LrQu9GO0YfQtdC90LjQtdC8INGN0YLQvtC5INC+0L/RhtC40Lgg0L3QtdC+0LHRhdC+0LTQuNC80L4g0L/RgNC+0LLQtdGA0LjRgtGMINGB0LjRgdGC0LXQvNGDINC90LAg0L3QsNC70LjRh9C40LUg0YPQttC1INGB0YPRidC10YHRgtCy0YPRjtGJ0LjRhSDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INGBINC00YPQsdC70LjRgNGD0Y7RidC40LzQuNGB0Y8g0LjQvNC10L3QsNC80LguINCt0YLQviDQvNC+0LbQvdC+INGB0LTQtdC70LDRgtGMINGBINC/0L7QvNC+0YnRjNGOINC60L7QvdGB0L7Qu9GM0L3QvtC5INC60L7QvNCw0L3QtNGLIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINGD0YHRgtCw0L3QvtCy0LrQuCDRgdGC0LDRgtGD0YHQsCDQmtCVINC00LvRjyDRgdCy0Y/Qt9Cw0L3QvdC+0Lkg0YEg0L3QtdC5INC30LDRj9Cy0LrQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn0J/QvtC70Y8g0LjQvdC00LXQutGB0LAg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgsINC40YHQv9C+0LvRjNC30YPQtdC80YvQtSDQtNC70Y8g0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+INC/0L7QuNGB0LrQsC4g0J/QvtC70Y8g0YLQsNC60LbQtSDRgdC+0YXRgNCw0L3Rj9GO0YLRgdGPLCDQvdC+INC90LUg0Y/QstC70Y/RjtGC0YHRjyDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdGL0LzQuCDQtNC70Y8g0L7QsdGJ0LXQuSDRhNGD0L3QutGG0LjQvtC90LDQu9GM0L3QvtGB0YLQuC4g0JLQutC70Y7Rh9C10L3QuNC1INCy0LvQvtC20LXQvdC40Lkg0LzQvtC20L3QviDQvtGC0LrQu9GO0YfQuNGC0YwsINGD0YHRgtCw0L3QvtCy0LjQsiDQtNC70Y8g0LfQsNC/0LjRgdC4INC30L3QsNGH0LXQvdC40LUgMCDQuNC70Lgg0YPQtNCw0LvQuNCyINC10LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICfQn9C+0LvRjywg0YXRgNCw0L3Rj9GJ0LjQtdGB0Y8g0LIg0LjQvdC00LXQutGB0LUg0Y3Qu9C10LzQtdC90YLQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgsINC60L7RgtC+0YDRi9C1INC40YHQv9C+0LvRjNC30YPRjtGC0YHRjyDQvdC1INGC0L7Qu9GM0LrQviDQtNC70Y8g0L/QvtC70L3QvtGC0LXQutGB0YLQvtCy0L7Qs9C+INC/0L7QuNGB0LrQsC4g0JTQu9GPINC/0L7Qu9C90L7QuSDRhNGD0L3QutGG0LjQvtC90LDQu9GM0L3QvtGB0YLQuCDQstGB0LUg0L/QvtC70Y8g0Y/QstC70Y/RjtGC0YHRjyDQvtCx0Y/Qt9Cw0YLQtdC70YzQvdGL0LzQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICfQlNC70Y8g0LrQsNC20LTQvtCz0L4g0LLQtdCxLdGB0LXRgNCy0LjRgdCwICjQutC70Y7Rhykg0LzQvtC20LXRgiDQsdGL0YLRjCDQvtC/0YDQtdC00LXQu9C10L0g0LzQsNGB0YHQuNCyINC60LvQsNGB0YHQvtCyICjQt9C90LDRh9C10L3QuNC1KSwg0LTQu9GPINC60L7RgtC+0YDRi9GFINC40LzQv9C+0YDRgiDQvtCz0YDQsNC90LjRh9C10L0uINCU0LvRjyDQstGB0LXRhSDQstGL0LHRgNCw0L3QvdGL0YUg0LrQu9Cw0YHRgdC+0LIg0LjQu9C4INC00LvRjyDQstGB0LXRhSDRgdGD0YnQtdGB0YLQstGD0Y7RidC40YUg0LrQu9Cw0YHRgdC+0LIg0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INC40L3QstC+0LrQtdGA0LAg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LHRg9C00LXRgiDQstGL0LHRgNCw0YLRjCDQuNC00LXQvdGC0LjRhNC40YbQuNGA0YPRjtGJ0LjQtSDQsNGC0YDQuNCx0YPRgtGLLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRg9GA0L7QstC90Y8g0LjQvdCy0L7QutC10YDQsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRjyDQvNC+0LTRg9C70Y8gR2VuZXJpY0ludGVyZmFjZSDQtNC70Y8g0YPRgNC+0LLQvdGPINC40L3QstC+0LrQtdGA0LAgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10LPQuNGB0YLRgNCw0YbQuNGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRg9GA0L7QstC90Y8g0LjQvdCy0L7QutC10YDQsCBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ9Ce0LHQt9C+0YAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0LXRgiDRgdC+0YHRgtC+0Y/QvdC40Y8g0YDQsNC30LLQtdGA0YLRi9Cy0LDQvdC40Y8g0LIg0L/QvtC40YHQuiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC60LvRjtGH0LDQtdGCINGB0L7RgdGC0L7Rj9C90LjRjyDQuNC90YbQuNC00LXQvdGC0LAg0LIg0L/QvtC40YHQuiDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINC40L3RgtC10YDRhNC10LnRgdC1INC60LvQuNC10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdC+0LUg0LrQvtC70LjRh9C10YHRgtCy0L4g0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCwg0LrQvtGC0L7RgNGL0LUg0LHRg9C00YPRgiDQvtGC0L7QsdGA0LDQttCw0YLRjNGB0Y8g0LIg0YDQtdC30YPQu9GM0YLQsNGC0LUg0Y3RgtC+0Lkg0L7Qv9C10YDQsNGG0LjQuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICfQnNC+0LTRg9C70Ywg0LTQu9GPINC/0YDQvtCy0LXRgNC60Lgg0LPRgNGD0L/Qv9GLINC+0YLQstC10YLRgdGC0LLQtdC90L3QvtC5INC30LAg0LrQu9Cw0YHRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0L/RgNC+0LLQtdGA0LrQuCDQs9GA0YPQv9C/0Ysg0L7RgtCy0LXRgtGB0YLQstC10L3QvdC+0Lkg0LfQsCDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn0JzQvtC00YPQu9GMINGE0L7RgNC80LjRgNC+0LLQsNC90LjRjyDRgdGC0LDRgtC40YHRgtC40LrQuCDQv9C+INCa0JUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAn0JzQvtC00YPQu9GMINC40LzQtdC90LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ9Cd0L7QvNC10YDQvdC+0Lkg0LzQvtC00YPQu9GMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LgsINC+0YLQvtCx0YDQsNC20LDQtdC80YvRhSDQvdCwINC60LDQttC00L7QuSDRgdGC0YDQsNC90LjRhtC1INGA0LXQt9GD0LvRjNGC0LDRgtC+0LIg0L/QvtC40YHQutCwINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JrQvtC70LjRh9C10YHRgtCy0L4g0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCwg0L7RgtC+0LHRgNCw0LbQsNC10LzRi9GFINC90LAg0LrQsNC20LTQvtC5INGB0YLRgNCw0L3QuNGG0LUg0YDQtdC30YPQu9GM0YLQsNGC0L7QsiDQv9C+0LjRgdC60LAg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LrQu9C40LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ9Ce0LHRitC10LrRgtGLINC00LvRjyDQv9C+0LjRgdC60LAsINC60L7Qu9C40YfQtdGB0YLQstC+INC30LDQv9C40YHQtdC5INC4INCw0YLRgNC40LHRg9GC0Ysg0LTQu9GPINC+0YLQvtCx0YDQsNC20LXQvdC40Y8uINCQ0YLRgNC40LHRg9GC0YsgQ29uZmlnSXRlbSDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0Y/QstC90L4g0YHQvtGF0YDQsNC90LXQvdGLINGH0LXRgNC10LcgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn0J7QsdC30L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNGLINC00LvRjyDQutCw0YLQtdCz0L7RgNC40Lkg0LrQu9Cw0YHRgdC+0LIg0Y3Qu9C10LzQtdC90YLQvtCyINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQuCDQsiDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjQuCDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Lkg0LjQvdGC0LXRgNGE0LXQudGB0LAg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDRiyDQtNC70Y8g0YTQuNC70YzRgtGA0L7QsiDRgdGC0L7Qu9Cx0YbQvtCyINC+0LHQt9C+0YDQsCDRjdC70LXQvNC10L3RgtC+0LIg0LzQsNC70L7QuSDQutC+0L3RhNC40LPRg9GA0LDRhtC40LguINCe0LHRgNCw0YLQuNGC0LUg0LLQvdC40LzQsNC90LjQtTog0L/RgNC4INGD0YHRgtCw0L3QvtCy0LrQtSDQt9C90LDRh9C10L3QuNGPIFwnQWN0aXZlXCcg0LIgMCDQsNCz0LXQvdGC0Ysg0L3QtSDRgdC80L7Qs9GD0YIg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0L3QsNGB0YLRgNC+0LnQutC4INGN0YLQvtC5INCz0YDRg9C/0L/RiyDQsiDRgdCy0L7QuNGFINC70LjRh9C90YvRhSDQv9GA0LXQtNC/0L7Rh9GC0LXQvdC40Y/RhSwg0L3QviDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNGLINGB0LzQvtCz0YPRgiDRgNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0L7RgiDQuNC80LXQvdC4INC00YDRg9Cz0L7Qs9C+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy4g0JjRgdC/0L7Qu9GM0LfRg9C50YLQtSBcJ1ByZWZlcmVuY2VHcm91cFwnINC00LvRjyDRg9C/0YDQsNCy0LvQtdC90LjRjyDRgtC10LwsINCyINC60LDQutC+0Lkg0L7QsdC70LDRgdGC0Lgg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC+0LPQviDQuNC90YLQtdGA0YTQtdC50YHQsCDQtNC+0LvQttC90Ysg0L7RgtC+0LHRgNCw0LbQsNGC0YzRgdGPINGN0YLQuCDQvdCw0YHRgtGA0L7QudC60LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Ysg0LTQu9GPINGG0LLQtdGC0L7QsiDQvtCx0L7Qt9C90LDRh9Cw0Y7RidC40YUg0YHQvtGB0YLQvtGP0L3QuNGPINC40YHQv9C+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+0YfRgtC10L3QuNC5INC40L3RgtC10YDRhNC10LnRgdCwINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICfQktGL0L/QvtC70L3Rj9C10YIg0LfQsNC00LDQvdC90L7QtSDQtNC10LnRgdGC0LLQuNC1INC00LvRjyDQutCw0LbQtNC+0LPQviDRgdC+0LHRi9GC0LjRjyAo0LrQsNC6IEludm9rZXIpINC00LvRjyDQutCw0LbQtNC+0LPQviDQvdCw0YHRgtGA0L7QtdC90L3QvtCz0L4gV2Vic2VydmljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ9CT0YDRg9C/0L/QsCDRgNCw0LfRgNC10YjQtdC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXQvtC00LjQvNGL0LUg0YDQsNC30YDQtdGI0LXQvdC40Y8g0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC00LXQudGB0YLQstC40Y8g0L/RgNC40LrRgNC10L/Qu9C10L3QuNGPINGN0LvQtdC80LXQvdGC0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4IElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0KLRgNC10LHRg9C10LzRi9C1INC/0YDQsNCy0LAg0LTQu9GPINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC+0LHQt9C+0YDQsCDQmtCVINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0L/QvtC40YHQutCwINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzRi9C1INGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDRjdC60YDQsNC90LAg0L/QvtC40YHQutCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQutC70LjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0L7QtNC40LzRi9C1INGA0LDQt9GA0LXRiNC10L3QuNGPINC00LvRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNC90LjRjyDRjdC60YDQsNC90LAg0L/RgNC+0YHQvNC+0YLRgNCwINC00LXRgNC10LLQsCDRjdC70LXQvNC10L3RgtC+0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4IElUU00g0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQotGA0LXQsdGD0LXQvNGL0LUg0L/RgNCw0LLQsCDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0L/QvtC70L3QvtCz0L4g0L/RgNC+0YHQvNC+0YLRgNCwINCa0JUgKHpvb20gdmlldykg0LIgQ01EQiDQsNCz0LXQvdGC0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQtNC+0LHQsNCy0LvQtdC90LjRjyDQmtCVINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdC+0LTQuNC80YvQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQtNC70Y8g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8g0Y3QutGA0LDQvdCwINGN0LvQtdC80LXQvdGC0L7QsiDQutC+0L3RhNC40LPRg9GA0LDRhtC40LggSVRTTSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDRgNC10LTQsNC60YLQuNGA0L7QstCw0L3QuNGPINGB0L7QtNC10YDQttC40LzQvtCz0L4g0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQv9GA0L7RgdC80L7RgtGA0LAg0LjRgdGC0L7RgNC40Lgg0YHQvtC00LXRgNC20LjQvNC+0LPQviDQmtCVINCyIENNREIg0LDQs9C10L3RgtC+0LwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ci0YDQtdCx0YPQtdC80YvQtSDQv9GA0LDQstCwINC00LvRjyDQv9C10YfQsNGC0Lgg0YXQsNGA0LDQutGC0LXRgNC40YHRgtC40Log0JrQlSDQsiBDTURCINCw0LPQtdC90YLQvtC8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfQndC10L7QsdGF0L7QtNC40LzRiyDQv9GA0LDQstCwINC00LvRjyDRg9C00LDQu9C10L3QuNGPINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICfQn9C+0LjRgdC6INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9GFINC10LTQuNC90LjRhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ9Cj0YHRgtCw0L3QvtCy0LjRgtGMINGB0L7RgdGC0L7Rj9C90LjQtSDQuNC90YbQuNC00LXQvdGC0LAg0JrQlSDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCwg0LrQvtCz0LTQsCDQt9Cw0Y/QstC60LAg0YHQstGP0LfQsNC90LAg0YEg0JrQlS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQl9Cw0LTQsNC10YIg0YHQvtGB0YLQvtGP0L3QuNC1INC40YHQv9C+0LvRjNC30L7QstCw0L3QuNGPINC90LAg0Y3QutGA0LDQvdC1INC80LDRgdGB0L7QstGL0YUg0LTQtdC50YHRgtCy0LjQuSDRgSDQmtCVINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JfQsNC00LDQtdGCINGB0L7RgdGC0L7Rj9C90LjQtSDQuNC90YbQuNC00LXQvdGC0LAg0L3QsCDRjdC60YDQsNC90LUg0LzQsNGB0YHQvtCy0YvRhSDQtNC10LnRgdGC0LLQuNC5INGBINCa0JUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0KHQstGP0LfQsNGC0YwgKExpbmspINC00LvRjyDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4INGB0LLRj9C30Lgg0JrQlSDRgSDQtNGA0YPQs9C40Lwg0L7QsdGK0LXQutGC0L7QvCDQvdCwINGN0LrRgNCw0L3QtSDQv9C+0LvQvdC+0LPQviAoem9vbSB2aWV3KSDQv9GA0L7RgdC80L7RgtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINC00LvRjyDQtNC+0YHRgtGD0L/QsCDQuiDQuNGB0YLQvtGA0LjQuCDQmtCVINC/0YDQuCDQv9GA0L7RgdC80L7RgtGA0LUg0JrQlSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0JjRgdGC0L7RgNC40Y8g0LTQu9GPINC/0YDQvtGB0LzQvtGC0YDQsCDQuNGB0YLQvtGA0LjQuCDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GL0LLQsNC10YIg0L/Rg9C90LrRgiDQvNC10L3RjiDQtNC70Y8g0YPQtNCw0LvQtdC90LjRjyDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90L7QuSDQtdC00LjQvdC40YbRiyDQv9GA0Lgg0L/QvtC00YDQvtCx0L3QvtC8INC/0YDQvtGB0LzQvtGC0YDQtSDQsiDQuNC90YLQtdGA0YTQtdC50YHQtSDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfQo9C60LDQt9GL0LLQsNC10YIg0YHRgdGL0LvQutGDINCyINC80LXQvdGOINC00LvRjyDQvtGC0L7QsdGA0LDQttC10L3QuNGPINGB0YHRi9C70L7QuiDQvdCwINGN0LvQtdC80LXQvdGC0Ysg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4INCyINCy0LjQtNC1INC00YDQtdCy0L7QstC40LTQvdC+0LPQviDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjRjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCU0YPQsdC70LjRgNC+0LLQsNGC0Ywg0LTQu9GPINGB0L7Qt9C00LDQvdC40Y8g0L3QvtCy0L7QuSDQmtCVINC/0YPRgtC10Lwg0LrQvtC/0LjRgNC+0LLQsNC90LjRjyDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDRgtC10LrRg9GJ0LXQuSDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0JTRg9Cx0LvQuNGA0L7QstCw0YLRjCDQtNC70Y8g0YHQvtC30LTQsNC90LjRjyDQvdC+0LLQvtC5INCa0JUg0L/Rg9GC0LXQvCDQutC+0L/QuNGA0L7QstCw0L3QuNGPINGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC6INGC0LXQutGD0YnQtdC5INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRi9Cy0LDQtdGCINC/0YPQvdC60YIg0LzQtdC90Y4g0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LTQu9GPINC40LfQvNC10L3QtdC90LjRjyDRhdCw0YDQsNC60YLQtdGA0LjRgdGC0LjQuiDQmtCVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCd0LDQt9Cw0LQg0L/RgNC4INC/0L7QtNGA0L7QsdC90L7QvCDQv9GA0L7RgdC80L7RgtGA0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QvdGL0YUg0LXQtNC40L3QuNGGINCyINC40L3RgtC10YDRhNC10LnRgdC1INCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINCf0LXRh9Cw0YLRjCDQtNC70Y8g0L/QtdGH0LDRgtC4INGF0LDRgNCw0LrRgtC10YDQuNGB0YLQuNC6INCa0JUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YvQstCw0LXRgiDQv9GD0L3QutGCINC80LXQvdGOINC00LvRjyDQv9C+0LTRgNC+0LHQvdC+0LPQviDQv9GA0L7RgdC80L7RgtGA0LAg0JrQlSDQv9GA0Lgg0L7QsdC30L7RgNC1INCa0JUg0LIg0LjQvdGC0LXRgNGE0LXQudGB0LUg0LDQs9C10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+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+0LrQtdGAIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ9CS0LXRgNGB0LjRjyDQodGC0YDQvtC60L7QstC+0LUg0LLRi9GA0LDQttC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ9Cc0L7QtNGD0LvRjCDRgdGC0YDQvtC6INCy0LXRgNGB0LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfQotGA0LjQs9Cz0LXRgCDQstC10YDRgdC40LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ9Cc0L7QttC90L4g0LvQuCDQuNC30LHQtdC20LDRgtGMINCy0YvQv9C+0LvQvdC10L3QuNGPIENvbmZpZ0l0ZW1BQ0wsINC/0YDQvtCy0LXRgNGP0Y8g0LrRjdGI0LjRgNC+0LLQsNC90L3Ri9C1INC30LDQstC40YHQuNC80L7RgdGC0Lgg0L/QvtC70LXQuS4g0K3RgtC+INC80L7QttC10YIg0YPQu9GD0YfRiNC40YLRjCDQstGA0LXQvNGPINC30LDQs9GA0YPQt9C60Lgg0YTQvtGA0LzRg9C70Y/RgNC+0LIsINC90L4g0LTQvtC70LbQvdC+INCx0YvRgtGMINC+0YLQutC70Y7Rh9C10L3Qviwg0LXRgdC70LggQUNMTS3QvNC+0LTRg9C70Lgg0LHRg9C00YPRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPINC00LvRjyBJVFNNQ29uZmlnSXRlbS0g0LggRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ9Ca0LDQutCw0Y8g0L7QsdGJ0LDRjyDQuNC90YTQvtGA0LzQsNGG0LjRjyDQvtGC0L7QsdGA0LDQttCw0LXRgtGB0Y8g0LIg0LfQsNCz0L7Qu9C+0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ9C60LvQsNGB0YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAn0LPQu9C+0LHQsNC70YzQvdGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfQv9C+0YHRgtC/0YDQvtC00YPQutGC0LjQstC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn0L/RgNC10LTQv9GA0L7QtNGD0LrRgtC40LLQvdGL0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ9C/0YDQvtC00YPQutGC0LjQstC90YvQuSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSDQtNGO0LnQvNC+0LIgKDQ0LDQ1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxINC00Y7QudC8ICg1MywzNCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSDQtNGO0LnQvNCwICg2Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUg0LTRjtC50LzQsCAoODAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkt0LTRjtC50LzQvtCy0LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1INC00Y7QudC80LAgKDQsNDUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBVOiAzNSDQtNGO0LnQvNC+0LIgKDg4LDkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEt0LTRjtC50LzQvtCy0LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1INC00Y7QudC80L7QsiAoOTcsNzkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMt0LTRjtC50LzQvtCy0LDRjyDRgdGC0L7QudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2INC00Y7QudC80LAgKDYwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIg0LTRjtC50LzQsCAoMTA2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSDQtNGO0LnQvNCwICgxMjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSDQtNGO0LnQvNCwICg4LDg5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFU6IDUyLDUg0LTRjtC50LzQsCAoMTMzLDM1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSDQtNGO0LnQvNCwICg4MDAg0LzQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1INC00Y7QudC80LAgKDE0Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNS40IGluY2hlcyAoOTAwIG1tKSd9ID0gJzM1LDQg0LTRjtC50LzQsCAoOTAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyDQtNGO0LnQvNCwICgxNjAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCDQtNGO0LnQvNCwICgxMDAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSDQtNGO0LnQvNCwICgxNzMsMzUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSDQtNGO0LnQvNCwICgxMywzNCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1INC00Y7QudC80LAgKDE4Niw2OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDQtNGO0LnQvNCwICgxMTAwINC80LwpOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUg0LTRjtC50LzQsCAoMjAwLDAyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIg0LTRjtC50LzQsCAoMTIwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQg0LTRjtC50LzQsCAoMjEzLDM2INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcg0LTRjtC50LzQvtCyICgxNyw3OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1INC00Y7QudC80LAgKDIyLDIzINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUg0LTRjtC50LzQvtCyICgyNiw2NyDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUg0LTRjtC50LzQsCAoMzEsMTIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFU6IDE0INC00Y7QudC80L7QsiAoMzUsNTYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1INC00Y7QudC80LAgKDQwLDAxINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FHUEwgKEFmZmVybyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nJ30gPSAn0JHRg9GF0LPQsNC70YLQtdGA0YHQutC40Lkg0YPRh9C10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICfQoNCw0YHQv9GA0LXQtNC10LvQtdC90LjQtSDQsNC00YDQtdGB0L7Qsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAn0JDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAn0JDQvdCw0LvQvtCz0L7QstGL0Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICfQotC40L8g0L/RgNC40LHQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfQldC80LrQvtGB0YLRjCDQsNC60LrRg9C80YPQu9GP0YLQvtGA0LAgKNCQ0YcpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQsdCw0YLQsNGA0LXQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ9CX0LTQsNC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAn0JjQvdGC0LXRgNGE0LXQudGBINGI0LjQvdGLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICfQptCf0KMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAn0JrQu9Cw0YHRgSDQv9GA0L7RhtC10YHRgdC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAn0JXQvNC60L7RgdGC0YwgKNCT0JEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAn0JXQvNC60L7RgdGC0Ywg0L3QsCDQvtC00L3RgyDQstC40LTQtdC+0LrQsNGA0YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ9Cd0L7QvNC10YAg0LrQsNGA0YLRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ9Cj0YHRgtGA0L7QudGB0YLQstC+INC00LvRjyDRh9GC0LXQvdC40Y8g0LrQsNGA0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAn0KLQuNC/INC60LDRgNGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Ysg0LrQu9C40LXQvdGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn0JrQu9C40LXQvdGC0YHQutC+0LUg0L/RgNC+0LPRgNCw0LzQvNC90L7QtSDQvtCx0LXRgdC/0LXRh9C10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ9Ca0LDRgtC10LPQvtGA0LjRjyDQutC70LjQtdC90YLQvtCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ9Cn0LDRgdC+0LLQvtC5INC/0L7Rj9GBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdDbG9ja3NwZWVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTQuNC60LDRgtGLINC/0L7QtNC/0LjRgdC4INC60L7QtNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICfQmtC+0L3RhNC10YDQtdC90YYt0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICfQodC+0LPQu9Cw0YjQtdC90LjQtSDQviDQutC+0L3RgdGD0LvRjNGC0LjRgNC+0LLQsNC90LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn0KHQstGP0LfQsNGC0YzRgdGPINGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfQodCy0Y/Qt9Cw0YLRjNGB0Y8g0YEg0LTQuNGB0YLRgNC40LHRjNGO0YLQvtGA0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9C10L3QuNC1INC60L7QvdGC0LXQudC90LXRgNCw0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ9Ca0L7QvdGC0YDQsNC60YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ9Ci0LjQvyDQutC+0L3RgtGA0LDQutGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICfQodGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC60L7QvdGC0YDQsNC60YLQsCDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICfQodGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC60L7QvdGC0YDQsNC60YLQsCDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ9CR0LXRgdC/0YDQvtCy0L7QtNC90L7QuSDRgtC10LvQtdGE0L7QvSAoREVDVCBQaG9uZSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn0JXQtNC40L3QuNGG0LAg0LjQt9C80LXRgNC10L3QuNGPINGB0YLQvtC40LzQvtGB0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC70LjRhtC10L3Qt9C40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ9CU0LDRgtCwINGB0L7Qt9C00LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ9CY0L3QtNC40LLQuNC00YPQsNC70YzQvdCw0Y8g0YHRgtC+0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICdESENQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICdESENQINCX0LDRgNC10LfQtdGA0LLQuNGA0L7QstCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TLdGB0LXRgNCy0LXRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAn0JTQsNGC0LAg0YHRh9C10YLQsC3RhNCw0LrRgtGD0YDRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn0JTQsNGC0LAg0LfQsNC60LDQt9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfQlNCw0YLQsCDQstGL0LTQsNGH0Lgg0LPQsNGA0LDQvdGC0LjQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICfQlNCw0YLQsCDQstGL0YXQvtC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ9Cd0LDRgdGC0L7Qu9GM0L3Ri9C5INCf0JonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0Ysg0L/QvtC00L/QuNGB0Lgg0LTQvtC60YPQvNC10L3RgtC+0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFVFNJIFJhY2snfSA9ICfQodGC0L7QudC60LAgRVRTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAn0KHQtdGA0YLQuNGE0LjQutCw0YLRiyDRjdC70LXQutGC0YDQvtC90L3QvtC5INC/0L7Rh9GC0YsgKNGB0LXRgNGC0LjRhNC40LrQsNGC0YsgUy9NSU1FKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfQotGA0YPQtNC+0LLQvtC5INC00L7Qs9C+0LLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAn0JrQvtC90LXRh9C90YvQuSBJUC3QsNC00YDQtdGBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAn0J7QutC+0L3Rh9Cw0L3QuNC1INC/0L7QtNC00LXRgNC20LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ9CU0LDRgtCwINC40YHRgtC10YfQtdC90LjRjyDRgdGA0L7QutCwINC00LXQudGB0YLQstC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ9CS0L3QtdGI0L3QuNC5INC20LXRgdGC0LrQuNC5INC00LjRgdC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn0JHRgNCw0L3QtNC80LDRg9GN0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfQn9GA0L7RiNC40LLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn0J3QsNC60L7Qv9C40YLQtdC70Lgg0Y3QvdC10YDQs9C40Lgg0L3QsCDQvNCw0YXQvtCy0LjQutCw0YUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICfQpNC+0YDQvC3RhNCw0LrRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINGE0YDQsNC90YjQuNC30YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfQkdC10YHQv9C70LDRgtC90L7QtSDQn9CeJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ9Ce0LHRidCw0Y8g0LjQvdGE0L7RgNC80LDRhtC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICfQk9GA0LDRhNC40YfQtdGB0LrQuNC1INC60LDRgNGC0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ9CT0YDQsNGE0LjRh9C10YHQutCw0Y8g0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ9CQ0L/Qv9Cw0YDQsNGC0L3QvtC1INC+0LHQtdGB0L/QtdGH0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICfQnNC+0LTQtdC70Ywg0L7QsdC+0YDRg9C00L7QstCw0L3QuNGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ9CS0LXRgSDQvtCx0L7RgNGD0LTQvtCy0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ9CT0LDRgNC90LjRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJ9Cf0YDQvtGC0L7QutC+0LsgSVAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAn0KPQv9GA0LDQstC70LXQvdC40LUg0LjQtNC10L3RgtC40YTQuNC60LDRhtC40LXQuSDQuCDQtNC+0YHRgtGD0L/QvtC8IChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICfQmNC90LLQtdC90YLQsNGA0L3Ri9C5INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfQmNC90LLQtdGA0YHQuNC+0L3QvdGL0LUg0YDQsNGB0YXQvtC00YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINGB0YfQtdGC0LAt0YTQsNC60YLRg9GA0YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICfQmtC70LDQstC40LDRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICfQltCaLdC80L7QvdC40YLQvtGAICjQttC40LTQutC+0LrRgNC40YHRgtCw0LvQu9C40YfQtdGB0LrQuNC5INC00LjRgdC/0LvQtdC5KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAn0KHQstC10YLQvtC00LjQvtC00L3Ri9C5INC80L7QvdC40YLQvtGAICjRgdCy0LXRgtC+0LjQt9C70YPRh9Cw0Y7RidC40Lkg0LTQuNC+0LQpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ9Ch0YLQsNGG0LjQvtC90LDRgNC90YvQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXB0b3AnfSA9ICfQndC+0YPRgtCx0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ9Co0LjRgNC+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ9Cj0YDQvtCy0LXQvdGMIDE6INGE0LjQt9C40YfQtdGB0LrQuNC5INGD0YDQvtCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJ9Cj0YDQvtCy0LXQvdGMIDI6INGD0YDQvtCy0LXQvdGMINC/0LXRgNC10LTQsNGH0Lgg0LTQsNC90L3Ri9GFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCAzOiDRgdC10YLQtdCy0L7QuSDRg9GA0L7QstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfQo9GA0L7QstC10L3RjCAzOiDRgdC10YLQtdCy0L7QuSDRg9GA0L7QstC10L3RjCAo0KHRg9C/0LXRgNGB0LXRgtGMKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCA0OiDQotGA0LDQvdGB0L/QvtGA0YLQvdGL0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ9Cj0YDQvtCy0LXQvdGMIDU6INGB0LXQsNC90YHQvtCy0YvQuSDRg9GA0L7QstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICfQo9GA0L7QstC10L3RjCA2OiDRg9GA0L7QstC10L3RjCDQv9GA0LXQtNGB0YLQsNCy0LvQtdC90LjRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ9Cj0YDQvtCy0LXQvdGMIDc6INCf0YDQuNC60LvQsNC00L3QvtC5INGD0YDQvtCy0LXQvdGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINCw0YDQtdC90LTRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ9Cb0LjRhtC10L3Qt9C40L7QvdC90L7QtSDRgdC+0LPQu9Cw0YjQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAn0JvQuNGG0LXQvdC30LjQvtC90L3Ri9C5INC60LvRjtGHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ9Ci0LjQvyDQu9C40YbQtdC90LfQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICfQodGA0L7QuiDQtNC10LnRgdGC0LLQuNGPINC70LjRhtC10L3Qt9C40Lgg0L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ9Ch0YDQvtC6INC00LXQudGB0YLQstC40Y8g0LvQuNGG0LXQvdC30LjQuCDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfQm9C40YLQuNC5LdC20LXQu9C10LfQvi3RhNC+0YHRhNCw0YLQvdCw0Y8gKExpRmVQTzQpINCx0LDRgtCw0YDQtdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfQm9C40YLQuNC5LdC40L7QvdC90YvQuSAoTGktaW9uKSDQsNC60LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstC+0YAg0LfQsNC50LzQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn0J3QsNGF0L7QtNC40YLRgdGPINCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ9CU0L7Qu9Cz0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn0J/RgNC+0LjQt9Cy0L7QtNC40YLQtdC70YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ9Cc0LDQutGB0LjQvNCw0LvRjNC90LDRjyDQs9GA0YPQt9C+0L/QvtC00YrQtdC80L3QvtGB0YLRjCAo0JLRgiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAn0J/QsNC80Y/RgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAn0KLQuNC/INC/0LDQvNGP0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn0JzQuNC90Lgt0YHRgtC+0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC80L7QsdC40LvRjNC90L7Qs9C+INGC0LXQu9C10YTQvtC90LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn0JzQvtCx0LjQu9GM0L3Ri9C5L9Cy0YHRgtGA0L7QtdC90L3Ri9C5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn0JzQvtC00LXQu9GMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YHQsNC90LjQtSDQvNC+0LTQtdC70LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn0KDQsNC30YDQtdGI0LXQvdC40LUg0LzQvtC90LjRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfQoNCw0LfQvNC10YAg0LzQvtC90LjRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9Cc0YvRiNC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFubyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayd9ID0gJ9Ch0LXRgtGMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ9CY0L3RhNC+0YDQvNCw0YbQuNGPINC+INGB0LXRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICfQmNC90YTQvtGA0LzQsNGG0LjRjyDQviDRgdC10YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIExheWVyJ30gPSAn0KHQtdGC0LXQstC+0Lkg0YPRgNC+0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfQndC40LrQtdC70Ywt0LrQsNC00LzQuNC10LLQsNGPIChOaUNkKSDQsdCw0YLQsNGA0LXRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ9Cd0LjQutC10LvRjC3QvNC10YLQsNC70LvQs9C40LTRgNC40LTQvdGL0LkgKE5pTUgpINCw0LrQutGD0LzRg9C70Y/RgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn0KHQvtCz0LvQsNGI0LXQvdC40LUg0L4g0L3QtdGA0LDQt9Cz0LvQsNGI0LXQvdC40LggKE5EQSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfQkdC70L7QutC90L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgQ1BVcyd9ID0gJ9Ca0L7Qu9C40YfQtdGB0YLQstC+INC/0YDQvtGG0LXRgdGB0L7RgNC+0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LzQvtC00YPQu9C10Lkg0L7Qv9C10YDQsNGC0LjQstC90L7QuSDQv9Cw0LzRj9GC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzJ30gPSAn0JrQvtC70LjRh9C10YHRgtCy0L4g0LLQuNC00LXQvtC60LDRgNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELdC80L7QvdC40YLQvtGAICjQvtGA0LPQsNC90LjRh9C10YHQutC40Lkg0YHQstC10YLQvtC40LfQu9GD0YfQsNGO0YnQuNC5INC00LjQvtC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfQntC/0LXRgNCw0YbQuNC+0L3QvdGL0LUg0YDQsNGB0YXQvtC00YsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDQt9Cw0LrQsNC30LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICfQlNGA0YPQs9C+0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9CS0YvRhdC+0LTRiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfQn9Cw0YDRgtC90LXRgNGB0LrQvtC1INGB0L7Qs9C70LDRiNC10L3QuNC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAn0J3QvtC80LXRgCDRgtC10LvQtdGE0L7QvdCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICfQotC40L8g0YLQtdC70LXRhNC+0L3QsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ9Ck0LjQt9C40YfQtdGB0LrQuNC1INGP0LTRgNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bvd2VyIERlbGl2ZXJ5J30gPSAn0JTQvtGB0YLQsNCy0LrQsCDRjdC70LXQutGC0YDQvtGN0L3QtdGA0LPQuNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAn0J/RgNC40L7QsdGA0LXRgtC10L3QviDQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn0JPQu9GD0LHQuNC90LAg0YHRgtC+0LnQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn0KHRgtC+0LnQutC4IChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn0JrQsNCx0LjQvdC10YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICdTSU0t0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNC40LrQsNGC0YsgU1NML1RMUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ9CU0L7Qs9C+0LLQvtGAINC60YPQv9C70Lgt0L/RgNC+0LTQsNC20LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn0KHQv9GD0YLQvdC40LrQvtCy0YvQuSDRgtC10LvQtdGE0L7QvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICfQk9C10YDQvNC10YLQuNGH0L3QsNGPINGB0LLQuNC90YbQvtCy0L4t0LrQuNGB0LvQvtGC0L3QsNGPINCx0LDRgtCw0YDQtdGPIChTTEEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn0KHQtdGA0LjQudC90YvQuSDQvdC+0LzQtdGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ9Ch0LXRgNCy0LXRgNC90L7QtSDQv9GA0L7Qs9GA0LDQvNC80L3QvtC1INC+0LHQtdGB0L/QtdGH0LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0L7RgCDQvtCxINC+0LrQsNC30LDQvdC40Lgg0YPRgdC70YPQsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ9Ch0LXRgNCy0LjRgdC90LDRjyDQvNC10YLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NoYXJld2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2NrZXQgVHlwZSd9ID0gJ9Ci0LjQvyDRgNC+0LfQtdGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ9Cf0YDQvtCz0YDQsNC80LzQvdC+0LUg0L7QsdC10YHQv9C10YfQtdC90LjQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ9CU0LjQvdCw0LzQuNC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn0KHRgtCw0L3QtNCw0YDRgtC90YvQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAn0KHRgtCw0YDRgtC+0LLRi9C5IElQLdCw0LTRgNC10YEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ9Cl0YDQsNC90LXQvdC40LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICfQoNCw0LfQtNC10Lsg0LTQu9GPINGF0YDQsNC90LXQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfQlNC+0YfQtdGA0L3Rj9GPINC60L7QvNC/0LDQvdC40Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ9Cg0LXQt9GO0LzQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ9Ci0L7QvdC60LjQuSDQutC70LjQtdC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ9Cd0LjRgtC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICdUaHVuZGVyYm9sdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpJ30gPSAn0J7QsdGJ0LDRjyDQvtC/0LXRgNCw0YLQuNCy0L3QsNGPINC/0LDQvNGP0YLRjCDQstC40LTQtdC+0LrQsNGA0YLRiyAo0JPQkSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICfQntCx0YnQsNGPINC+0L/QtdGA0LDRgtC40LLQvdCw0Y8g0L/QsNC80Y/RgtGMICjQk9CRKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3VjaHNjcmVlbiBNb25pdG9yJ30gPSAn0KHQtdC90YHQvtGA0L3Ri9C5INC80L7QvdC40YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rvd2VyJ30gPSAn0JHQsNGI0L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLdC60L7QvdGG0LXQvdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ9CT0LDRgNC90LjRgtGD0YDQsCBWUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLdGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfQktC10LEt0LrQsNC80LXRgNCwJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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/Fvmt1IGtvbmZpZ3Vyw6FjaWUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdTcHVzdGnFpSB2eWjEvmFkw6F2YW5pZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICdWeWjEvmFkw6F2YW5pZSBhaiB2IHByZWRjaMOhZHphasO6Y2ljaCB2ZXJ6acOhY2g/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnVHJlZVZpZXcgcHJlIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICfDmnJvdmXFiCBoxLpia3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdQcmlibMOtxb5lbmllL29kZGlhbGVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnTWF4aW3DoWxuYSDDunJvdmXFiCBvZGthem92IGRvc2lhaG51dMOhIHByZSBDb25maWdJdGVtISc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ1BvbG/FvmthIGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnSW5mb3Jtw6FjaWUgbyBwb2xvxb5rZSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0FrdHXDoWxueSBzdGF2IG5hc2FkZW5pYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnQWt0dcOhbG55IHN0YXYgaW5jaWRlbnR1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1Bvc2xlZG7DoSB6bWVuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdOYXBvc2xlZHkgem1lbmlsJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnVmHFoWUgcG9sb8W+a3kgQ29uZmlnSXRlbXMnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAnVnloxL5hZMOhdmFuaWUgcG9sb8W+a3kgQ29uZmlnSXRlbSc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0ltcG9ydHVqw7ogc2EgdGlldG8gdHJpZWR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ0ltcG9ydHVqw7ogc2EgdGlldG8gw7psb2h5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ1Vwb3pvcsWIdWplbWUsIMW+ZSBzYSB2eXR2b3JpYSBhaiBwcsOtc2x1xaFuw6kgZHluYW1pY2vDqSBwb2xpYSBhIHRyaWVkeSBHZW5lcmFsQ2F0YWxvZyBhIG5lZMO0amRlIGsgaWNoIGF1dG9tYXRpY2vDqW11IG9kc3Ryw6FuZW5pdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nfSA9ICdDaGNldGUgcG9rcmHEjW92YcWlPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdQb3RyZWJ1amV0ZSBwcsOta2xhZHkgdHJpZWQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJ0RlZmluw61jaWEgbmllIGplIHBsYXRuw70gaGFzaCBZQU1MLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJ1ByZWjEvmFkOiBJVFNNIENvbmZpZ0l0ZW0nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnTmllIGplIHphZGFuw6kgxb5pYWRuZSBDb25maWdJdGVtSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnUG90cmVidWpldGUgYXNwb8WIIGplZG51IHZ5YnJhbsO6IHBvbG/Fvmt1IGtvbmZpZ3Vyw6FjaWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnSyB0ZWp0byBrb25maWd1cmHEjW5laiBwb2xvxb5rZSBuZW3DoXRlIHByw61zdHVwIG5hIHrDoXBpczogJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ1ByZSB0cmllZHUgJXMgbmVib2xhIGRlZmlub3ZhbsOhIMW+aWFkbmEgZGVmaW7DrWNpYSEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ0tvbmZpZ3VyYcSNbsOhIHBvbG/FvmthICIlcyIgbmVib2xhIG7DoWpkZW7DoSB2IGRhdGFiw6F6ZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOZXBvZGFyaWxvIHNhIG9kc3Ryw6FuacWlIGtvbmZpZ3VyYcSNbsO6IHBvbG/Fvmt1IElEICVzISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9uIGZvdW5kIGZvciBDb25maWdJdGVtSUQgJXMhJ30gPSAnUHJlIENvbmZpZ0l0ZW1JRCAlcyBuZWJvbGEgbsOhamRlbsOhIMW+aWFkbmEgdmVyemlhISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaWUgamUgdXZlZGVuw6kgxb5pYWRuZSBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIGFuaSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgaXMgZ2l2ZW4hJ30gPSAnUHLDrXN0dXAgbmllIGplIHVtb8W+bmVuw70hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtSGlzdG9yeS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05lbW/Fvm5vIHpvYnJhemnFpSBoaXN0w7NyaXUsIG5pZSBqZSB6YWRhbsOpIMW+aWFkbmUgQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lbW/Fvm5vIHpvYnJhemnFpSBoaXN0w7NyaXUsIG5pZSBzw7ogZGFuw6kgxb5pYWRuZSBwcsOtc3R1cG92w6kgcHLDoXZhISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTm92w70gcHJ2b2sgQ29uZmlnSXRlbSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3bDoSB2ZXJ6aWEgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ1N0YXYgbmFzYWRlbmlhIGFrdHVhbGl6b3ZhbsO9IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnU3RhdiBpbmNpZGVudHUgYWt0dWFsaXpvdmFuw70gKG5ldz0lcywgb2xkPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSBvZHN0csOhbmVuw70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICdQcmlkYW7DvSBvZGtheiBuYSAlcyAodHlwZT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ09ka2F6IG5hICVzICh0eXBlPSVzKSBvZHN0csOhbmVuw70nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBkZWZpbml0aW9uIHVwZGF0ZWQgKElEPSVzKSd9ID0gJ0RlZmluw61jaWEgcG9sb8W+a3kgQ29uZmlnSXRlbSBha3R1YWxpem92YW7DoSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnTsOhem92IGFrdHVhbGl6b3ZhbsO9IChuZXc9JXMsIG9sZD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICdBdHJpYsO6dCAlcyBha3R1YWxpem92YW7DvSB6ICIlcyIgbmEgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICdWZXJ6aWEgJXMgb2RzdHLDoW5lbsOhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ05pZSBqZSB1dmVkZW7DqSDFvmlhZG5lIENvbmZpZ0l0ZW1JRCBhbmkgVmVyc2lvbklEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICdOaWUgamUgbW/Fvm7DqSB6b2JyYXppxaUgcG9sb8W+a3Uga29uZmlndXLDoWNpZSwgbmllIHPDuiBkYW7DqSDFvmlhZG5lIHByw61zdHVwb3bDqSBwcsOhdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzIHNhIG5lbmHFoWxvIHYgZGF0YWLDoXplISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAndnl0bGHEjWVuw6kgJXMgbmEgJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ1JlZmVyZW5jaWEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICdOZXBsYXRuw6kgQ2xhc3NJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICdOaWUgamUgdXZlZGVuw6kgxb5pYWRuZSBDbGFzc0lEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBhY2Nlc3MgcmlnaHRzIGZvciB0aGlzIGNsYXNzIGdpdmVuISd9ID0gJ1ByZSB0w7p0byB0cmllZHUgbmllIHPDuiB1ZGVsZW7DqSDFvmlhZG5lIHByw61zdHVwb3bDqSBwcsOhdmEhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfFvWlhZG55IHbDvXNsZWRvayEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICdWw71zbGVka3kgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uZWogcG9sb8W+a3knOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJ05pZSBqZSBtb8W+bsOpIHpvYnJhemnFpSBwb2xvxb5rdSwgbmllIHPDuiBkYW7DqSDFvmlhZG5lIHByw61zdHVwb3bDqSBwcsOhdmEgcHJlIENvbmZpZ0l0ZW0hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ1BvbG/FvmthIENvbmZpZ0l0ZW0gbmVib2xhIG7DoWpkZW7DoSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnTmVuYcWhbGkgc2Egxb5pYWRuZSB2ZXJ6aWUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAncHJldsOhZHprb3bDqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAndXBvem9ybmVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnaW5jaWRlbnQnfSA9ICdpbmNpZGVudCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnU3RhdiBuYXNhZGVuaWEgdGVqdG8gcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1N0YXYgaW5jaWRlbnR1IHRlanRvIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnxb1pYWRuZSBwb3ZvbGVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnRmlsdGVyIGplIG5lcGxhdG7DvSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJ1Z5aMS+YWTDoXZhY2llIHBhcmFtZXRyZSBzw7ogbmVwbGF0bsOpISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ1pvYnJhemVuw6kgcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICdUeXAgc3RhdnUgbmFzYWRlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ1R5cCBha3R1w6FsbmVobyBpbmNpZGVudHUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAnTWVkemknOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09ibWVkemVuaWEgdHJpZWR5IHByZSBwb2xvxb5rdSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICdWw71iZXIgamVkbmVqIGFsZWJvIHZpYWNlcsO9Y2ggdHJpZWQgbmEgb2JtZWR6ZW5pZSB2eWJlcmF0ZcS+bsO9Y2ggcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ09ibWVkemVuaWEgdHJpZWR5IHByZSBwb2xvxb5rdSBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnVsO9YmVyIGplZG5laiBhbGVibyB2aWFjZXLDvWNoIHRyaWVkIG5hIG9ibWVkemVuaWUgdnliZXJhdGXEvm7DvWNoIHBvbG/FvmllayBrb25maWd1csOhY2llJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnRHluYW1pY2vDqSAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ1N0YXRpY2vDvSAodmVyemlhKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICdUeXAgb2RrYXp1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ8SMaSBzYSB0b3RvIHByZXBvamVuaWUgdnrFpWFodWplIG5hIENvbmZpZ0l0ZW0gYWxlYm8gc3RhdGlja8O6IHZlcnppdSBvZGthenVqw7pjZWhvIG9iamVrdHUuIFbDvXBvxI1ldCBha3R1w6FsbmVobyBzdGF2dSBpbmNpZGVudHUgc2Egdnlrb27DoXZhIGxlbiBwcmkgZHluYW1pY2vDvWNoIG9ka2F6b2NoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ1Z5YmVydGUgYXRyaWLDunQsIHBvZMS+YSBrdG9yw6lobyBzYSBidWTDuiB2eWjEvmFkw6F2YcWlIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ1rDoWtsYWRuw6EgxaF0cnVrdMO6cmEgbmllIGplIHBsYXRuw6EuIFBvc2t5dG5pdGUgaGFzaCBzIMO6ZGFqbWkgdm8gZm9ybcOhdGUgWUFNTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICdSZcWlYXplYyBZQU1MIHNhIG11c8OtIHphxI3DrW5hxaUgem5ha29tIFwnLS0tXCcuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJ05lcG9kYXJpbG8gc2EgdnnEjWlzdGnFpSB0YWJ1xL5rdSBjb25maWdpdGVtX2xpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICdOZWJvbGkgbsOhamRlbsOpIMW+aWFkbmUgcmVsZXZhbnRuw6kgZHluYW1pY2vDqSBwb2xpYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ05lcG9kYXJpbG8gc2Egdmxvxb5pxaUgZG8gdGFidcS+a3kgY29uZmlnaXRlbV9saW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICdWbG/FvmVuaWUgMCByaWFka292IGRvIHRhYnXEvmt5IGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICdNYXhpbcOhbG55IHBvxI1ldCBqZWRuw6lobyBwcnZrdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICdSZcWlYXplYyB2ZXJ6aWUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnQ2h5YmEgcHJpIHN5bmNocm9uaXrDoWNpaSBkZWZpbsOtY2nDrS4gU2tvbnRyb2x1anRlLCBwcm9zw61tLCBwcm90b2tvbC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdNw6F0ZSBkZWZpbsOtY2llIElUU01Db25maWdJdGVtLCBrdG9yw6kgbmllIHPDuiBzeW5jaHJvbml6b3ZhbsOpLiBOYXNhxI90ZSBkeW5hbWlja8OpIHptZW55IHBvbMOtIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnVnlwcsWhYWxhIHBsYXRub3PFpSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ8OaZHLFvmJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnUGlsb3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1Bsw6Fub3ZhbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ09wcmF2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnbmEgZMO0Y2hvZGt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1ByZWjEvmFkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdUZXN0b3ZhbmllL1FBJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICdQcmVoxL5hZCBhIHBvdHZyZGVuaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0b3ZhbmllIHRyaWVkL3JvbMOtIGEgaWNoIHPDunZpc2lhY2ljaCBwb2zDrSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJ1BvxI1hcyBpbXBvcnR1IHRyaWVkeSBkb8WhbG8gayBjaHliZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNrcnl0w6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIFpvYnJhemVuw6knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1Vtb8W+xYh1amUgcm96xaHDrXJlbsOpIHBvZG1pZW5reSB2eWjEvmFkw6F2YW5pYSB2IGtvbmZpZ3VyYcSNbmVqIHBvbG/FvmtlIHZ5aMS+YWTDoXZhbmlhIHYgcm96aHJhbsOtIGFnZW50YS4gUG9tb2NvdSB0ZWp0byBmdW5rY2llIG3DtMW+ZXRlIHZ5aMS+YWTDoXZhxaUgbmFwci4gbsOhem92IGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHMgcG9kbWllbmthbWkgdHlwdSAiKCprZXkxKiYmKmtleTIqKSIgYWxlYm8gIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdVbW/FvsWIdWplIHJvesWhw61yZW7DqSBwb2RtaWVua3kgdnloxL5hZMOhdmFuaWEgdm8gdnloxL5hZMOhdmFuw60ga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gesOha2F6bsOta2EuIFBvbW9jb3UgdGVqdG8gZnVua2NpZSBtw7TFvmV0ZSB2eWjEvmFkw6F2YcWlIG5hcHIuIG7DoXpvdiBrb25maWd1cmHEjW5laiBwb2xvxb5reSBwb21vY291IHBvZG1pZW5vayB0eXB1ICIoKmtleTEqJiYqa2V5MiopIiBhbGVibyAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ1ByaXJhZGVuw6kgQ0knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+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+a3kgYmFja2VuZG92w6lobyBzbWVyb3ZhxI1hIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ1Z5dHZvcmVuaWUgYSBzcHLDoXZhIGRlZmluw61jacOtIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ1Z5dHbDoXJhIGzDrXN0a3kgcHJlIHBvbG/Fvmt5IENvbmZpZ0l0ZW1zIHYgdXLEjWl0w71jaCDEjWFzb3bDvWNoIGJvZG9jaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnWsOha2F6bsOtY2kgbcO0xb51IHZpZGllxaUgaGlzdG9yaWNrw6kgdmVyemllIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdaw6FrYXpuw61jaSBtYWrDuiBtb8W+bm9zxaUgbWFudcOhbG5lIHByZXDDrW5hxaUgbWVkemkgaGlzdG9yaWNrw71taSB2ZXJ6aWFtaSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdQcmVkdm9sZW7DqSDDumRhamUsIGt0b3LDqSBzYSBtYWrDuiBwb3XFvmnFpSBuYSBvYnJhem92a2UgdnloxL5hZMOhdmFuaWEgYXRyaWLDunRvdiBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4gUHLDrWtsYWQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAnUHJlZHZvbGVuw6kgw7pkYWplLCBrdG9yw6kgc2EgbWFqw7ogcG91xb5pxaUgbmEgb2JyYXpvdmtlIHZ5aMS+YWTDoXZhbmlhIGF0cmliw7p0b3Yga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuIFByw61rbGFkOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnRGVmaW51anRlIEFrY2llLCBwcmkga3RvcsO9Y2ggamUgdm8gd2lkZ2V0ZSBwcmVwb2plbsO9Y2ggb2JqZWt0b3YgayBkaXNwb3rDrWNpaSB0bGHEjWlkbG8gbmFzdGF2ZW5pYSAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBVcG96b3LFiHVqZW1lLCDFvmUgdGlldG8gQWtjaWUgbXVzaWEgbWHFpSB6YXJlZ2lzdHJvdmFuw6kgbmFzbGVkdWrDumNlIHPDumJvcnkgSlMgYSBDU1M6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGEgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnRGVmaW5vdmFuaWUgc2Now6lteSBUZW1wbGF0ZTo6VG9vbGtpdCBwcmUgcmXFpWF6Y2UgdmVyemnDrS4gUG91xb7DrXZhIHNhIGxlbiB2dGVkeSwgYWsgamUgbW9kdWwgVmVyc2lvbiBTdHJpbmcgbmFzdGF2ZW7DvSBuYSBUZW1wbGF0ZVRvb2xraXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICdEZWZpbnVqdGUgc8O6Ym9yIHBvZG1pZW5vaywgemEga3RvcsO9Y2ggbcO0xb5lIHrDoWthem7DrWsgdmlkaWXFpSBwb2xvxb5rdSBrb25maWd1csOhY2llLiBQb2RtaWVua3kgbcO0xb51IGJ5xaUgdm9saXRlxL5uZSBvYm1lZHplbsOpIG5hIHVyxI1pdMOpIHNrdXBpbnkgesOha2F6bsOta292LiBOw6F6b3YgamUgamVkaW7DvSBwb3Zpbm7DvSBhdHJpYsO6dC4gQWsgbmllIHPDuiB6YWRhbsOpIMW+aWFkbmUgxI9hbMWhaWUgbW/Fvm5vc3RpLCB2xaFldGt5IGtvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5IGJ1ZMO6IHZpZGl0ZcS+bsOpIHYgcsOhbWNpIHRlanRvIGthdGVnw7NyaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgdnltYXphbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gcG9tb2NvdSB2xaFlb2JlY27DqWhvIHJvemhyYW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSB6w61za2FuaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTSBwb21vY291IHbFoWVvYmVjbsOpaG8gcm96aHJhbmlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgcG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHZ5aMS+YWTDoXZhbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gcG9tb2NvdSB2xaFlb2JlY27DqWhvIHJvemhyYW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHBvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBuYXN0YXZlbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gcG9tb2NvdSB2xaFlb2JlY27DqWhvIHJvemhyYW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW51amUgbW9kdWwgcHJlaMS+YWR1IG5hIHpvYnJhemVuaWUgbWFsw6lobyB6b2JyYXplbmlhIHpvem5hbXUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0RlZmludWplLCDEjWkgc2EgdiBzcG9qZW5pYWNoIHV6bG92IG11c2lhIHpvYnJhem92YcWlIHpuYcSNa3kgdHlwdSBzcG9qZW5pYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmludWplIHJlZ3Vsw6FybmUgdsO9cmF6eSBqZWRub3RsaXZvIHByZSBrYcW+ZMO6IHRyaWVkdSBDb25maWdJdGVtIG5hIGtvbnRyb2x1IG7DoXp2dSBDb25maWdJdGVtIGEgem9icmF6ZW5pZSBwcsOtc2x1xaFuw71jaCBjaHlib3bDvWNoIHNwcsOhdi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbnVqZSBkb3N0dXBuw6kgc3TEunBjZSBDSSB2IHByZWjEvmFkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHrDoXZpc2xvc3RpIG9kIHRyaWVkeSBDSS4gS2HFvmTDoSBwb2xvxb5rYSBtdXPDrSBwb3pvc3TDoXZhxaUgeiBuw6F6dnUgdHJpZWR5IGEgcG/EvmEgZG9zdHVwbsO9Y2ggcG9sw60gcHJlIHByw61zbHXFoW7DuiB0cmllZHUuIFBvbG/Fvmt5IGR5bmFtaWNrw71jaCBwb2zDrSBtdXNpYSByZcWhcGVrdG92YcWlIHNjaMOpbXUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmludWplIHByZWR2b2xlbsO9IGF0cmliw7p0IHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgcHJlIHRyaWVkZW5pZSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgcG9sb8W+aWVrIGtvbmZpZ3Vyw6FjaWUgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gYXRyaWLDunQgcG9sb8W+a3kga29uZmlndXLDoWNpZSBwcmUgdHJpZWRlbmllIHBvbG/FvmllayBrb25maWd1csOhY2llIHZvIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2IHJvemhyYW7DrSB6w6FrYXpuw61rYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DvSBhdHJpYsO6dCBwb2xvxb5reSBrb25maWd1csOhY2llIHByZSB0cmllZGVuaWUgcG9sb8W+a3kga29uZmlndXLDoWNpZSB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgcG9sb8W+a3kga29uZmlndXLDoWNpZSB0ZWp0byBvcGVyw6FjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DqSBwb3JhZGllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHZvIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSBhZ2VudGEuIE5haG9yOiBuYWpzdGFyxaFpZSBuYSB2cmNodS4gTmFkb2w6IG5ham5vdsWhaWUgbmEgdnJjaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdEZWZpbnVqZSBwcmVkdm9sZW7DqSBwb3JhZGllIHBvbG/FvmllayBrb25maWd1csOhY2llIHZvIHbDvXNsZWRrdSB2eWjEvmFkw6F2YW5pYSBwb2xvxb5pZWsga29uZmlndXLDoWNpZSB2IHJvemhyYW7DrSB6w6FrYXpuw61rYS4gTmFob3I6IG5hanN0YXLFoWllIG5hIHZyY2h1LiBOYWRvbDogbmFqbm92xaFpZSBuYSB2cmNodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw6kgcG9yYWRpZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2byB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdGVqdG8gb3BlcsOhY2llLiBOYWhvcjogbmFqc3RhcsWhaWUgbmEgdnJjaHUuIE5hZG9sOiBuYWpub3bFoWllIG5hIHZyY2h1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw6kgem9icmF6ZW7DqSBzdMS6cGNlIENJIHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgesOhdmlzbG9zdGkgb2QgdHJpZWR5IENJLiBLYcW+ZMOhIHBvbG/FvmthIG11c8OtIHBvem9zdMOhdmHFpSB6IG7DoXp2dSB0cmllZHkgYSBwb8S+YSBkb3N0dXBuw71jaCBwb2zDrSBwcmUgcHLDrXNsdcWhbsO6IHRyaWVkdS4gUG9sb8W+a3kgZHluYW1pY2vDvWNoIHBvbMOtIG11c2lhIHJlxaFwZWt0b3ZhxaUgc2Now6ltdSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbnVqZSBwcmVkdm9sZW7DuiBoxLpia3UgdnrFpWFob3YsIGt0b3LDqSBzYSBtYWrDuiB6b2JyYXpvdmHFpS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gem9icmF6ZW7DvSBhdHJpYsO6dCB2eWjEvmFkw6F2YW5pYSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBwcmUgb2JyYXpvdmt1IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW51amUgcHJlZHZvbGVuw70gem9icmF6ZW7DvSBhdHJpYsO6dCB2eWjEvmFkw6F2YW5pYSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayBwcmUgb2JyYXpvdmt1IHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrLiBQcsOta2xhZDogIktleSIgKEvEvsO6xI0pIG11c8OtIG1hxaUgbsOhem92IGR5bmFtaWNrw6lobyBwb8S+YSB2IHRvbXRvIHByw61wYWRlICJYIiwgIkNvbnRlbnQiIChPYnNhaCkgbXVzw60gbWHFpSBob2Rub3R1IGR5bmFtaWNrw6lobyBwb8S+YSB2IHrDoXZpc2xvc3RpIG9kIHR5cHUgZHluYW1pY2vDqWhvIHBvxL5hLCBUZXh0OiAiYSB0ZXh0IiwgRHJvcGRvd246ICIxIiwgRGF0ZS9UaW1lOiAiU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhIGFsZWJvIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXTDvcW+ZGXFiDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9UHJlZDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmludWplIHByZWR2b2xlbsO9IHBvZG9iamVrdCB0cmllZHkgIklUU01Db25maWdJdGVtIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RlZmludWplIGRvc3R1cG7DqSBzdMS6cGNlIENJIHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgesOhdmlzbG9zdGkgb2QgdHJpZWR5IENJLiBLYcW+ZMOhIHBvbG/FvmthIG11c8OtIHBvem9zdMOhdmHFpSB6IG7DoXp2dSB0cmllZHkgYSBwb8S+YSBkb3N0dXBuw71jaCBwb2zDrSBwcmUgcHLDrXNsdcWhbsO6IHRyaWVkdS4gUG9sb8W+a3kgZHluYW1pY2vDvWNoIHBvbMOtIG11c2lhIHJlxaFwZWt0b3ZhxaUgc2Now6ltdSBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEZWZpbnVqZSB2w73FoWt1IGtvbXBvbmVudHUgdGV4dG92w6lobyBlZGl0b3JhIHByZSB0w7p0byBvYnJhem92a3UuIFphZGFqdGUgxI3DrXNsbyAocGl4ZWx5KSBhbGVibyBwZXJjZW50dcOhbG51IGhvZG5vdHUgKHJlbGF0w612bnUpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb8SNZXQgcmlhZGtvdiBwcmUgZWRpdG9yIGRlZmluw61jacOtIENJIHYgcm96aHJhbsOtIHNwcsOhdmN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdEZWZpbnVqZSBwb3JhZGllIGluY2lkZW50bsO9Y2ggc3Rhdm92IG9kIHZ5c29rw6lobyAobmFwci4gY3JpY2l0YWwpIHBvIG7DrXpreSAobmFwci4gZnVuY3Rpb25hbCkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnRGVmaW51amUgcHLDrXNsdcWhbsOpIHN0YXZ5IG5hc2FkZW5pYSwgdiBrdG9yw71jaCBtw7TFvnUgcHJlcG9qZW7DqSB0aXB5IG92cGx5dm5pxaUgc3RhdiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWjEvmFkw6F2YW5pYSBwcmUgb2JyYXpvdmt1IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW51amUgbGltaXQgdnloxL5hZMOhdmFuaWEgcHJlIG9icmF6b3ZrdSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmludWplIGxpbWl0IHZ5aMS+YWTDoXZhbmlhIHByZSBvYnJhem92a3UgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbnVqZSBsaW1pdCB2eWjEvmFkw6F2YW5pYSBwcmUgb2JyYXpvdmt1IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmludWplIHpvYnJhemVuw6kgc3TEunBjZSBDSSB2IGtvbXBsZXhub20gem9icmF6ZW7DrSB0YWJ1xL5reSBwcmVwb2plbsOtIHByZSB2xaFldGt5IHRyaWVkeSBDSS4gQWsgbmVleGlzdHVqZSDFvmlhZG5hIHBvbG/FvmthLCB6b2JyYXppYSBzYSBwcmVkdm9sZW7DqSBzdMS6cGNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW51amUgem9icmF6ZW7DqSBzdMS6cGNlIENJIHYga29tcGxleG5vbSB6b2JyYXplbsOtIHRhYnXEvmt5IHByZXBvamVuw60gdiB6w6F2aXNsb3N0aSBvZCB0cmllZHkgQ0kuIEthxb5kw70gesOhem5hbSBtdXPDrSBtYcWlIHByZWRwb251IHMgbsOhenZvbSB0cmllZHkgYSBkdm9qaXTDvW1pIGR2b2pib2RrYW1pICh0LiBqLiBDb21wdXRlcjo6KS4gRXhpc3R1amUgbmlla2/EvmtvIENJLUF0dHJpYnV0ZXMgKGF0cmliw7p0b3YgQ0kpLCBrdG9yw6kgc8O6IHNwb2xvxI1uw6kgcHJlIHbFoWV0a3kgQ0kgKHByw61rbGFkIHByZSB0cmllZHUgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIE5hIHpvYnJhemVuaWUgamVkbm90bGl2w71jaCBDSS1hdHJpYsO6dG92IGRlZmlub3ZhbsO9Y2ggdiBDSS1kZWZpbsOtY2lpIHNhIG11c8OtIHBvdcW+acWlIG5hc2xlZHVqw7pjYSBzY2jDqW1hIChwcsOta2xhZCBwcmUgdHJpZWR1IENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIEFrIHByZSB0cmllZHUgQ0kgbmVleGlzdHVqZSDFvmlhZG5hIHBvbG/FvmthLCB6b2JyYXppYSBzYSBwcmVkdm9sZW7DqSBzdMS6cGNlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmludWplLCBrdG9yw6kgcG9sb8W+a3kgc8O6IGsgZGlzcG96w61jaWkgcHJlICJBY3Rpb24iIHYgdHJldGVqIMO6cm92bmkgxaF0cnVrdMO6cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW51amUsIGt0b3LDqSBwb2xvxb5reSBzw7ogZG9zdHVwbsOpIHYgcHJ2ZWogw7pyb3ZuaSDFoXRydWt0w7pyeSBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRGVmaW51amUsIGt0b3LDqSBwb2xvxb5reSBzw7ogZG9zdHVwbsOpIHYgZHJ1aGVqIMO6cm92bmkgxaF0cnVrdMO6cnkgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiBsaW5rIChuYW1lZCBmcm9tIHRoZSB0aWNrZXQgcGVyc3BlY3RpdmUpIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ1VyxI11amUsIGt0b3LDvSB0eXAgcHJlcG9qZW5pYSAocG9tZW5vdmFuw70geiBwb2jEvmFkdSB0aWtldHUpIG3DtMW+ZSBvdnBseXZuacWlIHN0YXYgcHJlcG9qZW5laiBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdVcsSNdWplLCBrdG9yw70gdHlwIHRpcHUgbcO0xb5lIG92cGx5dm5pxaUgc3RhdiBwcmVwb2plbmVqIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ0FrdHVhbGl6w6FjaWEgZGVmaW7DrWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnT2RzdHLDoW5lbmllIHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdGYXJiYSBzdGF2dSBuYXNhZGVuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpa8OhdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIHVkYWxvc3TDrSBkeW5hbWlja8O9Y2ggcG9sw60sIGt0b3LDvSBvem5hxI3DrSBkZWZpbsOtY2llIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIGFrbyBuZXN5bmNocm9uaXpvdmFuw6ksIGFrIHNhIHptZW5pYSBkeW5hbWlja8OpIHBvbGlhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY2vDqSBwb2xpYSB6b2JyYXplbsOpIG5hIG9icmF6b3ZrZSDEj2FsxaHDrWNoIHBvbMOtIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEeW5hbWlja8OpIHBvbGlhIHpvYnJhemVuw6kgbmEgb2JyYXpvdmtlIHByZWjEvmFkdSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSB6w6FrYXpuw61rYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pY2vDqSBwb2xpYSB6b2JyYXplbsOpIG5hIG9icmF6b3ZrZSB2eWjEvmFkw6F2YW5pYSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ1Bvdm9sw60gZnVua2NpdSBocm9tYWRuZWogYWtjaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kgcHJlIGZyb250ZW5kIGFnZW50YSBuYSBwcsOhY3UgcyB2aWFjIGFrbyBqZWRub3Uga29uZmlndXJhxI1ub3UgcG9sb8W+a291IG5hcmF6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIG9ubHkgZm9yIHRoZSBsaXN0ZWQgZ3JvdXBzLid9ID0KICAgICAgICAnU3RhdiBuYXNhZGVuaWEgdGVqdG8gcG9sb8W+a3kga29uZmlndXLDoWNpZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQb3ZvbMOtL3Z5cG5lIGZ1bmtjaXUga29udHJvbHkgamVkaW5lxI1uw71jaCBuw6F6dm92IHBvbG/FvmllayBrb25maWd1csOhY2llIElUU00uIFByZWQgemFwbnV0w61tIHRlanRvIG1vxb5ub3N0aSBieSBzdGUgbWFsaSBza29udHJvbG92YcWlIHN5c3TDqW0sIMSNaSB1xb4gbmVleGlzdHVqw7oga29uZmlndXJhxI1uw6kgcG9sb8W+a3kgcyBkdXBsaWNpdG7DvW1pIG7DoXp2YW1pLiBNw7TFvmV0ZSB0byB1cm9iacWlIHBvbW9jb3Uga29uem9sb3bDqWhvIHByw61rYXp1IEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnTW9kdWwgdWRhbG9zdGkgbmEgbmFzdGF2ZW5pZSBjb25maWdpdGVtLXN0YXR1cyBuYSB0aWNrZXQtY29uZmlnaXRlbS1saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICdQb2xpYSBpbmRleHUga29uZmlndXJhxI1uZWogcG9sb8W+a3ksIGt0b3LDqSBzYSBwb3XFvsOtdmFqw7ogbmEgZnVsbHRleHRvdsOpIHZ5aMS+YWTDoXZhbmllLiBQb2xpYSBzw7ogdGllxb4gdWxvxb5lbsOpLCBhbGUgbmllIHPDuiBwb3Zpbm7DqSBwcmUgY2Vsa292w7ogZnVua8SNbm9zxaUuIFphaHJudXRpZSBwcsOtbG9oIG1vxb5ubyB6YWvDoXphxaUgbmFzdGF2ZW7DrW0gcG9sb8W+a3kgbmEgaG9kbm90dSAwIGFsZWJvIGplaiB2eW1hemFuw61tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnUG9saWEgdWxvxb5lbsOpIHYgaW5kZXhlIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5LCBrdG9yw6kgc2Egb2tyZW0gZnVsbHRleHRvdsOpaG8gdnloxL5hZMOhdmFuaWEgcG91xb7DrXZhasO6IGFqIG5hIGluw6kgw7rEjWVseS4gUHJlIMO6cGxuw7ogZnVua8SNbm9zxaUgc8O6IHbFoWV0a3kgcG9saWEgcG92aW5uw6kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnUHJlIGthxb5kw7ogd2Vib3bDuiBzbHXFvmJ1IChrxL7DusSNKSBtb8W+bm8gZGVmaW5vdmHFpSBwb2xlIHRyaWVkIChob2Rub3RhKSwgbmEga3RvcsOpIGplIGltcG9ydCBvYm1lZHplbsO9LiBQcmUgdsWhZXRreSB2eWJyYW7DqSB0cmllZHkgYWxlYm8gdsWhZXRreSBleGlzdHVqw7pjZSB0cmllZHkgc2EgYnVkw7ogbXVzaWXFpSB2IGtvbmZpZ3Vyw6FjaWkgaW52b2tlcmEgenZvbGnFpSBpZGVudGlmaWthxI1uw6kgYXRyaWLDunR5Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3Ryw6FjaWEgbW9kdWx1IEdlbmVyaWNJbnRlcmZhY2UgcHJlIHZyc3R2dSB2eXZvbMOhdmHEjWEgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHLDoWNpYSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcmUgdnJzdHZ1IHZ5dm9sw6F2YcSNYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHLDoWNpYSBtb2R1bHUgR2VuZXJpY0ludGVyZmFjZSBwcmUgdnJzdHZ1IHZ5dm9sw6F2YcSNYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ1ByZWjEvmFkIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWmFoxZXFiGEgc3RhdnkgbmFzYWRlbmlhIGRvIHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdaYWjFlcWIYSBzdGF2eSBpbmNpZGVudG92IGRvIHZ5aMS+YWTDoXZhbmlhIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIHrDoWthem7DrWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYXhpbcOhbG55IHBvxI1ldCBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllaywga3RvcsOpIHNhIHpvYnJhemlhIHZvIHbDvXNsZWRrdSB0ZWp0byBvcGVyw6FjaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAnTW9kdWwgbmEga29udHJvbHUgc2t1cGlueSB6b2Rwb3ZlZG5laiB6YSB0cmllZHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgbmEga29udHJvbHUgc2t1cGlueSB6b2Rwb3ZlZG5laiB6YSBwb2xvxb5rdSBrb25maWd1csOhY2llLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIG5hIGdlbmVyb3ZhbmllIMWhdGF0aXN0w61rIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnTsOhem92IG1vZHVsdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTW9kdWwgxI3DrXNsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8SNZXQga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWssIGt0b3LDqSBzYSBtYWrDuiB6b2JyYXppxaUgbmEga2HFvmRlaiBzdHLDoW5rZSB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8SNZXQga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWssIGt0b3LDqSBzYSBtYWrDuiB6b2JyYXppxaUgbmEga2HFvmRlaiBzdHLDoW5rZSB2w71zbGVka3UgdnloxL5hZMOhdmFuaWEgdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdHksIGt0b3LDqSBzYSBtYWrDuiB2eWjEvmFkw6F2YcWlLCBrb8S+a28gesOhem5hbW92IGEga3RvcsOpIGF0cmliw7p0eSBzYSBtYWrDuiB6b2JyYXppxaUuIEF0cmliw7p0eSBDb25maWdJdGVtIG11c2lhIGJ5xaUgZXhwbGljaXRuZSB1bG/FvmVuw6kgcHJvc3RyZWRuw61jdHZvbSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmVoxL5hZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUga2F0ZWfDs3JpZSB0cmllZCBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBzdMS6cGNvdsOpIGZpbHRyZSBwcmVoxL5hZHUgbWFsw71jaCBrb25maWd1cmHEjW7DvWNoIHBvbG/Fvmllay4gVXBvem9ybmVuaWU6IG5hc3RhdmVuaWUgaG9kbm90eSAiQWt0w612bmUiIG5hIDAgemFicsOhbmkgYWdlbnRvbSB1cHJhdm92YcWlIG5hc3RhdmVuaWEgdGVqdG8gc2t1cGlueSBpYmEgdiBpY2ggb3NvYm7DvWNoIG5hc3RhdmVuaWFjaCwgYWxlIHNwcsOhdmNvbSBzdMOhbGUgdW1vxb5uw60gdXByYXZvdmHFpSBuYXN0YXZlbmlhIHYgbWVuZSBpbsOpaG8gcG91xb7DrXZhdGXEvmEuIFBvbW9jb3UgcG9sb8W+a3kgXCdQcmVmZXJlbmNlR3JvdXBcJyBtw7TFvmV0ZSBvdmzDoWRhxaUsIHYga3RvcmVqIG9ibGFzdGkgc2EgbWFqw7ogdGlldG8gbmFzdGF2ZW5pYSB6b2JyYXpvdmHFpSB2IHBvdcW+w612YXRlxL5za29tIHJvemhyYW7DrS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgc3RhdnkgbmFzYWRlbmlhIHNhIHZ5ZmFyYmlhIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHN0YXZ5IG5hc2FkZW5pYSB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgcHLDrWtsYWR5IHNrdXDDrW4gb3Byw6F2bmVuw60gdsWhZW9iZWNuw71jaCBhdHJpYsO6dG92IGthdGFsw7NndS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgbW9kdWx1IG7DoXp2dSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyZSBwcmUgbW9kdWwgxI3DrXNsYSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHN0csOhbm9rIChuYSBrdG9yw71jaCBzYSB6b2JyYXp1asO6IGtvbmZpZ3VyYcSNbsOpIHBvbG/Fvmt5KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBtb2R1bCByZcWlYXpjYSB2ZXJ6aWUgcHJlIHRyaWVkeSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHpvYnJhemVuw60gcHJlZmVyZW5jacOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJlIHByZSBtb2R1bCDFoWFibMOzbnkgcmXFpWF6Y2EgdmVyemllIHByZSB0cmllZHkga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiB6b2JyYXplbsOtIHByZWZlcmVuY2nDrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmUgcHJlIHNww7rFocWlYcSNIHZlcnppZSBwcmUgdHJpZWR5IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgem9icmF6ZW7DrSBwcmVmZXJlbmNpw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdWeWtvbsOhIG5ha29uZmlndXJvdmFuw7ogYWtjaXUgcHJlIGthxb5kw7ogdWRhbG9zxaUgKGFrbyBJbnZva2VyKSBwcmUga2HFvmTDuiBuYWtvbmZpZ3Vyb3ZhbsO6IHdlYm92w7ogc2x1xb5idS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1NrdXBpbmEgb3Byw6F2bmVuw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb5pdGllIGFrY2llIHByaXBvamVuaWEga29uZmlndXJhxI1uZWogcG9sb8W+a3kgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSBwb2xvxb5reSBrb25maWd1csOhY2llIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IG5hIHZ5aMS+YWTDoXZhbmllIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHZ5aMS+YWTDoXZhbmlhIHBvbG/FvmllayBrb25maWd1csOhY2llIElUU00gdiByb3pocmFuw60gesOha2F6bsOta2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgem9icmF6ZW5pYSBzdHJvbXUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHp2w6TEjcWhZW5pYSBrb25maWd1cmHEjW5laiBwb2xvxb5reSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSBwcmlkYW5pYSBwb2xvxb5reSBrb25maWd1csOhY2llIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb8W+YWRvdmFuw6kgb3Byw6F2bmVuaWEgbmEgcG91xb7DrXZhbmllIG9icmF6b3ZreSBwb2xvxb5reSBocm9tYWRuZWoga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgw7pwcmF2IHBvbG/Fvmt5IGtvbmZpZ3Vyw6FjaWUgSVRTTSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBwb3XFvsOtdmFuaWUgb2JyYXpvdmt5IHBvbG/Fvmt5IGhpc3TDs3JpZSBrb25maWd1csOhY2llIElUU00gdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG/FvmFkb3ZhbsOpIG9wcsOhdm5lbmlhIG5hIHBvdcW+w612YW5pZSBvYnJhem92a3kgdGxhxI0gcG9sb8W+a3kga29uZmlndXLDoWNpZSBJVFNNIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1Bvxb5hZG92YW7DqSBvcHLDoXZuZW5pYSBuYSBvZHN0csOhbmVuaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnVnloxL5hZMOhdmFuaWUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdBdXRvbWF0aWNrw6kgbmFzdGF2ZW5pZSBzdGF2dSBpbmNpZGVudHUgQ0ksIGtlxI8gamUgdGlrZXQgcHJlcG9qZW7DvSBzIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hc3RhdsOtIHN0YXYgbmFzYWRlbmlhIG5hIG9icmF6b3ZrZSBocm9tYWRuZWogcG9sb8W+a3kga29uZmlndXLDoWNpZSB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ05hc3RhdsOtIHN0YXYgdWRhbG9zdGkgbmEgb2JyYXpvdmtlIGhyb21hZG5laiBwb2xvxb5reSBrb25maWd1csOhY2llIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UsIGt0b3LDvSB1bW/FvsWIdWplIHByZXBvamVuaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kgcyBpbsO9bSBvYmpla3RvbSB2IHpvYnJhemVuw60genbDpMSNxaFlbmlhIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBwcsOtc3R1cCBrIGhpc3TDs3JpaSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IHByZWjEvmFkZSBrb25maWd1cmHEjW7DvWNoIHBvbG/FvmllayB2IHJvemhyYW7DrSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIHByw61zdHVwIGsgaGlzdMOzcmlpIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgamVqIHp2w6TEjcWhZW5vbSB6b2JyYXplbsOtIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBvZHN0csOhbmVuaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBqZWogenbDpMSNxaFlbm9tIHpvYnJhemVuw60gcm96aHJhbmlhIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIHpvYnJhemVuaWUgb2RrYXpvdiBuYSBrb25maWd1cmHEjW7DqSBwb2xvxb5reSBha28gc3Ryb21vdsOpIHpvYnJhemVuaWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgZHVwbGlrb3ZhbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgcHJlaMS+YWRlIGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gb2RrYXogdiBwb251a2UgbmEgZHVwbGlrb3ZhbmllIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgamVqIHp2w6TEjcWhZW5vbSB6b2JyYXplbsOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSDDunByYXZ1IGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgamVqIHp2w6TEjcWhZW5vbSB6b2JyYXplbsOtIHJvemhyYW5pYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSBuw6F2cmF0IGRvIHpvYnJhemVuaWEgenbDpMSNxaFlbmlhIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5IHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdab2JyYXrDrSBvZGtheiB2IHBvbnVrZSBuYSB0bGHEjSBrb25maWd1cmHEjW5laiBwb2xvxb5reSB2IGplaiB6dsOkxI3FoWVub20gem9icmF6ZW7DrSByb3pocmFuaWEgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1pvYnJhesOtIG9ka2F6IHYgcG9udWtlIG5hIHByaWJsw63FvmVuaWUga29uZmlndXJhxI1uZWogcG9sb8W+a3kgdiBwcmVoxL5hZGUga29uZmlndXJhxI1uw71jaCBwb2xvxb5pZWsgdiByb3pocmFuw60gYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnWm9icmF6w60gaGlzdMOzcml1IGtvbmZpZ3VyYcSNbsO9Y2ggcG9sb8W+aWVrICh2IG9wYcSNbm9tIHBvcmFkw60pIHYgcm96aHJhbsOtIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnUHJlZHZvbGVuw6Ega2F0ZWfDs3JpYSwga3RvcsOhIHNhIHpvYnJhesOtLCBhayBuaWUgamUgdnlicmF0w6Egxb5pYWRuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpa8OhdG9yIGtvbmZpZ3VyYcSNbmVqIHBvbG/Fvmt5LCBuYXByLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gUHJlZHZvbGVuw6EgaG9kbm90YSBqZSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0F1dG9tYXRpY2t5IHNww7rFocWlYSBpbnZva8OhdG9yIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1ZlcnppYSBSZcWlYXplYyB2eWphZHJlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ01vZHVsIHJlxaVhemNhIHZlcnppZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICdTcMO6xaHFpWHEjSB2ZXJ6aWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ8SMaSBqZSBtb8W+bsOpIHZ5aG7DusWlIHNhIHZ5a29uYW5pdSBwcsOta2F6dSBDb25maWdJdGVtQUNMIGtvbnRyb2xvdSB6w6F2aXNsb3N0w60gcG9sw60gdWxvxb5lbsO9Y2ggdiBtZWR6aXBhbcOkdGkuIFRvdG8gbcO0xb5lIHpsZXDFoWnFpSDEjWFzeSBuYcSNw610YW5pYSBmb3JtdWzDoXJvdiwgYWxlIG11c8OtIGJ5xaUgdnlwbnV0w6ksIGFrIHNhIG1hasO6IHBvdcW+w612YcWlIEFDTE1vZHVseSBwcmUgSVRTTUNvbmZpZ0l0ZW0tIGEgRm9ybS1SZXR1cm5UeXBlcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJ0t0b3LDqSB2xaFlb2JlY27DqSBpbmZvcm3DoWNpZSBzw7ogdXZlZGVuw6kgdiB6w6FobGF2w60uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAndHJpZWRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2LDoWxuZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ3Bvc3Rwcm9kdWvEjW7DqSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAncHJlZHByb2R1a8SNbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICdwcm9kdWt0w612bmUnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFU6IDE3LDUgcGFsY2EgKDQ0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJVOiAyMSBwYWxjb3YgKDUzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSBwYWxjYSAoNjYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJzE4VTogMzEsNSBwYWxjYSAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5LXBhbGNvdsO9IHN0b2phbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJ30gPSAnMVU6IDEsNzUgcGFsY2EgKDQsNDUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUgcGFsY292ICg4OCw5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMS1pbmNoIFJhY2snfSA9ICcyMS1wYWxjb3bDvSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJ30gPSAnMjJVOiAzOCw1IHBhbGNhICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMtcGFsY292w70gc3RvamFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLjYgaW5jaGVzICg2MDAgbW0pJ30gPSAnMjMsNiBwYWxjYSAoNjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIgcGFsY292ICgxMDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSBwYWxjYSAoMTIwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1IHBhbGNhICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IHBhbGNhICgxMzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMxLjUgaW5jaGVzICg4MDAgbW0pJ30gPSAnMzEsNSBwYWxjYSAoODAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUgcGFsY2EgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IHBhbGNhICg5MDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZVOiA2MyBwYWxjb3YgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBwYWxjYSAoMTAwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknfSA9ICczOVU6IDY4LDI1IHBhbGNhICgxNzMsMzUgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnM1U6IDUsMjUgcGFsY2EgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IHBhbGNhICgxODYsNjkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQzLjMgaW5jaGVzICgxMTAwIG1tKTonfSA9ICc0MywzIHBhbGNhICgxMTAwIG1tKTonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknfSA9ICc0NVU6IDc4LDc1IHBhbGNhICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgcGFsY2EgKDEyMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCBwYWxjb3YgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBwYWxjb3YgKDE3LDc4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKSd9ID0gJzVVOiA4LDc1IHBhbGNhICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBwYWxjYSAoMjYsNjcgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSBwYWxjYSAoMzEsMTIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJzhVOiAxNCBwYWxjb3YgKDM1LDU2IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUgcGFsY2EgKDQwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ8OaxI10b3Zuw61jdHZvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnUHJpZGXEvm92YW5pZSBhZHJpZXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1NwcsOhdmNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ0FuYWzDs2dvdsO9IHRlbGVmw7NuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVHlwIHNwb3RyZWJpxI1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnS2FwYWNpdGEgYmF0w6lyaWUgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdUeXAgYmF0w6lyaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdCdWRvdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ1JvemhyYW5pZSB6YmVybmljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJ1RyaWVkYSBDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ0thcGFjaXRhIChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdLYXBhY2l0YSBuYSBncmFmaWNrw7oga2FydHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfEjMOtc2xvIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnxIzDrXRhxI1rYSBrYXJpZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVHlwIGthcnR5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICdDZXJ0aWZpa8OhdHkga2xpZW50b3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnS2xpZW50c2t5IHNvZnR2w6lyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJ0thdGVnw7NyaWEga2xpZW50b3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnSG9kaW55JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICdSw71jaGxvc8WlIGhvZMOtbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWvDoXR5IG5hIHBvZHBpc292YW5pZSBrw7NkdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnS29uZmVyZW7EjW7DvSB0ZWxlZsOzbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ0RvaG9kYSBvIHBvcmFkZW5zdHZlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICdLb250YWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICdLb250YWt0IG5hIGRpc3RyaWLDunRvcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdTcHLDoXZhIGtvbnRham5lcm92JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnWm1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdUeXAgem1sdXZ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnWm1sdXZuw6kgb2Jkb2JpZSBvZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICdPYmRvYmllIHBsYXRub3N0aSB6bWx1dnkgZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQmV6ZHLDtHRvdsO9IHRlbGVmw7NuICh0ZWxlZsOzbiBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdOw6FrbGFkb3bDoSBqZWRub3RrYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ1BvxI1ldCBsaWNlbmNpw60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ0TDoXR1bSB2eXR2b3JlbmlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aXZlIENvbW1vbnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tIFJhY2snfSA9ICdWbGFzdG7DvSBzdG9qYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1AgUmV6ZXJ2b3ZhbsOpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ROUy1TZXJ2ZXInfSA9ICdTZXJ2ZXIgRE5TJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdEw6F0dW0gZmFrdMO6cnknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJ0TDoXR1bSBvYmplZG7DoXZreSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnRMOhdHVtIHrDoXJ1a3knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRMOhdHVtIHZ5ZGFuaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ1N0b2xuw70gcG/EjcOtdGHEjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQ2VydGlmaWvDoXR5IG5hIHBvZHBpc292YW5pZSBkb2t1bWVudG92JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICdFLW1haWxvdsOpIGNlcnRpZmlrw6F0eSAoY2VydGlmaWvDoXR5IFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnUHJhY292bsOhIHptbHV2YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ0tvbmNvdsOhIElQIGFkcmVzYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ1Vrb27EjWVuaWUgcG9kcG9yeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ0TDoXR1bSBza29uxI1lbmlhIHBsYXRub3N0aSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnRXh0ZXJuw70gcGV2bsO9IGRpc2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdGaXJld2FsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ0Zpcm12w6lyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnU2tsYWRvdmFuaWUgZW5lcmdpZSBuYSB6b3RydmHEjW7DrWt1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnRmFrdG9yIGZvcm15JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2luZ292w6Egem1sdXZhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnRnJlZXdhcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnVsWhZW9iZWNuw6kgaW5mb3Jtw6FjaWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmaWNrw6kga2FydHknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpY2vDoSBrYXJ0YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ0hhcmR2w6lyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAnTW9kZWwgaGFyZHbDqXJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ0htb3Rub3PFpSBoYXJkdsOpcnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJ07DoWhsYXZuw6Egc8O6cHJhdmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2tvbCBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdTcHLDoXZhIGlkZW50w610IGEgcHLDrXN0dXB1IChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICdJbnZlbnTDoXJuZSDEjcOtc2xvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnTsOha2xhZHkgbmEgaW52ZXJzdHLDoWNpdSc7CiAgICAkU2VsZi0+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+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2Vib3bDoSBrYW1lcmEnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydab29tIHZpZXcnfSA9ICdQb3ZlxI1hbiBwb2dsZWQnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnS29uZmlndXJhY2lqYSBFbGVtZW50aSBuYSBzdHJhbic7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnUG9kYXRrb3YgbyBlbGVtZW50dSBrb25maWd1cmFjaWplIG5pIGJpbG8gbW9nb8SNZSBuYWp0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdJemJlcml0ZSB0YSBlbGVtZW50IGtvbmZpZ3VyYWNpamUnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdaYWduYXRpIGlza2FuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnSXNrYW5qZSB0dWRpIHYgcHJlasWhbmppaCByYXpsacSNaWNhaD8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdEcmV2ZXNuaSBwb2dsZWQgemEgQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+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+eydWZXJzaW9uIFN0cmluZyd9ID0gJ1ZlcnppamEgU3RyaW5nJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJ05hcGFrYSBwcmkgc2luaHJvbml6YWNpamkgZGVmaW5pY2lqLiBQcmV2ZXJpdGUgZG5ldm5pay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdJbWF0ZSBkZWZpbmljaWplIElUU01Db25maWdJdGVtLCBraSBuaXNvIHNpbmhyb25pemlyYW5lLiBVbWXFocSNYWp0ZSBzcHJlbWVtYmUgZGluYW1pxI1uaWggcG9saiBJVFNNQ29uZmlnSXRlbS4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ1ByZXRla2xhIHZlbGphdm5vc3QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICdWemRyxb5ldmFuamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICdQaWxvdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnTmHEjXJ0b3Zhbm8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnUG9wcmF2aWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdVcG9rb2plbmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAnUHJlZ2xlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdGlyYW5qZS9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnUHJlZ2xlZCBpbiBwb3RyZGl0ZXYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnVXZveiByYXpyZWRvdi92bG9nIGluIHogbmppbWkgcG92ZXphbmloIHBvbGonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICdQcmkgdXZvenUgcmF6cmVkYSBqZSBwcmnFoWxvIGRvIG5hcGFrZS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIFNrcml0byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gcHJpa2F6YW5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdPbW9nb8SNYSByYXrFoWlyamVuZSBwb2dvamUgaXNrYW5qYSBwcmkgaXNrYW5qdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4gUyB0byBmdW5rY2lqbyBsYWhrbyBpxaHEjWV0ZSBucHIuIGltZSBlbGVtZW50YSBrb25maWd1cmFjaWplIHMgdGFrxaFuaW1pIHBvZ29qaSwga290IHNvICIoKmtleTEqJiYqa2V5MiopIiBhbGkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdPbW9nb8SNYSByYXrFoWlyamVuZSBwb2dvamUgaXNrYW5qYSB2IGlza2FuanUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSB6YSBzdHJhbmtlLiBTIHRvIGZ1bmtjaWpvIGxhaGtvIGnFocSNZXRlIG5wci4gaW1lIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgcyB0YWvFoW5pbWkgcG9nb2ppLCBrb3Qgc28gIigqa2V5MSomJiprZXkyKikiIGFsaSAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ0RvZGVsamVuaSBLSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnS0ksIGRvZGVsamVuaSBwb2RqZXRqdSBzdHJhbmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnQ0ksIGRvZGVsamVuaSB1cG9yYWJuaWt1IHN0cmFua2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ05hc3Rhdml0dmUgQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnUHJldmVyamFuamUgZWRpbnN0dmVuZWdhIGltZW5hIHNhbW8gem5vdHJhaiBpc3RlZ2EgcmF6cmVkYSBDb25maWdJdGVtIChcJ2NsYXNzXCcpIGFsaSBnbG9iYWxubyAoXCdnbG9iYWxcJyksIGthciBwb21lbmksIGRhIHNlIHByaSBpc2thbmp1IHBvZHZvaml0ZXYgdXBvxaF0ZXZhIHZzYWsgb2JzdG9qZcSNaSBDb25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG5hbWluZyBzY2hlbWUuJ30gPSAnSXpiZXJpdGUgbW9kdWwgemEgdXZlbGphdml0ZXYgc2hlbWUgcG9pbWVub3ZhbmphLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnSXpiZXJpdGUgbW9kdWwgemEgdXZlbGphdml0ZXYgxaF0ZXZpbHNrZSBzaGVtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnSXpiZXJpdGUgbW9kdWwgemEgdXZlbGphdml0ZXYgc2hlbWUgdmVyacW+bmloIG5pem92IHJhemxpxI1pYy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICdJemJlcml0ZSBhdHJpYnV0ZSB6YSBzcHJvxb5pdGV2IHVzdHZhcmphbmphIG5vdmUgcmF6bGnEjWljZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnSXpiZXJpdGUga2F0ZWdvcmlqZSwga2kgamloIMW+ZWxpdGUgZG9kZWxpdGkgdGVtdSByYXpyZWR1IGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ0ZpbHRyaSBlbGVtZW50YSBrb25maWd1cmFjaWplIHN0b2xwY2EgemEgcHJlZ2xlZCBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnU3RvbHBjaSwga2kgamloIGplIG1vZ2/EjWUgZmlsdHJpcmF0aSB2IHByZWdsZWR1IGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLiBPcG9tYmE6IERvdm9samVuaSBzbyBzYW1vIGF0cmlidXRpIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgaW4gZGluYW1pxI1uYSBwb2xqYSAoRHluYW1pY0ZpZWxkX05hbWVYKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnRWxlbWVudGkga29uZmlndXJhY2lqZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnRG9kYWphbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnVXJlamFuamUgZWxlbWVudGEga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNb2R1bCB6YSBkb2dvZGtlIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUsIGtpIG9tb2dvxI1hIGJlbGXFvmVuamUgdiB6Z29kb3Zpbm8gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ01vZHVsIGRvZ29ka292IHphIGVsZW1lbnRlIGtvbmZpZ3VyYWNpamUsIGtpIHBvc29kb2JpIGVsZW1lbnRlIGtvbmZpZ3VyYWNpamUgbmEgbmppaG92byB0cmVudXRubyBkZWZpbmljaWpvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ1pnb2RvdmluYSBlbGVtZW50b3Yga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnVGlza2FuamUgZWxlbWVudGEga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICdLb25maWd1cmFjaWphIHBvdmXEjWF2ZSBlbGVtZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBUcmVlIFZpZXcnfSA9ICdEcmV2ZXNuaSBwcmlrYXogZWxlbWVudG92IGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBWZXJzaW9uJ30gPSAnQ29uZmlnSXRlbSBSYXpsacSNaWNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYWNpanNraSBlbGVtZW50aSBuYXNsZWRuamloIHJhenJlZG92IG5lIGJvZG8gc2hyYW5qZW5pIHYgc3RyZcW+bmlrdSBFbGFzdGljc2VhcmNoLiDEjGUgxb5lbGl0ZSB0byB1cG9yYWJpdGkgemEgb2JzdG9qZcSNZSBDSSwgamUgdHJlYmEgcG8gc3ByZW1lbWJpIHRlIG1vxb5ub3N0aSB6YWduYXRpIG1pZ3JhY2lqbyBDSSBwcmVrIGtvbnpvbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0tvbmZpZ3VyYWNpanNraSBlbGVtZW50aSB6IG5hc2xlZG5qaW1pIHN0YW5qaSBuYW1lc3RpdHZlIG5lIGJvZG8gc2hyYW5qZW5pIHYgc3RyZcW+bmlrdSBFbGFzdGljc2VhcmNoLiDEjGUgxb5lbGl0ZSB0byB1cG9yYWJpdGkgemEgb2JzdG9qZcSNZSBDSSwgamUgdHJlYmEgcG8gc3ByZW1lbWJpIHRlIG1vxb5ub3N0aSB6YWduYXRpIG1pZ3JhY2lqbyBDSSBwcmVrIGtvbnpvbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ09tZWppdGV2IHBvc3RhdmtlIGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3VyYWNpamEgT21laml0ZXYgZWxlbWVudG92IG5hIHN0cmFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQgRGF0YWJhc2UuJ30gPSAnUG9kYXRrb3ZuYSB6Ymlya2EgemEgdXByYXZsamFuamUga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ1Bvc3RhdmthIHphIGtvbmZpZ3VyYWNpam8gbW9kdWxhIHYgcmF6c3V0ZW0gc3Rhbmp1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdFbGVtZW50IGtvbmZpZ3VyYWNpamUgemEgaXNrYW5qZSB6YWxlZG5lZ2EgdXNtZXJqZXZhbG5pa2Egdm1lc25pa2EgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdVc3R2YXJqYW5qZSBpbiB1cHJhdmxqYW5qZSBkZWZpbmljaWogemEgZWxlbWVudGUga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICdVc3R2YXJpIHZvem92bmljZSB6YSBlbGVtZW50ZSBDb25maWdJdGVtcyB2IGRvbG/EjWVuaWggxI1hc292bmloIHRvxI1rYWguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ1N0cmFua2Ugc2kgbGFoa28gb2dsZWRham8gcHJldGVrbGUgcmF6bGnEjWljZSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnU3RyYW5rZSBsYWhrbyByb8SNbm8gcHJla2xhcGxqYWpvIG1lZCBwcmV0ZWtsaW1pIHJhemxpxI1pY2FtaSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdQcml2emV0ZSBwb2RhdGtlLCBraSBzZSB1cG9yYWJpam8gdiBhdHJpYnV0dSB6YSB6YXNsb24gemEgaXNrYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZS4gUHJpbWVyOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9bGV0bztJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ1ByaXZ6ZXRlIHBvZGF0a2UsIGtpIHNlIHVwb3JhYmlqbyB2IGF0cmlidXR1IHphIHphc2xvbiB6YSBpc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLiBQcmltZXI6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdPcHJlZGVsaXRlIGRlamFuamEsIHByaSBrYXRlcmloIGplIHYgZ3JhZG5pa3UgcG92ZXphbmloIHByZWRtZXRvdiBuYSB2b2xqbyBndW1iIHphIG5hc3Rhdml0dmUgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gVXBvxaF0ZXZhanRlLCBkYSBtb3Jham8gdGUgYWtjaWplIHJlZ2lzdHJpcmF0aSBuYXNsZWRuamUgZGF0b3Rla2UgSlMgaW4gQ1NTOiBWIHRlbSBwcmltZXJ1IGplIHRyZWJhIHphIHVwb3JhYm8gbmFzdGF2aXRldiBpbiBmdW5rY2lqIHphIHBvdmV6b3ZhbmplIG9iamVrdG92IGluIG5qaWhvdmloIGZ1bmtjaWogdiBzaXN0ZW11IG5hc3Rhdml0aSBuYXNsZWRuamUgZGF0b3Rla2U6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGluIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJ09wcmVkZWxpdGV2IHNoZW1lIFRlbXBsYXRlOjpUb29sa2l0IHphIG5pemEgcmF6bGnEjWljLiBVcG9yYWJsamEgc2Ugc2FtbywgxI1lIGplIG1vZHVsIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBuYXN0YXZsamVuIG5hIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ09wcmVkZWxpdGUgbml6IHBvZ29qZXYsIHBvZCBrYXRlcmltaSBsYWhrbyBzdHJhbmthIHZpZGkgZWxlbWVudCBrb25maWd1cmFjaWplLiBQb2dvamkgc28gbGFoa28gcG8gxb5lbGppIG9tZWplbmkgbmEgZG9sb8SNZW5lIHNrdXBpbmUgc3RyYW5rLiBJbWUgamUgZWRpbmkgb2J2ZXpuaSBhdHJpYnV0LiDEjGUgbmUgbmF2ZWRldGUgZHJ1Z2loIG1vxb5ub3N0aSwgYm9kbyB2IHRlaiBrYXRlZ29yaWppIHZpZG5pIHZzaSBlbGVtZW50aSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgWmFodGV2YW5hIGRvdm9samVuamEgemEgYnJpc2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIHByaWRvYml0ZXYgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgSVRTTSB6IHVwb3JhYm8gc3Bsb8WhbmVnYSB2bWVzbmlrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIFphaHRldmFuYSBkb3ZvbGplbmphIHphIG5hc3RhdmxqYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSBJVFNNIHogdXBvcmFibyBzcGxvxaFuZWdhIHZtZXNuaWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSBtb2R1bCB6YSBwcmVnbGVkLCBraSBwcmlrYXp1amUgbWFqaGVuIHBvZ2xlZCBzZXpuYW1hIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEb2xvxI1hLCBhbGkgbW9yYWpvIGJpdGkgdiBwb3ZlemF2YWggdm96bGnFocSNIHByaWthemFuZSBvem5ha2UgdnJzdGUgcG92ZXphdmUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICdaYSB2c2FrIHJhenJlZCBDb25maWdJdGVtIHBvc2ViZWogZG9sb8SNYSByZWd1bGFybmUgaXpyYXplIHphIHByZXZlcmphbmplIGltZW5hIENvbmZpZ0l0ZW0gaW4gcHJpa2F6IHVzdHJlem5paCBzcG9yb8SNaWwgbyBuYXBha2FoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHJhenBvbG/FvmxqaXZlIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSBhdHJpYnV0IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgemEgcmF6dnLFocSNYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHJlenVsdGF0dSBpc2thbmphIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSBhdHJpYnV0IGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgemEgcmF6dnLFocSNYW5qZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHJlenVsdGF0dSBpc2thbmphIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdm1lc25pa3UgemEgc3RyYW5rZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEb2xvxI1hIHByaXZ6ZXRpIGF0cmlidXQgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSByYXp2csWhxI1hbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiByZXp1bHRhdCBpc2thbmphIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdGUgb3BlcmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSB2cnN0bmkgcmVkIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuIE5hdnpnb3I6IG5hanN0YXJlasWhaSBuYSB2cmh1LiBOYXZ6ZG9sOiBuYWpub3ZlasWhaSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSB2cnN0bmkgcmVkIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSB6YSBzdHJhbmtlLiBOYXZ6Z29yOiBuYWpzdGFyZWrFoWkgbmEgdnJodS4gTmF2emRvbDogbmFqbm92ZWrFoWkgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0aSB2cnN0bmkgcmVkIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcmV6dWx0YXR1IGlza2FuamEgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdGUgb3BlcmFjaWplLiBOYXZ6Z29yOiBuYWpzdGFyZWrFoWkgbmEgdnJodS4gTmF2emRvbDogbmFqbm92ZWrFoWkgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ0RvbG/EjWEgcHJpdnpldGUgcHJpa2F6YW5lIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEb2xvxI1hIHByaXZ6ZXRvIGdsb2Jpbm8gb2Rub3Nvdiwga2kgc2UgcHJpa2HFvmVqby4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0byBwcmlrYXphbiBhdHJpYnV0IGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSB6YXNsb24gaXNrYW5qYSBlbGVtZW50YSBrb25maWd1cmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRG9sb8SNYSBwcml2emV0byBwcmlrYXphbiBhdHJpYnV0IGlza2FuamEgZWxlbWVudGEga29uZmlndXJhY2lqZSB6YSB6YXNsb24gaXNrYW5qYSBlbGVtZW50YSBrb25maWd1cmFjaWplLiBQcmltZXI6ICJLZXkiIG1vcmEgaW1ldGkgaW1lIGRpbmFtacSNbmVnYSBwb2xqYSwgdiB0ZW0gcHJpbWVydSAiWCIsICJDb250ZW50IiBtb3JhIGltZXRpIHZyZWRub3N0IGRpbmFtacSNbmVnYSBwb2xqYSwgb2R2aXNubyBvZCB2cnN0ZSBkaW5hbWnEjW5lZ2EgcG9samEsIFRleHQ6ICJhIHRleHQiLCBEcm9wZG93bjogIjEiLCBEYXRlL1RpbWU6ICJTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGluIGFsaSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD10ZWRlbjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9UHJlZDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHByaXZ6ZXRpIHBvZG9iamVrdCByYXpyZWRhIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGlzYWJsZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHJhenBvbG/FvmxqaXZlIHN0b2xwY2UgQ0kgdiBwcmVnbGVkdSBlbGVtZW50YSBrb25maWd1cmFjaWplIGdsZWRlIG5hIHJhenJlZCBDSS4gVnNhayB2bm9zIG1vcmEgYml0aSBzZXN0YXZsamVuIGl6IGltZW5hIHJhenJlZGEgaW4gcG9samEgcmF6cG9sb8W+bGppdmloIHBvbGogemEgdXN0cmV6bmkgcmF6cmVkLiBWbm9zaSBkaW5hbWnEjW5paCBwb2xqIG1vcmFqbyB1cG/FoXRldmF0aSBzaGVtbyBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICdEb2xvxI1hIHZpxaFpbm8ga29tcG9uZW50ZSB1cmVqZXZhbG5pa2EgYm9nYXRlZ2EgYmVzZWRpbGEgemEgdGEgemFzbG9uLiBWbmVzaXRlIMWhdGV2aWxvIChwaWtzbGkpIGFsaSBvZHN0b3RubyB2cmVkbm9zdCAocmVsYXRpdm5vKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnRG9sb8SNYSDFoXRldmlsbyB2cnN0aWMgemEgdXJlamV2YWxuaWsgZGVmaW5pY2lqIENJIHYgdXByYXZpdGVsanNrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ09wcmVkZWxqdWplIHZyc3RuaSByZWQgc3RhbmogaW5jaWRlbnRhIG9kIHZpc29rZWdhIChucHIuIGNyaWNpdGFsbm8pIGRvIG5pemtlZ2EgKG5wci4gZnVua2Npb25hbG5vKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSB1c3RyZXpuYSBzdGFuamEgdXZhamFuamEsIHYga2F0ZXJpaCBsYWhrbyBwb3ZlemFuZSB2b3pvdm5pY2UgdnBsaXZham8gbmEgc3RhbmplIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RvbG/EjWEgb21laml0ZXYgaXNrYW5qYSB6YSB6YXNsb24gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEb2xvxI1hIG9tZWppdGV2IGlza2FuamEgemEgemFzbG9uIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRG9sb8SNYSBvbWVqaXRldiBpc2thbmphIHphIHphc2xvbiBDdXN0b21lcklUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RvbG/EjWEgb21laml0ZXYgaXNrYW5qYSB6YSB6YXNsb24gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnT3ByZWRlbGp1amUgcHJpa2F6YW5lIHN0b2xwY2UgS0kgdiBrb21wbGVrc25lbSBwb2dsZWR1IHByZWdsZWRuaWNlIHBvdmV6YXYgemEgdnNlIHJhenJlZGUgS0kuIMSMZSB2bm9zYSBuaSwgc28gcHJpa2F6YW5pIHByaXZ6ZXRpIHN0b2xwY2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdPcHJlZGVsanVqZSBwcmlrYXphbmUgc3RvbHBjZSBLSSB2IGtvbXBsZWtzbmVtIHBvZ2xlZHUgcHJlZ2xlZG5pY2UgcG92ZXphdiwgb2R2aXNubyBvZCByYXpyZWRhIEtJLiBWc2FrIHZub3MgbW9yYSBiaXRpIG9wcmVtbGplbiB6IGltZW5vbSByYXpyZWRhIGluIGR2b2puaW1pIGR2b3BpxI1qaSAobnByLiBDb21wdXRlcjo6KS4gT2JzdGFqYSBuZWthaiBhdHJpYnV0b3YgQ0ktQXR0cmlidXRlcywga2kgc28gc2t1cG5pIHZzZW0gQ0kgKHByaW1lciB6YSByYXpyZWQgUmHEjXVuYWxuaWs6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFphIHByaWtheiBwb3NhbWV6bmloIENJLWF0cmlidXRvdiwga290IHNvIG9wcmVkZWxqZW5pIHYgZGVmaW5pY2lqaSBDSSwgamUgdHJlYmEgdXBvcmFiaXRpIG5hc2xlZG5qbyBzaGVtbyAocHJpbWVyIHphIHJhenJlZCBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiDEjGUgemEgcmF6cmVkIENJIG5pIHZub3NhLCBzbyBwcmlrYXphbmkgcHJpdnpldGkgc3RvbHBjaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdPcHJlZGVsanVqZSwga2F0ZXJpIGVsZW1lbnRpIHNvIG5hIHZvbGpvIHphICJBY3Rpb24iIG5hIHRyZXRqaSByYXZuaSBzdHJ1a3R1cmUgSVRTTSBDb25maWcgSXRlbSBBQ0wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnRG9sb8SNYSwga2F0ZXJpIGVsZW1lbnRpIHNvIG5hIHZvbGpvIG5hIHBydmkgcmF2bmkgc3RydWt0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEb2xvxI1hLCBrYXRlcmkgZWxlbWVudGkgc28gbmEgdm9sam8gbmEgZHJ1Z2kgcmF2bmkgc3RydWt0dXJlIElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEb2xvxI1hLCBrYXRlcmEgdnJzdGEgcG92ZXphdmUgKHBvaW1lbm92YW5hIHogdmlkaWthIHZvem92bmljZSkgbGFoa28gdnBsaXZhIG5hIHN0YW5qZSBwb3ZlemFuZWdhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgdGlja2V0IGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIGxpbmtlZCBDSS4nfSA9CiAgICAgICAgJ0RvbG/EjWEsIGthdGVyYSB2cnN0YSB2b3pvdm5pY2UgbGFoa28gdnBsaXZhIG5hIHN0YW5qZSBwb3ZlemFuZWdhIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ1Bvc29kb2JpdGV2IGRlZmluaWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0JyaXNhbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnRGVwbFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdCYXJ2YSBzdGFuamEgbmFtZXN0aXR2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50U3RhdGUnfSA9ICdEZXBsb3ltZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrYXRuaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ01vZHVsIHphIGRvZ29ka2UgZGluYW1pxI1uaWggcG9saiwga2kgb3puYcSNaSBkZWZpbmljaWplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIGtvdCBuZXNpbmhyb25pemlyYW5lLCDEjWUgc2Ugc3ByZW1lbmlqbyBkaW5hbWnEjW5hIHBvbGphLCBraSBqaWggdnNlYnVqZWpvLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1uYSBwb2xqYSwgcHJpa2F6YW5hIG5hIHphc2xvbnUgZG9kYXRuZWdhIHBvbGphIElUU00gdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNbmEgcG9samEsIHByaWthemFuYSBuYSB6YXNsb251IHphIHByZWdsZWQgZWxlbWVudGEga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IHphIHN0cmFua2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNbmEgcG9samEsIHByaWthemFuYSBuYSB6YXNsb251IHphIGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ09tb2dvxI1hIGZ1bmtjaWpvIG1ub8W+acSNbmVnYSBkZWxvdmFuamEgemEga29uZmlndXJhY2lqc2tlIGVsZW1lbnRlIHphIHNwcmVkbmppIGRlbCBhZ2VudGEsIGtpIGRlbHVqZSBuYSB2ZcSNIGtvdCBlbmVtIGtvbmZpZ3VyYWNpanNrZW0gZWxlbWVudHUgbmFlbmtyYXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdPbW9nb8SNaSBmdW5rY2lqbyBtbm/FvmnEjW5lZ2EgZGVsb3ZhbmphIGtvbmZpZ3VyYWNpanNraWggZWxlbWVudG92IHNhbW8gemEgbmF2ZWRlbmUgc2t1cGluZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnT21vZ2/EjWkvb2RrbG9waSBmdW5rY2lvbmFsbm9zdCBwcmV2ZXJqYW5qYSBlZGluc3R2ZW5paCBpbWVuIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIElUU00uIFByZWRlbiBvbW9nb8SNaXRlIHRvIG1vxb5ub3N0LCBtb3JhdGUgcHJldmVyaXRpIHN2b2ogc2lzdGVtIHphIMW+ZSBvYnN0b2plxI1lIGVsZW1lbnRlIGtvbmZpZ3VyYWNpamUgcyBwb2R2b2plbmltaSBpbWVuaS4gVG8gbGFoa28gc3Rvcml0ZSBzIGtvbnpvbG5pbSB1a2F6b20gQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCBkb2dvZGtvdiB6YSBuYXN0YXZpdGV2IHN0YW5qYSBrb25maWd1cmFjaWplIG5hIHBvdmV6YXZpIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ1BvbGphIGluZGVrc2EgZWxlbWVudGEga29uZmlndXJhY2lqZSwga2kgc2UgdXBvcmFibGpham8gemEgaXNrYW5qZSBwbyBjZWxvdG5lbSBiZXNlZGlsdS4gUG9samEgc28gcHJhdiB0YWtvIHNocmFuamVuYSwgdmVuZGFyIG5pc28gb2J2ZXpuYSB6YSBjZWxvdG5vIGZ1bmtjaW9uYWxub3N0LiBWa2xqdcSNZXZhbmplIHByaWxvZyBsYWhrbyBvbmVtb2dvxI1pdGUgdGFrbywgZGEgdm5vcyBuYXN0YXZpdGUgbmEgMCBhbGkgZ2EgaXpicmnFoWV0ZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJ1BvbGphLCBzaHJhbmplbmEgdiBpbmRla3N1IGVsZW1lbnRvdiBrb25maWd1cmFjaWplLCBraSBzZSBwb2xlZyBpc2thbmphIHBvIGNlbG90bmVtIGJlc2VkaWx1IHVwb3JhYmxqYWpvIHR1ZGkgemEgZHJ1Z2Ugc3R2YXJpLiBaYSBwb3BvbG5vIGZ1bmtjaW9uYWxub3N0IHNvIHZzYSBwb2xqYSBvYnZlem5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ1phIHZzYWtvIHNwbGV0bm8gc3Rvcml0ZXYgKGtsanXEjSkgbGFoa28gZG9sb8SNaXRlIG5peiByYXpyZWRvdiAodnJlZG5vc3QpLCB6YSBrYXRlcmUgamUgdXZveiBvbWVqZW4uIFphIHZzZSBpemJyYW5lIHJhenJlZGUgYWxpIHZzZSBvYnN0b2plxI1lIHJhenJlZGUgYm8gdHJlYmEgdiBrb25maWd1cmFjaWppIGludm9rZXJqYSBpemJyYXRpIGlkZW50aWZpa2FjaWpza2UgYXRyaWJ1dGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSBtb2R1bGEgR2VuZXJpY0ludGVyZmFjZSB6YSBzbG9qIGludm9rYXRvcmphIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyYWNpamEgbW9kdWxhIEdlbmVyaWNJbnRlcmZhY2UgemEgc2xvaiBpbnZva2F0b3JqYSBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSBtb2R1bGEgR2VuZXJpY0ludGVyZmFjZSB6YSBzbG9qIGludm9rYXRvcmphIENvbmZpZ0l0ZW1GZXRjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnUHJlZ2xlZCBlbGVtZW50YSBrb25maWd1cmFjaWplIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ0luY2lTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSW5jaWRlbnRTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmtsanXEjXVqZSBzdGFuamEgdXZhamFuamEgdiBpc2thbmplIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgdXBvcmFibmnFoWtlbSB2bWVzbmlrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmtsanXEjXVqZSBzdGFuamEgaW5jaWRlbnRvdiB2IGlza2FuamUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiB1cG9yYWJuacWha2VtIHZtZXNuaWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOYWp2ZcSNamUgxaF0ZXZpbG8gZWxlbWVudG92IGtvbmZpZ3VyYWNpamUsIGtpIHNlIHByaWthxb5lam8gdiByZXp1bHRhdHUgdGUgb3BlcmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIHphIHByZXZlcmphbmplIHNrdXBpbmUsIG9kZ292b3JuZSB6YSByYXpyZWQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnTW9kdWwgemEgcHJldmVyamFuamUgc2t1cGluZSwgb2Rnb3Zvcm5lIHphIGVsZW1lbnQga29uZmlndXJhY2lqZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB6YSB1c3R2YXJqYW5qZSBzdGF0aXN0aWtlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIElUU00uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnSW1lIE1vZHVsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICdNb2R1bCDFoXRldmlsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfFoHRldmlsbyBlbGVtZW50b3Yga29uZmlndXJhY2lqZSwga2kgc2UgcHJpa2HFvmVqbyBuYSB2c2FraSBzdHJhbmkgcmV6dWx0YXRhIGlza2FuamEgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ8WgdGV2aWxvIGVsZW1lbnRvdiBrb25maWd1cmFjaWplLCBraSBzZSBwcmlrYcW+ZWpvIG5hIHZzYWtpIHN0cmFuaSByZXp1bHRhdGEgaXNrYW5qYSB2IHVwb3JhYm5pxaFrZW0gdm1lc25pa3UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ1ByZWRtZXRpIHphIGlza2FuamUsIGtvbGlrbyB2bm9zb3YgaW4ga2F0ZXJpIGF0cmlidXRpIG5haiBzZSBwcmlrYcW+ZWpvLiBBdHJpYnV0aSBDb25maWdJdGVtIG1vcmFqbyBiaXRpIGl6cmVjbm8gc2hyYW5qZW5pIHByZWsgc3Rvcml0dmUgRWxhc3RpY3NlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnUHJlZ2xlZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBrYXRlZ29yaWplIHphIHJhenJlZGUgZWxlbWVudG92IGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IG5hc3Rhdml0ZXYgdiB2bWVzbmlrdSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIGZpbHRyZSBzdG9scGNldiB2IHByZWdsZWR1IG1hamhuaWggZWxlbWVudG92IGtvbmZpZ3VyYWNpamUuIFVwb8WhdGV2YWp0ZTogeiBuYXN0YXZpdHZpam8gIkFrdGl2bm8iIG5hIDAgYm8gYWdlbnRvbSBwcmVwcmXEjWVubyBsZSB1cmVqYW5qZSBuYXN0YXZpdGV2IHRlIHNrdXBpbmUgdiBuamlob3ZpaCBvc2VibmloIG5hc3Rhdml0dmFoLCB2ZW5kYXIgYm8gYWRtaW5pc3RyYXRvcmplbSDFoWUgdmVkbm8gb21vZ2/EjWVubyB1cmVqYW5qZSBuYXN0YXZpdGV2IHYgaW1lbnUgZHJ1Z2VnYSB1cG9yYWJuaWthLiBTIGZ1bmtjaWpvIFwnUHJlZmVyZW5jZUdyb3VwXCcgbGFoa28gbmFkemlyYXRlLCB2IGthdGVyZW0gb2Jtb8SNanUgbmFqIGJvZG8gdGUgbmFzdGF2aXR2ZSBwcmlrYXphbmUgdiB1cG9yYWJuacWha2VtIHZtZXNuaWt1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvdyBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciBjb21wYW55IHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgY29tcGFueS4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgY29tcGFueSBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGFzaGJvYXJkIGJhY2tlbmQgb2YgdGhlIGN1c3RvbWVyIGNvbXBhbnkgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2hvd24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgcGVyIGNvbmZpZyBpdGVtIGNsYXNzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIHVzZXIgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciB1c2VyLiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciB1c2VyIGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBjb2xvciBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIGJhcnZvIHN0YW5qYSB1dmFqYW5qYSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhbmphIHV2YWphbmphIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgcHJpbWVyIHNrdXBpbiBkb3ZvbGplbmogc3Bsb8WhbmloIGF0cmlidXRvdiBrYXRhbG9nYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgbW9kdWwgaW1lbmEgemEgcmF6cmVkZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgbW9kdWwgxaF0ZXZpbGEgemEgcmF6cmVkZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0cmFuaSAobmEga2F0ZXJpaCBzbyBwcmlrYXphbmkgZWxlbWVudGkga29uZmlndXJhY2lqZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBtb2R1bCB2ZXJ6aWplIG5pemEgemEgcmF6cmVkZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgbW9kdWwgcHJlZGxvZ2Ugbml6YSByYXpsacSNaWMgemEgcmF6cmVkZSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHBvZ2xlZHUgbmFzdGF2aXRldiB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHNwcm/FvmlsZWMgcmF6bGnEjWljZSB6YSByYXpyZWRlIGVsZW1lbnRvdiBrb25maWd1cmFjaWplIHYgcG9nbGVkdSBuYXN0YXZpdGV2IHZtZXNuaWthIGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdJenZlZGUga29uZmlndXJpcmFubyBkZWphbmplIHphIHZzYWsgZG9nb2RlayAoa290IEludm9rZXIpIHphIHZzYWtvIGtvbmZpZ3VyaXJhbm8gc3BsZXRubyBzdG9yaXRldi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ1NrdXBpbmEgZG92b2xqZW5qJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+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+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHBvdmV6YXZvIHYgbWVuaWp1IHphIHRpc2thbmplIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwb2dsZWR1IHBvdmXEjWF2ZSB2bWVzbmlrYSBhZ2VudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUHJpa2HFvmUgcG92ZXphdm8gdiBtZW5panUgemEgcG92ZcSNYXZvIGVsZW1lbnRhIGtvbmZpZ3VyYWNpamUgdiBwcmVnbGVkdSBlbGVtZW50b3Yga29uZmlndXJhY2lqZSB2IHZtZXNuaWt1IGFnZW50YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthxb5lIHpnb2RvdmlubyBlbGVtZW50b3Yga29uZmlndXJhY2lqZSAodiBvYnJhdG5lbSB2cnN0bmVtIHJlZHUpIHYgdm1lc25pa3UgYWdlbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICdQcml2emV0YSBrYXRlZ29yaWphLCBraSBzZSBwcmlrYcW+ZSwgxI1lIG5pIGl6YnJhbmEgbm9iZW5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvciBlbGVtZW50YSBrb25maWd1cmFjaWplLCBucHIuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBQcml2emV0byBqZSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1NhbW9kZWpubyBzcHJvxb5pIHNwcm/FvmlsY2EgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnUmF6bGnEjWljYSBTdHJpbmcgSXpyYXonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnUmF6bGnEjWljYSBTdHJpbmcgTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnU3Byb8W+aWxuaWsgcmF6bGnEjWljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnQWxpIHNlIGxhaGtvIGl6dmVkYmkgQ29uZmlnSXRlbUFDTCBpem9nbmVtbyBzIHByZXZlcmphbmplbSBvZHZpc25vc3RpIHBvbGogdiBwcmVkcG9tbmlsbmlrdS4gVG8gbGFoa28gaXpib2xqxaFhIMSNYXMgbmFsYWdhbmphIG9icmF6Y2V2LCB2ZW5kYXIgbW9yYSBiaXRpIG9uZW1vZ2/EjWVubywgxI1lIHNlIHphIHRpcGUgSVRTTUNvbmZpZ0l0ZW0tIGluIEZvcm0tUmV0dXJuVHlwZSB1cG9yYWJsamFqbyBtb2R1bGkgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnS2F0ZXJpIHNwbG/FoW5pIHBvZGF0a2kgc28gcHJpa2F6YW5pIHYgZ2xhdmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAncmF6cmVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbG5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdHByb2R1a3Rpdm5pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmVkcHJvZHVrdGl2bmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ3Byb2R1a3Rpdm5vJzsKCiAgICAjIFJlYWR5IHRvIGFkb3B0IGNsYXNzZXM6IElULVNlcnZpY2VtYW5hZ2VtZW50LTExXzBfMwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJ30gPSAnMTBVOiAxNyw1IHBhbGNhICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgcGFsY2V2ICg1MywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKSd9ID0gJzE1VTogMjYsMjUgcGFsY2EgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgcGFsY2EgKDgwLDAxIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcxOS1wYWzEjW5pIG5vc2lsZWMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJzFVOiAxLDc1IHBhbGNhICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IHBhbGNldiAoODgsOSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEtcGFsxI1uaSBub3NpbGVjJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBwYWxjYSAoOTcsNzkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzLXBhbMSNbm8gc3RvamFsbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLDYgcGFsY2EgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIHBhbGNldiAoMTA2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKSd9ID0gJzI3VTogNDcsMjUgcGFsY2EgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBwYWxjYSAoOCw4OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSBwYWxjYSAoMTMzLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMS41IGluY2hlcyAoODAwIG1tKSd9ID0gJzMxLDUgcGFsY2EgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IHBhbGNhICgxNDYsNjggY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUsNCBwYWxjYSAoOTAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMgcGFsY2V2ICgxNjAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQgcGFsY2EgKDEwMDAgbW0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlVOiA2OCwyNSBwYWxjYSAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IHBhbGNhICgxMywzNCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVTogNzMsNSBwYWxjYSAoMTg2LDY5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyBwYWxjYSAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBwYWxjYSAoMjAwLDAyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICc0NywyIHBhbGNhICgxMjAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4VTogODQgcGFsY2V2ICgyMTMsMzYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzRVOiA3IGluY2hlcyAoMTcuNzggY20pJ30gPSAnNFU6IDcgcGFsY2V2ICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBwYWxjYSAoMjIsMjMgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJ30gPSAnNlU6IDEwLDUgcGFsY2EgKDI2LDY3IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknfSA9ICc3VTogMTIsMjUgcGFsY2EgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgcGFsY2V2ICgzNSw1NiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVU6IDE1LDc1IHBhbGNhICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdSYcSNdW5vdm9kc3R2byc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0RvZGVsamV2YW5qZSBuYXNsb3Zvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnVXByYXZpdGVsaic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2duaSB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnVnJzdGEgbmFwcmF2ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJ1ptb2dsaml2b3N0IGJhdGVyaWplIChBaCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnVnJzdGEgYmF0ZXJpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICdTdGF2YmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ1ZtZXNuaWsgdm9kaWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnUmF6cmVkIHByb2Nlc29yamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ1ptb2dsaml2b3N0IChHQiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICdabW9nbGppdm9zdCBuYSBncmFmacSNbm8ga2FydGljbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ8WgdGV2aWxrYSBrYXJ0aWNlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnQnJhbG5payBrYXJ0aWMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnVnJzdGEga2FydGljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnUG90cmRpbGEgc3RyYW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJ09kamVtYWxza2EgcHJvZ3JhbXNrYSBvcHJlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnS2F0ZWdvcmlqYSBzdHJhbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnxIxhc292bmEgc3RvcG5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnSGl0cm9zdCB1cic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnUG90cmRpbGEgemEgcG9kcGlzb3ZhbmplIGtvZGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ0tvbmZlcmVuxI1uaSB0ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnUG9nb2RiYSBvIHN2ZXRvdmFuanUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ1BpxaFpdGUgbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ1N0aWsgeiBkaXN0cmlidXRlcmplbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ1VwcmF2bGphbmplIHphYm9qbmlrb3YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICdQb2dvZGJhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICdWcnN0YSBwb2dvZGJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnUG9nb2RiZW5vIG9iZG9iamUgb2QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnUG9nb2RiZW5vIG9iZG9iamUgZG8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAnQnJlesW+acSNbmkgdGVsZWZvbiAodGVsZWZvbiBERUNUKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICdTdHJvxaFrb3ZuYSBlbm90YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VudCBvZiBsaWNlbnNlcyd9ID0gJ8WgdGV2aWxvIGxpY2VuYyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGlvbiBEYXRlJ30gPSAnRGF0dW0gdXN0YW5vdml0dmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ1N0b2phbG8gcG8gbWVyaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBSZXplcnZpcmFubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnU3RyZcW+bmlrIEROUyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICdEVkknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnRGF0dW0gcmHEjXVuYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAnRGF0dW0gbmFyb8SNaWxhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICdEYXR1bSBnYXJhbmNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAnRGF0dW0gaXpkYWplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICdOYW1pem5pIHJhxI11bmFsbmlrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdQb3RyZGlsYSB6YSBwb2RwaXNvdmFuamUgZG9rdW1lbnRvdic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kgUmFjayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnUG90cmRpbGEgemEgZS1wb8WhdG8gKHBvdHJkaWxhIFMvTUlNRSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnUG9nb2RiYSBvIHphcG9zbGl0dmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICdLb27EjW5pIG5hc2xvdiBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJ0tvbmVjIHBvZHBvcmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICdEYXR1bSBpenRla2EgdmVsamF2bm9zdGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ1p1bmFuamkgdHJkaSBkaXNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnUG/FvmFybmkgemlkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnVmRlbGFuYSBwcm9ncmFtc2thIG9wcmVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1NrbGFkacWhxI1lbmplIGVuZXJnaWplIHogdnp0cmFqbmlrb20nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICdGYWt0b3Igb2JsaWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdQb2dvZGJhIG8gZnJhbsWhaXppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnQnJlenBsYcSNbmEgcHJvZ3JhbXNrYSBvcHJlbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnU3Bsb8WhbmUgaW5mb3JtYWNpamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgQ2FyZHMnfSA9ICdHcmFmacSNbmUga2FydGljZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnR3JhZmnEjW5hIGthcnRpY2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdTdHJvam5hIG9wcmVtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ01vZGVsIHN0cm9qbmUgb3ByZW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ1Rlxb5hIHN0cm9qbmUgb3ByZW1lJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdTbHXFoWFsa2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdQcm90b2tvbCBJUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICdVcHJhdmxqYW5qZSBpZGVudGl0ZXQgaW4gZG9zdG9wYSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnSW52ZW50YXJuYSDFoXRldmlsa2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICdTdHJvxaFraSBpbnZlcnppamUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfFoHRldmlsa2EgcmHEjXVuYSc7CiAgICAkU2VsZi0+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+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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/0YDQtdGC0YDQsNCz0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9Ce0LPRgNCw0L3QuNGH0LXRmtC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IERlcGxveW1lbnQgU3RhdGUnfSA9ICfQkdC+0ZjQsCDRgdGC0LDRgtGD0YHQsCDRgNCw0YHQv9C+0YDQtdGS0LjQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn0KLQuNC/INGB0YLQsNGa0LAg0LjQvdGG0LjQtNC10L3RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ9CX0LDQtNGa0Lgg0L/Rg9GCINC/0YDQvtC80LXRmtC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQn9GA0L7QvNC10L3QuNC+JzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn0JTQsCDQu9C4INC20LXQu9C40YLQtSDQtNCwINC90LDRgdGC0LDQstC40YLQtT8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn0J3QtdC+0L/RhdC+0LTQsNC9IEV4YW1wbGVQcm9jZXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfQndC40ZjQtSDQtNCw0YIg0JjQlCDQodGC0LDQstC60LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn0J/RgNC+0LzQtdC90LAgIiVzIiDQvdC40ZjQtSDQvdCw0ZLQtdC90LAg0YMg0LHQsNC30Lgg0L/QvtC00LDRgtCw0LrQsCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICfQndC40ZjQtSDQsdC40LvQviDQvNC+0LPRg9Gb0LUg0L7QsdGA0LjRgdCw0YLQuCBDaGFuZ2VJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ9Cd0LjRmNC1INC00LDRgiAlcyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDRgdC1INC/0YDQuNC60LDQt9Cw0YLQuCDQuNGB0YLQvtGA0LjRmNCw0YIsINGY0LXRgCDQvdC40ZjQtSDQtNCw0YIg0JjQlCDQodGC0LDQstC60LUhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn0J3QtSDQvNC+0LbQtSDRgdC1INC/0YDQuNC60LDQt9Cw0YLQuCDQuNGB0YLQvtGA0LjRmNCw0YIsINC90LjRmNC1INC00LDRgiBUaWNrZXRJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn0J3QvtCy0LAg0LDQutGG0LjRmNCwIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gKElEPSVzKSBkZWxldGVkJ30gPSAn0J7QsdGA0LjRgdCw0L0g0YPRgdC70L7QsiAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAn0J/QvtCy0LXQt9Cw0L3QviDRgdCwICVzIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ9Ce0LHRgNC40YHQsNC90LAg0LLQtdC30LAg0YHQsCAlcyAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfQndC1INC80L7QttC1INGB0LUg0L/RgNC40LrQsNC30LDRgtC4INC40YHRgtC+0YDQuNGY0LDRgiwg0L3QuNGY0LUg0LTQsNGCIFRpY2tldElEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtSUQgJXMgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9Cf0YDQvtC80LXQvdCwICIlcyIg0L3QuNGY0LUg0L3QsNGS0LXQvdCwINGDINCx0LDQt9C4INC/0L7QtNCw0YLQsNC60LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfQoNC10YTQtdGA0LXQvdGG0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICfQndC40ZjQtSDQtNCw0YIgQ2hhbmdlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfQndC10LzQsCDRgNC10LfRg9C70YLQsNGC0LAhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn0KPQv9C+0LfQvtGA0LXRmtC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfQndC10LzQsCDQtNC+0LfQstC+0LvQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICfQkdC+0ZjQsCDRgdGC0LDRgtGD0YHQsCDRgNCw0YHQv9C+0YDQtdGS0LjQstCw0ZrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfQotC40L8g0YHRgtCw0ZrQsCDQuNC90YbQuNC00LXQvdGC0LAnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn0LjQt9C80LXRktGDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ9CY0YHRgtC40YfQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9Ce0LzQvtCz0YPRm9Cw0LLQsCDQvdCw0L/RgNC10LTQvdC1INGD0YHQu9C+0LLQtSDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuINCh0LAg0L7QstC+0Lwg0L7Qv9GG0LjRmNC+0Lwg0LzQvtGb0LXRgtC1INC/0YDQtdGC0YDQsNC20LjQstCw0YLQuCDQvdC/0YAuINC90LDRgdC70L7QsiDRgtC40LrQtdGC0LAg0YHQsCDRg9GB0LvQvtCy0LjQvNCwINC60LDQviAiKCprZXkxKiYmKmtleTIqKSIg0LjQu9C4ICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn0J7QvNC+0LPRg9Gb0LDQstCwINC90LDQv9GA0LXQtNC90LUg0YPRgdC70L7QstC1INC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60L7RgNC40YHQvdC40LrQsC4g0KHQsCDQvtCy0L7QvCDQvtC/0YbQuNGY0L7QvCDQvNC+0ZvQtdGC0LUg0L/RgNC10YLRgNCw0LbQuNCy0LDRgtC4INC90L/RgC4g0L3QsNGB0LvQvtCyINGC0LjQutC10YLQsCDRgdCwINGD0YHQu9C+0LLQuNC80LAg0LrQsNC+ICIoKmtleTEqJiYqa2V5MiopIiDQuNC70LggIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICfQlNC+0LTQtdGZ0LXQvdC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSDQtNC+0LTQtdGZ0LXQvdC1INGE0LjRgNC80Lgg0LrQu9C40ZjQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJ9Ca0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC00L7QtNC10ZnQtdC90LUg0LrQu9C40ZjQtdC90YLRgyDQutC+0YDQuNGB0L3QuNC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIg0L/QvtC00LXRiNCw0LLQsNGa0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9Cf0YDQvtCy0LXRgNCwINGY0LXQtNC40L3RgdGC0LLQtdC90L7QsyDQuNC80LXQvdCwINGB0LDQvNC+INGDINC+0LrQstC40YDRgyDQuNGB0YLQtSDQutC70LDRgdC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60LggKFwn0LrQu9Cw0YHQsFwnKSDQuNC70Lgg0LPQu9C+0LHQsNC70L3QviAoXCfQs9C70L7QsdCw0LvQvdC+XCcpLCDRiNGC0L4g0LfQvdCw0YfQuCDQtNCwINGY0LUg0YHQstCw0LrQsCDQv9C+0YHRgtC+0ZjQtdGb0LAg0JrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QsCDRgdGC0LDQstC60LAg0YPQt9C10YLQsCDRgyDQvtCx0LfQuNGAINGDINC/0YDQvtCy0LXRgNC4INC00YPQv9C70LjQutCw0YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn0JTQvtC00LDQstCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfQo9GA0LXRktC40LLQsNGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JzQvtC00YPQuyDQtNC+0LPQsNGS0LDRmNCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrQvtGY0Lgg0L7QvNC+0LPRg9Gb0LDQstCwINCx0LXQu9C10LbQtdGa0LUg0YMg0LjRgdGC0L7RgNC40ZjQsNGCINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn0JjRgdGC0L7RgNC40ZjQsNGCINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBwcmludC4nfSA9ICfQqNGC0LDQvNC/0LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gem9vbS4nfSA9ICfQlNC10YLQsNGZ0L3QuCDQv9GA0LjQutCw0Lcg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC90LUg0YHRgtCw0LLQutC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfQntCz0YDQsNC90LjRh9C10ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAn0J7Qs9GA0LDQvdC40YfQtdGa0LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQv9C+INGB0YLRgNCw0L3QuC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ9CR0LDQt9CwINC/0L7QtNCw0YLQsNC60LAg0YPQv9GA0LDQstGZ0LDRmtCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjRmNC+0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICfQnNC+0LTRg9C7INC80LDRgdC+0LLQvdC1INCw0LrRhtC40ZjQtSDQvdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjQvCDRgdGC0LDQstC60LDQvNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdCwINGB0YLQsNCy0LrQsCDQv9GA0LXRgtGA0LDQttGD0ZjQtSDQv9C+0LfQsNC00LjQvdGB0LrQuCDRgNGD0YLQtdGAINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn0JrRgNC10LjRgNCw0ZrQtSDQuCDRg9C/0YDQsNCy0ZnQsNGa0LUg0LTQtdGE0LjQvdC40YbQuNGY0LAg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ9Cf0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INC/0L7QtNCw0YbQuCDQt9CwINC60L7RgNC40YjRm9C10ZrQtSDQvdCwINCw0YLRgNC40LHRg9GC0LjQvNCwINC30LAg0L/RgNC40LrQsNC3INC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwLiDQn9GA0LjQvNC10YA6ICJUaWNrZXRDcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtUaWNrZXRDcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O1RpY2tldENyZWF0ZVRpbWVQb2ludD0yOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn0J/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/QvtC00LDRhtC4INC30LAg0LrQvtGA0LjRiNGb0LXRmtC1INC90LAg0LDRgtGA0LjQsdGD0YLQuNC80LAg0LfQsCDQv9GA0LjQutCw0Lcg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAuINCf0YDQuNC80LXRgDogIlRpY2tldENyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnRNb250aD0xMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXk9NDtUaWNrZXRDcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RvcE1vbnRoPTExO1RpY2tldENyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LDQutGG0LjRmNC1INCz0LTQtSDRmNC1INC00YPQs9C80LUg0L/QvtGB0YLQsNCy0LrQuCDQtNC+0YHRgtGD0L/QvdC+INGDINC/0L7QstC10LfQsNC90L7QvCDQs9GA0LDRhNC40YfQutC+0Lwg0LXQu9C10LzQtdC90YLRgyDQvtCx0ZjQtdC60YLQsCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiDQnNC+0LvQuNC80L4g0LTQsCDQuNC80LDRgtC1INC90LAg0YPQvNGDINC00LAg0L7QstC1INCQ0LrRhtC40ZjQtSDQvNC+0YDQsNGY0YMg0LTQsCDQsdGD0LTRgyDRgNC10LPQuNGB0YLRgNC+0LLQsNC90LUg0YMg0YHQu9C10LTQtdGb0LjQvCBKUyDQuCBDU1Mg0LTQsNGC0L7RgtC10LrQsNC80LA6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzINC4IENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC/0L7RgtGA0LXQsdC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDQsdGA0LjRgdCw0ZrQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrRgNC+0Lcg0LPQtdC90LXRgNC40YfQutC4INC40L3RgtC10YDRhNC10ZjRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L3QtdC+0L/RhdC+0LTQvdC1INC00L7Qt9Cy0L7Qu9C1INC30LAg0LTQvtCx0LjRmNCw0ZrQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0LrQvtGA0LjRiNGb0LXRmtC10Lwg0LPQtdC90LXRgNC40YfQutC+0LMg0LjQvdGC0LXRgNGE0LXRmNGB0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC90LXQvtC/0YXQvtC00L3QtSDQtNC+0LfQstC+0LvQtSDQt9CwINC/0YDQtdGC0YDQsNCz0YMgSVRTTSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4INC60L7RgNC40YjRm9C10ZrQtdC8INCz0LXQvdC10YDQuNGH0LrQvtCzINC40L3RgtC10YDRhNC10ZjRgdCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvdC10L7Qv9GF0L7QtNC90LUg0LTQvtC30LLQvtC70LUg0LfQsCDQtNC+0LHQuNGY0LDRmtC1IElUU00g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDQutC+0YDQuNGI0ZvQtdGa0LXQvCDQs9C10L3QtdGA0LjRh9C60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQvNC+0LTRg9C7INC/0YDQtdCz0LvQtdC00LAg0LfQsCDQvNCw0LvQuCDQv9GA0LjQutCw0Lcg0LvQuNGB0YLQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40YUg0YHRgtCw0LLQutC4LiAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INGA0LXQs9GD0LvQsNGA0L3QtSDQuNC30YDQsNC30LUg0LfQsCDRgdCy0LDQutGDINC60LvQsNGB0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0YDQsNC00Lgg0L/RgNC+0LLQtdGA0LUg0L3QsNC30LjQstCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LUg0YHRgtCw0LLQutC1INC4INC/0YDQuNC60LDQt9CwINC/0YDQuNC/0LDQtNCw0ZjRg9Gb0LjRhSDQv9C+0YDRg9C60LAg0L4g0LPRgNC10YjQutCw0LzQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0LDRgtGA0LjQsdGD0YIg0YLQuNC60LXRgtCwINC30LAg0YHQvtGA0YLQuNGA0LDRmtC1INGC0LjQutC10YLQsCDRgyDRgNC10LfRg9C70YLQsNGC0YMg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAg0LjQvdGC0LXRgNGE0LXRmNGB0LAg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDRgtC40LrQtdGC0LAg0LfQsCDRgdC+0YDRgtC40YDQsNGa0LUg0YLQuNC60LXRgtCwINGDINGA0LXQt9GD0LvRgtCw0YLRgyDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsCDQuNC90YLQtdGA0YTQtdGY0YHQsCDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQsNGC0YDQuNCx0YPRgiDRgtC40LrQtdGC0LAg0LfQsCDRgdC+0YDRgtC40YDQsNGa0LUg0YLQuNC60LXRgtCwINGDINGA0LXQt9GD0LvRgtCw0YLRgyDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsCDRgyDQvtCy0L7RmCDQvtC/0LXRgNCw0YbQuNGY0LguJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC4INGA0LXQtNC+0YHQu9C10LQg0YLQuNC60LXRgtCwICjQv9C+0YHQu9C1INGB0L7RgNGC0LjRgNCw0ZrQsCDQv9C+INC/0YDQuNC+0YDQuNGC0LXRgtGDKSDRgyDQv9GA0LXQs9C70LXQtNGDINC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/RgNC10YDQsNGC0LXRgNCwLiDQk9C+0YDQtTog0J3QsNGY0YHRgtCw0YDQuNGY0Lgg0L3QsCDQstGA0YXRgy4g0JTQvtC70LU6INCd0LDRmNC90L7QstC40ZjQtSDQvdCwINCy0YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDRgNC10LTQvtGB0LvQtdC0INGC0LjQutC10YLQsCDRgyDQv9GA0LXQs9C70LXQtNGDINC/0YDQtdGC0YDQsNCz0LUg0YDQtdC30YPQu9GC0LDRgtCwINGDINC40L3RgtC10YDRhNC10ZjRgdGDINC60LvQuNGY0LXQvdGC0LAuINCT0L7RgNC1OiDQndCw0ZjRgdGC0LDRgNC40ZjQuCDQvdCwINCy0YDRhdGDLiDQlNC+0LvQtTog0J3QsNGY0L3QvtCy0LjRmNC1INC90LAg0LLRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0YDQtdC00L7RgdC70LXQtCDRgtC40LrQtdGC0LAg0YMg0L/RgNC10LPQu9C10LTRgyDQv9GA0LXRgtGA0LDQs9C1INGC0LjQutC10YLQsCDRgyDQvtCy0L7RmCDQvtC/0LXRgNCw0YbQuNGY0LguINCT0L7RgNC1OiDQndCw0ZjRgdGC0LDRgNC40ZjQuCDQvdCwINCy0YDRhdGDLiDQlNC+0LvQtTog0J3QsNGY0L3QvtCy0LjRmNC1INC90LAg0LLRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/RgNC40LrQsNC3INC/0YDQtdGC0YDQsNCz0LUg0LDRgtGA0LjQsdGD0YLQsCDRgtC40LrQtdGC0LAg0LfQsCDQv9GA0LjQutCw0Lcg0LXQutGA0LDQvdCwINC/0YDQtdGC0YDQsNCz0LUg0YLQuNC60LXRgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9C+0LTRgNCw0LfRg9C80LXQstCw0L3QuCDQv9GA0LjQutCw0Lcg0L/RgNC10YLRgNCw0LPQtSDQsNGC0YDQuNCx0YPRgtCwINGC0LjQutC10YLQsCDQt9CwINC/0YDQuNC60LDQtyDQtdC60YDQsNC90LAg0L/RgNC10YLRgNCw0LPQtSDRgtC40LrQtdGC0LAuINCf0YDQuNC80LXRgDogIktleSIg0LzQvtGA0LAg0LjQvNCw0YLQuCDQvdCw0LfQuNCyINC00LjQvdCw0LzQuNGH0LrQvtCzINC/0L7RmdCwLCDRgyDQvtCy0L7QvCDRgdC70YPRh9Cw0ZjRgyBcJ1hcJywgIkNvbnRlbnQiINC80L7RgNCwINC40LzQsNGC0Lgg0LLRgNC10LTQvdC+0YHRgiDQtNC40L3QsNC80LjRh9C60L7QsyDQv9C+0ZnQsCDRgyDQt9Cw0LLQuNGB0L3QvtGB0YLQuCDQvtC0INGC0LjQv9CwINC00LjQvdCw0LzQuNGH0LrQvtCzINC/0L7RmdCwLCDQotC10LrRgdGCOiBcJ2EgdGV4dFwnLCDQn9Cw0LTQsNGY0YPRm9C4OiBcJzFcJywg0JTQsNGC0YPQvC/QktGA0LXQvNC1OiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcg0Lgv0LjQu9C4IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90Lgg0L/QvtC00L7QsdGY0LXQutCw0YIg0LrQu9Cw0YHQtSBJVFNNINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LAg0YHRgtCw0LLQutCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LLQuNGB0LjQvdGDINC30LAg0LrQvtC80L/QvtC90LXQvdGC0YMgUmljaCBUZXh0IEVkaXRvciDQt9CwINC+0LLQsNGYINC/0YDQuNC60LDQtyDQtdC60YDQsNC90LAuINCj0L3QtdGB0Lgg0LHRgNC+0ZggKNC/0LjQutGB0LXQu9C4KSDQuNC70Lgg0L/RgNC+0YbQtdC90YLRg9Cw0LvQvdGDINCy0YDQtdC00L3QvtGB0YIgKNGA0LXQu9Cw0YLQuNCy0L3RgykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ce0LTRgNC10ZLRg9GY0LUg0LHRgNC+0Zgg0YDQtdC00L7QstCwINC30LAg0LXQtNC40YLQvtGAINC00LXRhNC40L3QuNGG0LjRmNC1IENJINGDINCw0LTQvNC40L3QuNGB0YLRgNCw0YLQuNCy0L3QvtC8INC40L3RgtC10YDRhNC10ZjRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INGA0LXQtNC+0YHQu9C10LQg0LjQvdGG0LjQtNC10L3RgtC90LjRhSDRgdGC0LDRmtCwINC+0LQg0LLQuNGB0L7QutC+0LMgKNC90L/RgCDQutGA0LjRgtC40YfQvdC+KSDQtNC+INC90LjRgdC60L7QsyAo0L3Qv9GAINGE0YPQvdC60YbQuNC+0L3QsNC70L3QvikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn0J7QtNGA0LXRktGD0ZjQtSDRgNC10LvQtdCy0LDQvdGC0L3QsCDRgdGC0LDRmtCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwINCz0LTQtSDQv9C+0LLQtdC30LDQvdC4INGC0LjQutC10YLQuCDQvNC+0LPRgyDQtNCwINGD0YLQuNGH0YMg0L3QsCDRgdGC0LDRgtGD0YEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQs9GA0LDQvdC40YbRgyDQv9GA0LXRgtGA0LDQs9C1INC30LAg0LXQutGA0LDQvSBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CU0LXRhNC40L3QuNGI0LUg0LPRgNCw0L3QuNGG0YMg0L/RgNC10YLRgNCw0LPQtSDQt9CwINC10LrRgNCw0L0gQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INCz0YDQsNC90LjRhtGDINC/0YDQtdGC0YDQsNCz0LUg0LfQsCDQtdC60YDQsNC9IEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQs9GA0LDQvdC40YbRgyDQv9GA0LXRgtGA0LDQs9C1INC30LAg0LXQutGA0LDQvSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC/0YDQuNC60LDQt9Cw0L3QtSDQutC+0LvQvtC90LUg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QuNGFINGB0YLQsNCy0LrQuCDRgyDRgtCw0LHQtdC70Lgg0LLQtdC30LAg0YMg0LfQsNCy0LjRgdC90L7RgdGC0Lgg0L7QtCDQutC70LDRgdC1LiDQo9C60L7Qu9C40LrQviDQvdC1INC/0L7RgdGC0L7RmNC4INGD0L3QvtGBINC30LAg0L/QvtGY0LXQtNC40L3QsNGH0L3RgyDQutC70LDRgdGDLCDQsdC40ZvQtSDQv9GA0LjQutCw0LfQsNC90LUg0L/QvtC00YDQsNC30YPQvNC10LLQsNC90LUg0LrQvtC70L7QvdC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQv9GA0LjQutCw0LfQsNC90LUg0LrQvtC70L7QvdC1INC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0YMg0YLQsNCx0LXQu9C4INCy0LXQt9CwINGDINC30LDQstC40YHQvdC+0YHRgtC4INC+0LQg0LrQu9Cw0YHQtS4g0KHQstCw0LrQuCDRg9C90L7RgSDQvNC+0YDQsCDRgdCw0LTRgNC20LDRgtC4INC/0YDQtdGE0LjQutGBINGB0LAg0L3QsNC30LjQstC+0Lwg0LrQu9Cw0YHQtSDQuCDQtNCy0L7RgtCw0YfQutC+0LwgKNC90L/RgC4gQ29tcHV0ZXI6OikuINCf0L7RgdGC0L7RmNC4INC/0LDRgCDQsNGC0YDQuNCx0YPRgtCwINC60L7RmNC4INGB0YMg0LfQsNGY0LXQtNC90LjRh9C60Lgg0LfQsCDRgdCy0LUg0LrQu9Cw0YHQtSAo0L3Qv9GALiDQt9CwINC60LvQsNGB0YMgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCX0LAg0L/RgNC40LrQsNC3INC/0L7RmNC10LTQuNC90LDRh9C90LjRhSDQsNGC0YDQuNCx0YPRgtCwINC40Lcg0LTQtdGE0LjQvdC40YbQuNGY0LUsINC80L7RgNCw0YLQtSDQutC+0YDQuNGB0YLQuNGC0Lgg0YHQu9C10LTQtdGb0YMg0YjQtdC80YMgKNC/0YDQuNC80LXRgCDQt9CwINC60LvQsNGB0YMgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4g0KPQutC+0LvQuNC60L4g0L3QtSDQv9C+0YHRgtC+0ZjQuCDRg9C90L7RgSDQt9CwINC/0L7RmNC10LTQuNC90LDRh9C90YMg0LrQu9Cw0YHRgywg0LHQuNGb0LUg0L/RgNC40LrQsNC30LDQvdC1INC/0L7QtNGA0LDQt9GD0LzQtdCy0LDQvdC1INC60L7Qu9C+0L3QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC60L7RmNC1INGB0YMg0YHRgtCw0LLQutC1INGB0LvQvtCx0L7QtNC90LUg0LfQsCBcJ0FjdGlvblwnINGDINGC0YDQtdGb0LXQvCDQvdC40LLQvtGDIEFDTCDRgdGC0YDRg9C60YLRg9GA0LUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0JTQtdGE0LjQvdC40YjQtSDQutC+0ZjQtSDRgdGDINGB0YLQsNCy0LrQtSDRgdC70L7QsdC+0LTQvdC1INGDINC/0YDQstC+0Lwg0L3QuNCy0L7RgyBBQ0wg0YHRgtGA0YPQutGC0YPRgNC1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICfQlNC10YTQuNC90LjRiNC1INC60L7RmNC1INGB0YMg0YHRgtCw0LLQutC1INGB0LvQvtCx0L7QtNC90LUg0YMg0LTRgNGD0LPQvtC8INC90LjQstC+0YMgQUNMINGB0YLRgNGD0LrRgtGD0YDQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC60L7RmNC4INGC0LjQvyDQstC10LfQtSAo0LPQu9C10LTQsNC90L4g0LjQtyDQv9C10YDRgdC/0LXQutGC0LjQstC1INGC0LjQutC10YLQsCkg0LzQvtC20LUg0LTQsCDRg9GC0LjRh9C1INC90LAg0L/QvtCy0LXQt9Cw0L3RgyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQntC00YDQtdGS0YPRmNC1INC60L7RmNC4INGC0LjQvyDRgtC40LrQtdGC0LAg0LzQvtC20LUg0LTQsCDRg9GC0LjRh9C1INC90LAg0YHRgtCw0YLRg9GBINC/0L7QstC10LfQsNC90LUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfQkdGA0LjRgdCw0ZrQtSDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC1INGB0YLQsNCy0LrQtSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ9CR0L7RmNCwINGB0YLQsNGC0YPRgdCwINGA0LDRgdC/0L7RgNC10ZLQuNCy0LDRmtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9CU0YPQv9C70LjQutCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0LXQutGA0LDQvdGDINC00L7QtNCw0YLQvdC40YUgSVRTTSDQv9C+0ZnQsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CU0LjQvdCw0LzQuNGH0LrQsCDQv9C+0ZnQsCDQv9GA0LjQutCw0LfQsNC90LAg0YMg0L/RgNC10LPQu9C10LTRgyBGQVEg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0LrQu9C40ZjQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNC40YfQutCwINC/0L7RmdCwINC/0YDQuNC60LDQt9Cw0L3QsCDRgyDQtdC60YDQsNC90YMg0L/RgNC10YLRgNCw0LPQtSDQv9GA0L7QvNC10L3QsCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9Ce0LzQvtCz0YPRm9Cw0LLQsCDQvNCw0YHQvtCy0L3RgyDQsNC60YbQuNGY0YMg0L3QsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC40Lwg0YHRgtCw0LLQutCw0LzQsCDRgyDQv9GA0LjRgdGC0YPQv9C90L7QvCDRgdC40YHRgtC10LzRgyDQvtC/0LXRgNCw0YLQtdGA0LAg0L3QsCDQstC40YjQtSDQvtC0INGY0LXQtNC90LUg0YHRgtCw0LLQutC1INC40YHRgtC+0LLRgNC10LzQtdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfQkNC60YLQuNCy0LjRgNCwINGB0LLQvtGY0YHRgtCy0L4g0LzQsNGB0L7QstC90LUg0LDQutGG0LjRmNC1INC90LAg0LrQvtC90YTQuNCz0LjRgNCw0YbQuNC+0L3QuNC8INGB0YLQsNCy0LrQsNC80LAg0YHQsNC80L4g0LfQsCDQuNC30LvQuNGB0YLQsNC90LUg0LPRgNGD0L/QtS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ9Cc0L7QtNGD0Lsg0LTQvtCz0LDRktCw0ZjQsCDQt9CwINC/0L7QtNC10YjQsNCy0LDRmtC1INGB0YLQsNGC0YPRgdCwINC60L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90LjRhSDRgdGC0LDQstC60Lgg0L/RgNC40LvQuNC60L7QvCDQv9C+0YHRgtCw0LLRmdCw0ZrQsCDQstC10LfQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn0KDQtdCz0LjRgdGC0YDQsNGG0LjRmNCwINC80L7QtNGD0LvQsCDQs9C10L3QtdGA0LjRh9C60L7QsyDQuNC90YLQtdGA0YTQtdGY0YHQsCDQt9CwINGB0LvQvtGYINC/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/0YDQuNC60LDQt9Cw0L3QsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINCx0L7RmNC1INGB0YLQsNGC0YPRgdCwINC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0LDRgtGA0LjQsdGD0YLQtSDRg9C30L7RgNC60LAg0LPRgNGD0L/QtSDQt9CwINC00L7Qt9Cy0L7Qu9C1INC+0L/RiNGC0LXQsyDQutCw0YLQsNC70L7Qs9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLQsNGC0YPRgdC1INC/0YDQuNC80LXQvdC1INC90LAg0L/RgNC40LrQsNC30YMg0L/QvtGB0YLQsNCy0LrQuCDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQt9CwINGB0YLRgNCw0L3QuNGG0LUgKNC90LAg0LrQvtGY0LjQvNCwINGB0YMg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUg0L/RgNC40LrQsNC30LDQvdC1KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC30LAg0YHRgtCw0YLRg9GB0LUg0L/RgNC40LzQtdC90LUg0L3QsCDQv9GA0LjQutCw0LfRgyDQv9C+0YHRgtCw0LLQutC4INGDINC40L3RgtC10YDRhNC10ZjRgdGDINC+0L/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0LDRgtGD0YHQtSDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LfQsCDRgdGC0LDRgtGD0YHQtSDQv9GA0LjQvNC10L3QtSDQvdCwINC/0YDQuNC60LDQt9GDINC/0L7RgdGC0LDQstC60Lgg0YMg0LjQvdGC0LXRgNGE0LXRmNGB0YMg0L7Qv9C10YDQsNGC0LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ9CY0LfQstGA0YjQsNCy0LAg0L/QvtC00LXRiNC10L3RgyDQsNC60YbQuNGY0YMg0LfQsCDRgdCy0LDQutC4INC00L7Qs9Cw0ZLQsNGYICjQutCw0L4g0L/QvtC30LjQstCw0LvQsNGGKSDQt9CwINGB0LLQsNC60Lgg0LrQvtC90YTQuNCz0YPRgNC40YHQsNC9INCy0LXQsSDRgdC10YDQstC40YEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9CwINC/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/QtdGA0LDRgtC10YDQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0YDQuNC60LDQt9GD0ZjQtSDQuNGB0YLQvtGA0LjRmNCw0YIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC+0L3QtSDRgdGC0LDQstC60LUgKNC+0LHRgNC90YPRgiDRgNC10LTQvtGB0LvQtdC0KSDRgyDQuNC90YLQtdGA0YTQtdGY0YHRgyDQvtC/0LXRgNCw0YLQtdGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAn0JjQtNC10L3RgtC40YTQuNC60LDRgtC+0YAg0LfQsCDQutC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdGDINGB0YLQsNCy0LrRgywg0L3Qv9GALiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4g0J/QvtC00YDQsNC30YPQvNC10LLQsNC90L4g0ZjQtSBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn0LrQu9Cw0YHQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAn0L/QvtGB0YIt0L/RgNC+0LTRg9C60YbQuNGY0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJlcHJvZHVjdGl2ZSd9ID0gJ9C/0YDQtS3Qv9GA0L7QtNGD0LrRhtC40ZjQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAn0L/RgNC+0LTRg9C60YbQuNGY0LAnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOS1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0Ny4yIGluY2hlcyAoMTIwMCBtbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfQndCw0LvQvtCzJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICfQkNC00LzQuNC90LjRgdGC0YDQsNGG0LjRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCU0QgTGljZW5zZSAoQmVya2VsZXkgU29mdHdhcmUgRGlzdHJpYnV0aW9uIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgQ2FwYWNpdHkgKEFoKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVpbGRpbmcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9CY0L3RgtC10YDRhNC10ZjRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICfQmtC70LjRmNC10L3RgtGB0LrQuCDRgdC10YDRgtC40YTQuNC60LDRgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ9Ci0LjQvyDRgdCw0LTRgNC20LDRmNCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICdWcmVtZSBrcmVpcmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfQkdC10YHQv9C70LDRgtC90LggKionOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+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+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydTZWxlY3QgdGhpcyBjb25maWcgaXRlbSd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUnVuIFNlYXJjaCd9ID0gJ1Bva3JlbmkgcHJldHJhZ3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ09ncmFuacSNZW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ0JvamEgc3RhdHVzYSByYXNwb3JlxJFpdmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSd9ID0gJ1RpcCBzdGFuamEgaW5jaWRlbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ1phZG5qaSBwdXQgcHJvbWVuamVubyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICdQcm9tZW5pbyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ0RhIGxpIMW+ZWxpdGUgZGEgbmFzdGF2aXRlPyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICdOZW9waG9kYW4gRXhhbXBsZVByb2Nlc3NlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBpcyBubyB2YWxpZCBZQU1MIGhhc2guJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0IElEIFN0YXZrZSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICdQcm9tZW5hICIlcyIgbmlqZSBuYcSRZW5hIHUgYmF6aSBwb2RhdGFrYSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICdOaWplIGJpbG8gbW9ndcSHZSBvYnJpc2F0aSBDaGFuZ2VJRCAlcyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ05pamUgZGF0ICVzISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICdOZSBtb8W+ZSBzZSBwcmlrYXphdGkgaXN0b3JpamF0LCBqZXIgbmlqZSBkYXQgSUQgU3RhdmtlISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ05lIG1vxb5lIHNlIHByaWthemF0aSBpc3RvcmlqYXQsIG5pamUgZGF0IFRpY2tldElEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICdOb3ZhIGFrY2lqYSAoSUQ9JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ09icmlzYW4gdXNsb3YgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ1BvdmV6YW5vIHNhICVzIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ09icmlzYW5hIHZlemEgc2EgJXMgKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnTmUgbW/FvmUgc2UgcHJpa2F6YXRpIGlzdG9yaWphdCwgbmlqZSBkYXQgVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnUHJvbWVuYSAiJXMiIG5pamUgbmHEkWVuYSB1IGJhemkgcG9kYXRha2EhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnUmVmZXJlbmNhJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnTmlqZSBkYXQgQ2hhbmdlSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICdOZW1hIHJlenVsdGF0YSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3dhcm5pbmcnfSA9ICdVcG96b3JlbmplJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICdOZW1hIGRvenZvbGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAnQm9qYSBzdGF0dXNhIHJhc3BvcmXEkWl2YW5qYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICdUaXAgc3RhbmphIGluY2lkZW50YSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdpem1lxJF1JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBkZXBsb3ltZW50IHN0YXRlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgKENvbmZpZ0l0ZW0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0xpbmsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBwdXJnZSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luc2VydGVkIDAgcm93cyBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICcnOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0lzdGnEjWUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGVzdC9RQSd9ID0gJyc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdPbW9ndcSHYXZhIG5hcHJlZG5lIHVzbG92ZSBwcmV0cmFnZSB0aWtldGEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4gU2Egb3ZvbSBvcGNpam9tIG1vxIdldGUgcHJldHJhxb5pdmF0aSBucHIuIG5hc2xvdiB0aWtldGEgc2EgdXNsb3ZpbWEga2FvICIoKmtleTEqJiYqa2V5MiopIiBpbGkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdPbW9ndcSHYXZhIG5hcHJlZG5lIHVzbG92ZSBwcmV0cmFnZSB0aWtldGEgdSBpbnRlcmZlanN1IGtvcmlzbmlrYS4gU2Egb3ZvbSBvcGNpam9tIG1vxIdldGUgcHJldHJhxb5pdmF0aSBucHIuIG5hc2xvdiB0aWtldGEgc2EgdXNsb3ZpbWEga2FvICIoKmtleTEqJiYqa2V5MiopIiBpbGkgIigqa2V5MSp8fCprZXkyKikiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdEb2RlbGplbmUga29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UgZG9kZWxqZW5lIGZpcm1pIGtsaWplbnRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnS29uZmlndXJhY2lvbmUgc3RhdmtlIGRvZGVsamVuZSBrbGlqZW50dSBrb3Jpc25pa3UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgcG9kZcWhYXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdQcm92ZXJhIGplZGluc3R2ZW5vZyBpbWVuYSBzYW1vIHUgb2t2aXJ1IGlzdGUga2xhc2Uga29uZmlndXJhY2lvbmloIHN0YXZraSAoXCdrbGFzYVwnKSBpbGkgZ2xvYmFsbm8gKFwnZ2xvYmFsbm9cJyksIMWhdG8gem5hxI1pIGRhIGplIHN2YWthIHBvc3RvamXEh2EgS29uZmlndXJhY2lvbmEgc3RhdmthIHV6ZXRhIHUgb2J6aXIgdSBwcm92ZXJpIGR1cGxpa2F0YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1ucyB0aGF0IGNhbiBiZSBmaWx0ZXJlZCBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gTm90ZTogT25seSBDb25maWcgSXRlbSBhdHRyaWJ1dGVzIGFuZCBEeW5hbWljIEZpZWxkcyAoRHluYW1pY0ZpZWxkX05hbWVYKSBhcmUgYWxsb3dlZC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gYWRkLid9ID0gJ0RvZGF2YW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnVXJlxJFpdmFuamUga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ01vZHVsIGRvZ2HEkWFqYSBrb25maWd1cmFjaW9uaWggc3RhdmtpIGtvamkgb21vZ3XEh2F2YSBiZWxlxb5lbmplIHUgaXN0b3JpamF0IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0lzdG9yaWphdCBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ8WgdGFtcGEga29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnRGV0YWxqbmkgcHJpa2F6IGtvbmZpZ3VyYWNpbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdPZ3JhbmnEjWVuamUga29uZmlndXJhY2lvbmUgc3RhdmtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdPZ3JhbmnEjWVuamUga29uZmlndXJhY2lvbmloIHN0YXZraSBwbyBzdHJhbmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdCYXphIHBvZGF0YWthIHVwcmF2bGphbmphIGtvbmZpZ3VyYWNpam9tLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnTW9kdWwgbWFzb3ZuZSBha2NpamUgbmEga29uZmlndXJhY2lvbmltIHN0YXZrYW1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmFjaW9uYSBzdGF2a2EgcHJldHJhxb51amUgcG96YWRpbnNraSBydXRlciB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdLcmVpcmFuamUgaSB1cHJhdmxqYW5qZSBkZWZpbmljaWphIHphIGtvbmZpZ3VyYWNpb25lIHN0YXZrZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ1BvZHJhenVtZXZhbmkgcG9kYWNpIHphIGtvcmnFocSHZW5qZSBuYSBhdHJpYnV0aW1hIHphIHByaWtheiBwcmV0cmFnZSB0aWtldGEuIFByaW1lcjogIlRpY2tldENyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO1RpY2tldENyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7VGlja2V0Q3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdQb2RyYXp1bWV2YW5pIHBvZGFjaSB6YSBrb3JpxaHEh2VuamUgbmEgYXRyaWJ1dGltYSB6YSBwcmlrYXogcHJldHJhZ2UgdGlrZXRhLiBQcmltZXI6ICJUaWNrZXRDcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7VGlja2V0Q3JlYXRlVGltZVN0YXJ0RGF5PTQ7VGlja2V0Q3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7VGlja2V0Q3JlYXRlVGltZVN0b3BNb250aD0xMTtUaWNrZXRDcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmnFoWUgYWtjaWplIGdkZSBqZSBkdWdtZSBwb3N0YXZraSBkb3N0dXBubyB1IHBvdmV6YW5vbSBncmFmacSNa29tIGVsZW1lbnR1IG9iamVrdGEgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gTW9saW1vIGRhIGltYXRlIG5hIHVtdSBkYSBvdmUgQWtjaWplIG1vcmFqdSBkYSBidWR1IHJlZ2lzdHJvdmFuZSB1IHNsZWRlxIdpbSBKUyBpIENTUyBkYXRvdGVrYW1hOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBpIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgVGVtcGxhdGU6OlRvb2xraXQgc2NoZW1lIGZvciB2ZXJzaW9uIHN0cmluZ3MuIE9ubHkgdXNlZCBpZiBWZXJzaW9uIFN0cmluZyBNb2R1bGUgaXMgc2V0IHRvIFRlbXBsYXRlVG9vbGtpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgcG90cmVibmUgZG96dm9sZSB6YSBicmlzYW5qZSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga3JveiBnZW5lcmnEjWtpIGludGVyZmVqcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBuZW9waG9kbmUgZG96dm9sZSB6YSBkb2JpamFuamUgSVRTTSBrb25maWd1cmFjaW9uaWggc3RhdmtpIGtvcmnFocSHZW5qZW0gZ2VuZXJpxI1rb2cgaW50ZXJmZWpzYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBuZW9waG9kbmUgZG96dm9sZSB6YSBwcmV0cmFndSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga29yacWhxIdlbmplbSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnRGVmaW5pxaFlIG5lb3Bob2RuZSBkb3p2b2xlIHphIGRvYmlqYW5qZSBJVFNNIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kga29yacWhxIdlbmplbSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdEZWZpbmnFoWUgbW9kdWwgcHJlZ2xlZGEgemEgbWFsaSBwcmlrYXogbGlzdGUga29uZmlndXJhY2lvbmloIHN0YXZraS4gJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAnT2RyZcSRdWplIHJlZ3VsYXJuZSBpenJhemUgemEgc3Zha3Uga2xhc3Uga29uZmlndXJhY2lvbmUgc3RhdmtlIHJhZGkgcHJvdmVyZSBuYXppdmEga29uZmlndXJhY2lvbmUgc3RhdmtlIGkgcHJpa2F6YSBwcmlwYWRhanXEh2loIHBvcnVrYSBvIGdyZcWha2FtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgdGlrZXRhIHphIHNvcnRpcmFuamUgdGlrZXRhIHUgcmV6dWx0YXR1IHByZXRyYWdlIHRpa2V0YSBpbnRlcmZlanNhIG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIGF0cmlidXQgdGlrZXRhIHphIHNvcnRpcmFuamUgdGlrZXRhIHUgcmV6dWx0YXR1IHByZXRyYWdlIHRpa2V0YSBpbnRlcmZlanNhIG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBhdHJpYnV0IHRpa2V0YSB6YSBzb3J0aXJhbmplIHRpa2V0YSB1IHJlenVsdGF0dSBwcmV0cmFnZSB0aWtldGEgdSBvdm9qIG9wZXJhY2lqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIHRpa2V0YSAocG9zbGUgc29ydGlyYW5qYSBwbyBwcmlvcml0ZXR1KSB1IHByZWdsZWR1IHByZXRyYWdlIHRpa2V0YSB1IGludGVyZmVqc3Ugb3ByZXJhdGVyYS4gR29yZTogTmFqc3RhcmlqaSBuYSB2cmh1LiBEb2xlOiBOYWpub3ZpamUgbmEgdnJodS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIHRpa2V0YSB1IHByZWdsZWR1IHByZXRyYWdlIHJlenVsdGF0YSB1IGludGVyZmVqc3Uga2xpamVudGEuIEdvcmU6IE5hanN0YXJpamkgbmEgdnJodS4gRG9sZTogTmFqbm92aWplIG5hIHZyaHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwb2RyYXp1bWV2YW5pIHJlZG9zbGVkIHRpa2V0YSB1IHByZWdsZWR1IHByZXRyYWdlIHRpa2V0YSB1IG92b2ogb3BlcmFjaWppLiBHb3JlOiBOYWpzdGFyaWppIG5hIHZyaHUuIERvbGU6IE5ham5vdmlqZSBuYSB2cmh1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgcmVsYXRpb25zIGRlcHRoIHRvIGJlIHNob3duLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcG9kcmF6dW1ldmFuaSBwcmlrYXogcHJldHJhZ2UgYXRyaWJ1dGEgdGlrZXRhIHphIHByaWtheiBla3JhbmEgcHJldHJhZ2UgdGlrZXRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnRGVmaW5pxaFlIHBvZHJhenVtZXZhbmkgcHJpa2F6IHByZXRyYWdlIGF0cmlidXRhIHRpa2V0YSB6YSBwcmlrYXogZWtyYW5hIHByZXRyYWdlIHRpa2V0YS4gUHJpbWVyOiAiS2V5IiBtb3JhIGltYXRpIG5heml2IGRpbmFtacSNa29nIHBvbGphLCB1IG92b20gc2x1xI1hanUgXCdYXCcsICJDb250ZW50IiBtb3JhIGltYXRpIHZyZWRub3N0IGRpbmFtacSNa29nIHBvbGphIHUgemF2aXNub3N0aSBvZCB0aXBhIGRpbmFtacSNa29nIHBvbGphLCBUZWtzdDogXCdhIHRleHRcJywgUGFkYWp1xIdpOiBcJzFcJywgRGF0dW0vVnJlbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBpL2lsaSBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICdPZHJlxJF1amUgcG9kcmF6dW1ldmFuaSBwb2RvYmpla2F0IGtsYXNlIElUU00ga29uZmlndXJhY2lvbmEgc3RhdmthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ09kcmXEkXVqZSB2aXNpbnUgemEga29tcG9uZW50dSBSaWNoIFRleHQgRWRpdG9yIHphIG92YWogcHJpa2F6IGVrcmFuYS4gVW5lc2kgYnJvaiAocGlrc2VsaSkgaWxpIHByb2NlbnR1YWxudSB2cmVkbm9zdCAocmVsYXRpdm51KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAnT2RyZcSRdWplIGJyb2ogcmVkb3ZhIHphIGVkaXRvciBkZWZpbmljaWplIENJIHUgYWRtaW5pc3RyYXRpdm5vbSBpbnRlcmZlanN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdPZHJlxJF1amUgcmVkb3NsZWQgaW5jaWRlbnRuaWggc3RhbmphIG9kIHZpc29rb2cgKG5wciBrcml0acSNbm8pIGRvIG5pc2tvZyAobnByIGZ1bmtjaW9uYWxubykuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnT2RyZcSRdWplIHJlbGV2YW50bmEgc3RhbmphIHJhc3BvcmXEkWl2YW5qYSBnZGUgcG92ZXphbmkgdGlrZXRpIG1vZ3UgZGEgdXRpxI11IG5hIHN0YXR1cyBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgZ3JhbmljdSBwcmV0cmFnZSB6YSBla3JhbiBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBncmFuaWN1IHByZXRyYWdlIHphIGVrcmFuIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pxaFlIGdyYW5pY3UgcHJldHJhZ2UgemEgZWtyYW4gQWdlbnRJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmnFoWUgZ3JhbmljdSBwcmV0cmFnZSB6YSBla3JhbiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdEZWZpbmnFoWUgcHJpa2F6YW5lIGtvbG9uZSBrb25maWd1cmFjaW9uaWggc3RhdmtpIHUgdGFiZWxpIHZlemEgdSB6YXZpc25vc3RpIG9kIGtsYXNlLiBVa29saWtvIG5lIHBvc3RvamkgdW5vcyB6YSBwb2plZGluYcSNbnUga2xhc3UsIGJpxIdlIHByaWthemFuZSBwb2RyYXp1bWV2YW5lIGtvbG9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluacWhZSBwcmlrYXphbmUga29sb25lIGtvbmZpZ3VyYWNpb25paCBzdGF2a2kgdSB0YWJlbGkgdmV6YSB1IHphdmlzbm9zdGkgb2Qga2xhc2UuIFN2YWtpIHVub3MgbW9yYSBzYWRyxb5hdGkgcHJlZmlrcyBzYSBuYXppdm9tIGtsYXNlIGkgZHZvdGHEjWtvbSAobnByLiBDb21wdXRlcjo6KS4gUG9zdG9qaSBwYXIgYXRyaWJ1dGEga29qaSBzdSB6YWplZG5pxI1raSB6YSBzdmUga2xhc2UgKG5wci4gemEga2xhc3UgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFphIHByaWtheiBwb2plZGluYcSNbmloIGF0cmlidXRhIGl6IGRlZmluaWNpamUsIG1vcmF0ZSBrb3Jpc3RpdGkgc2xlZGXEh3UgxaFlbXUgKHByaW1lciB6YSBrbGFzdSBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBVa29saWtvIG5lIHBvc3RvamkgdW5vcyB6YSBwb2plZGluYcSNbnUga2xhc3UsIGJpxIdlIHByaWthemFuZSBwb2RyYXp1bWV2YW5lIGtvbG9uZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGZvciBcJ0FjdGlvblwnIGluIHRoaXJkIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmnFoWUga29qZSBzdSBzdGF2a2Ugc2xvYm9kbmUgemEgXCdBY3Rpb25cJyB1IHRyZcSHZW0gbml2b3UgQUNMIHN0cnVrdHVyZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIGZpcnN0IGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmnFoWUga29qZSBzdSBzdGF2a2Ugc2xvYm9kbmUgdSBwcnZvbSBuaXZvdSBBQ0wgc3RydWt0dXJlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gc2Vjb25kIGxldmVsIG9mIHRoZSBJVFNNIENvbmZpZyBJdGVtIEFDTCBzdHJ1Y3R1cmUuJ30gPQogICAgICAgICdEZWZpbmnFoWUga29qZSBzdSBzdGF2a2Ugc2xvYm9kbmUgdSBkcnVnb20gbml2b3UgQUNMIHN0cnVrdHVyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdPZHJlxJF1amUga29qaSB0aXAgdmV6ZSAoZ2xlZGFubyBpeiBwZXJzcGVrdGl2ZSB0aWtldGEpIG1vxb5lIGRhIHV0acSNZSBuYSBwb3ZlemFudSBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdPZHJlxJF1amUga29qaSB0aXAgdGlrZXRhIG1vxb5lIGRhIHV0acSNZSBuYSBzdGF0dXMgcG92ZXphbmUgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdCcmlzYW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdCb2phIHN0YXR1c2EgcmFzcG9yZcSRaXZhbmphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnRTdGF0ZSd9ID0gJ0JvamEgc3RhdHVzYSByYXNwb3JlxJFpdmFuamEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHVwbGljYXRlJ30gPSAnRHVwbGlrYXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RpbmFtacSNa2EgcG9samEgcHJpa2F6YW5hIHUgZWtyYW51IGRvZGF0bmloIElUU00gcG9samEgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRGluYW1pxI1rYSBwb2xqYSBwcmlrYXphbmEgdSBwcmVnbGVkdSBGQVEgdSBpbnRlcmZlanN1IGtsaWplbnRhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEaW5hbWnEjWthIHBvbGphIHByaWthemFuYSB1IGVrcmFudSBwcmV0cmFnZSBwcm9tZW5hIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ09tb2d1xIdhdmEgbWFzb3ZudSBha2NpanUgbmEga29uZmlndXJhY2lvbmltIHN0YXZrYW1hIHUgcHJpc3R1cG5vbSBzaXN0ZW11IG9wZXJhdGVyYSBuYSB2acWhZSBvZCBqZWRuZSBzdGF2a2UgaXN0b3ZyZW1lbm8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBa3RpdmlyYSBzdm9qc3R2byBtYXNvdm5lIGFrY2lqZSBuYSBrb25maWdpcmFjaW9uaW0gc3RhdmthbWEgc2FtbyB6YSBpemxpc3RhbmUgZ3J1cGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICdNb2R1bCBkb2dhxJFhamEgemEgcG9kZcWhYXZhbmplIHN0YXR1c2Ega29uZmlndXJhY2lvbmloIHN0YXZraSBwcmlsaWtvbSBwb3N0YXZsamFuamEgdmV6YS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhIHphIHNsb2ogcG96aXZhb2NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ1JlZ2lzdHJhY2lqYSBtb2R1bGEgZ2VuZXJpxI1rb2cgaW50ZXJmZWpzYSB6YSBzbG9qIHBveml2YW9jYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmFjaWphIG1vZHVsYSBnZW5lcmnEjWtvZyBpbnRlcmZlanNhIHphIHNsb2ogcG96aXZhb2NhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdLb25maWd1cmFjaW9uZSBzdGF2a2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICdQcmVnbGVkIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdUaXAgc3RhbmphIGluY2lkZW50YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnVGlwIHN0YW5qYSBpbmNpZGVudGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnTWFrc2ltYWxuaSBicm9qIHRpa2V0YSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSB1IHJlenVsdGF0dSBvdmUgb3BlcmFjaWplLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsIHphIHByb3ZlcnUgZ3J1cGUgb2Rnb3Zvcm5lIHphIGtsYXN1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIHphIHByb3ZlcnUgZ3J1cGUgb2Rnb3Zvcm5lIHphIGtvbmZpZ3VyYWNpb251IHN0YXZrdS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICdNb2R1bCB6YSBnZW5lcmlzYW5qZSBzdGF0aXN0aWtlIElUU00ga29uZmlndXJhY2lvbmloIHN0YXZraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCcm9qIHRpa2V0YSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSBuYSBzdmFrb2ogc3RyYW5pIHJlenVsdGF0YSBwcmV0cmFnZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCcm9qIHRpa2V0YSBrb2ppIMSHZSBiaXRpIHByaWthemFuaSBuYSBzdmFrb2ogc3RyYW5pIHJlenVsdGF0YSBwcmV0cmFnZSB1IGludGVyZmVqc3Uga2xpamVudGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdQcmVnbGVkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIGZpbHRlciBrb2xvbmEgdSB1bWFuamVub20gcHJlZ2xlZHUgdGlrZXRhLiBOYXBvbWVuYTogcG9kZcWhYXZhbmplIFwnQWN0aXZlXCcgbmEgMCDEh2Ugc2FtbyBvbmVtb2d1xIdpdGkgb3BlcmF0ZXJpbWEgZGEgbWVuamFqdSBzdm9qYSBsacSNbmEgcG9kZcWhYXZhbmphIGl6IG92ZSBncnVwZSwgYWxpIMSHZSBhZG1pbmlzdHJhdG9yaSBpIGRhbGplIG1vxIdpIGRhIGloIG1lbmphanUgdSBuamlob3ZvIGltZS4gUG9kZXNpdGUgXCdQcmVmZXJlbmNlR3JvdXBcJyBkYSBiaXN0ZSBvZHJlZGlsaSB1IGtvbSBkZWx1IGludGVyZmVqc2Egb3ZhIHBvZGXFoWF2YW5qYSB0cmViYSBkYSBidWR1IHByaWthemFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBib2plIHN0YXR1c2EgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBhdHJpYnV0ZSB1em9ya2EgZ3J1cGUgemEgZG96dm9sZSBvcMWhdGVnIGthdGFsb2dhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0YXR1c2UgcHJpbWVuZSBuYSBwcmlrYXp1IHBvc3RhdmtpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnUGFyYW1ldHJpIHphIHN0cmFuaWNlIChuYSBrb2ppbWEgc3Uga29uZmlndXJhY2lvbmUgc3RhdmtlIHByaWthemFuZSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGF0dXNlIHByaW1lbmUgbmEgcHJpa2F6dSBwb3N0YXZraSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyaSB6YSBzdGF0dXNlIHByaW1lbmUgbmEgcHJpa2F6dSBwb3N0YXZraSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmkgemEgc3RhdHVzZSBwcmltZW5lIG5hIHByaWthenUgcG9zdGF2a2kgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdJenZyxaFhdmEgcG9kZcWhZW51IGFrY2lqdSB6YSBzdmFraSBkb2dhxJFhaiAoa2FvIHBveml2YWxhYykgemEgc3Zha2kga29uZmlndXJpc2FuIHZlYiBzZXJ2aXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICdHcnVwYSBwcmlzdHVwYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIHByZXRyYWdlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIHByZXRyYWdlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgcHJldHJhZ2UgSVRTTSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBkZXRhbG5vZyBwcmlrYXphIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUG90cmVibmUgZG96dm9sZSB6YSB1cG90cmVidSBla3JhbmEgZG9kYXZhbmphIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BvdHJlYm5lIGRvenZvbGUgemEgdXBvdHJlYnUgZWtyYW5hIGl6bWVuZSBJVFNNIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSBpc3RvcmlqYXRhIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQb3RyZWJuZSBkb3p2b2xlIHphIHVwb3RyZWJ1IGVrcmFuYSDFoXRhbXBlIElUU00ga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdQb3RyZWJuYSBwcmF2YSB6YSBicmlzYW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnUHJldHJhZ2Ega29uZmlndXJhY2lvbmloIHN0YXZraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1Bvc3RhdmxqYSBzdGFuamUgaW5jaWRlbnRhIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBrYWRhIGplIHRpa2V0IHBvdmV6YW4gc2Egc3RhdmtvbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgc3RhdHVzIHByaW1lbmUgbmEgZWtyYW51IG1hc292bmUgYWtjaWplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPZHJlxJF1amUgc3RhdHVzIGluY2lkZW50YSBuYSBla3JhbnUgbWFzb3ZuZSBha2NpamUga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUga29qYSBvbW9ndcSHYXZhIHBvdmV6aXZhbmplIGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBzYSBkcnVnaW0gb2JqZWt0b20gbmEgZGV0YWxqbm9tIHByaWthenUga29uZmlndXJhY2lqZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHByaXN0dXAgaXN0b3JpamF0dSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgcHJlZ2xlZHUga29uZmlndXJhY2lvbmUgc3RhdmtlIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHByaXN0dXAgaXN0b3JpamF0dSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgZGV0YWxqbm9tIHByaWthenUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSBicmlzYW5qZSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgbmplbm9tIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSB1bW5vxb5hdmFuamUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIHByZWdsZWR1IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdVIG1lbmlqdSBwcmlrYXp1amUgdmV6dSB6YSB1bW5vxb5hdmFuamUga29uZmlndXJhY2lvbmUgc3RhdmtlIG5hIG5qZW5vbSBkZXRhbGpub20gcHJpa2F6dSB1IGludGVyZmVqc3Ugb3BlcmF0ZXJhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgaXptZW51IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBuamVub20gZGV0YWxqbm9tIHByaWthenUgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1UgbWVuaWp1IHByaWthenVqZSB2ZXp1IHphIHBvdnJhdGFrIG5hIGRldGFsam5pIHByaWtheiBrb25maWd1cmFjaW9uZSBzdGF2a2UgIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgxaF0YW1wdSBrb25maWd1cmFjaW9uZSBzdGF2a2UgbmEgbmplbm9tIGRldGFsam5vbSBwcmlrYXp1IHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVSBtZW5panUgcHJpa2F6dWplIHZlenUgemEgZGV0YWxqbmkgcHJpa2F6IGtvbmZpZ3VyYWNpb25lIHN0YXZrZSBuYSBwcmVnbGVkdSBrb25maWd1cmFjaW9uZSBzdGF2a2UgdSBpbnRlcmZlanN1IG9wZXJhdGVyYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ByaWthenVqZSBpc3RvcmlqYXQga29uZmlndXJhY2lvbmUgc3RhdmtlIChvYnJudXQgcmVkb3NsZWQpIHUgaW50ZXJmZWpzdSBvcGVyYXRlcmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnSWRlbnRpZmlrYXRvciB6YSBrb25maWd1cmFjaW9udSBzdGF2a3UsIG5wci4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFBvZHJhenVtZXZhbm8gamUgQ29uZmlnSXRlbSMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIHNlYXJjaC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJpZ2dlcnMgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgYXV0b21hdGljYWxseS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hpY2ggZ2VuZXJhbCBpbmZvcm1hdGlvbiBpcyBzaG93biBpbiB0aGUgaGVhZGVyLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ2tsYXNhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ2dsb2JhbG5vJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAncG9zdC1wcm9kdWtjaWphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICdwcmUtcHJvZHVrY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcm9kdWN0aXZlJ30gPSAncHJvZHVrY2lqYSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+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+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ05hbG9nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICdBZG1pbmlzdHJhY2lqYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICdJbnRlcmZlanMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnS2xpamVudHNraSBzZXJ0aWZpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnVGlwIHNhZHLFvmFqYSc7CiAgICAkU2VsZi0+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+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnQmVzcGxhdG5pICoqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgTW9kZWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUgV2VpZ2h0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSWRlbnRpdHkgYW5kIEFjY2VzcyBNYW5hZ2VtZW50IChJQU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnS2V5Ym9hcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJyc7CiAgICAkU2VsZi0+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+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydab29tIHZpZXcnfSA9ICdGb2t1c3Z5JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXIKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyBwZXIgcGFnZSd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXRlciBwZXIgc2lkYSc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGNvbmZpZyBpdGVtIGRhdGEgZm91bmQuJ30gPSAnSW5nYSBkYXRhIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgaGl0dGFkZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGlzIGNvbmZpZyBpdGVtJ30gPSAnVsOkbGogZGV0dGEga29uZmlndXJhdGlvbnNvYmpla3QnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICdVdGbDtnIgc8O2a25pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnU8O2ayDDpHZlbiBpIHRpZGlnYXJlIHZlcnNpb25lcj8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyBmw7ZyIENvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwdGggTGV2ZWwnfSA9ICdEanVwbml2w6UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWm9vbSBJbi9PdXQnfSA9ICdab29tYSBpbi91dCc7CiAgICAkU2VsZi0+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+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAnRmVsIHZpZCBzeW5rcm9uaXNlcmluZyBhdiBkZWZpbml0aW9uZXJuYS4gVsOkbmxpZ2VuIGtvbnRyb2xsZXJhIGxvZ2dlbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICdEdSBoYXIgSVRTTUNvbmZpZ0l0ZW0tZGVmaW5pdGlvbmVyIHNvbSBpbnRlIMOkciBzeW5rcm9uaXNlcmFkZS4gVsOkbmxpZ2VuIGRpc3RyaWJ1ZXJhIGRpbmEgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pc2thIGbDpGx0w6RuZHJpbmdhci4nOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ0zDtnB0IHV0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAnVW5kZXJow6VsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFnZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZXBlcmF0aW9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICdQZW5zaW9uZXJhZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfDlnZlcnN5bic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnw5Z2ZXJzaWt0IG9jaCBiZWtyw6RmdGVsc2UnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnSW1wb3J0ZXJhIGtsYXNzZXIvcm9sbGVyIG9jaCBkZXJhcyByZWxhdGVyYWRlIGbDpGx0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnRXR0IGZlbCBpbnRyw6RmZmFkZSB1bmRlciBrbGFzc2ltcG9ydGVuLic7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcwIC0gRG9sZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0gVmlzYXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGzDpXRlciB1dMO2a2FkZSBzw7ZrdmlsbGtvciB2aWQgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuIE1lZCBkZW4gaMOkciBmdW5rdGlvbmVuIGthbiBkdSB0LmV4LiBzw7ZrYSBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdGV0cyBuYW1uIG1lZCB2aWxsa29yIGF2IHR5cGVuICIoKmtleTEqJiYqa2V5MiopIiBlbGxlciAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ1RpbGzDpXRlciB1dMO2a2FkZSBzw7ZrdmlsbGtvciB2aWQgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4gTWVkIGRlbiBow6RyIGZ1bmt0aW9uZW4ga2FuIGR1IHQuZXguIHPDtmthIGVmdGVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIG5hbW4gbWVkIHZpbGxrb3IgYXYgdHlwZW4gIigqa2V5MSomJiprZXkyKikiIGVsbGVyICIoKmtleTEqfHwqa2V5MiopIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnVGlsbGRlbGFkZSBDSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnQ0k6cyBzb20gdGlsbGRlbGF0cyBrdW5kZsO2cmV0YWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICdDSTplciBzb20gdGlsbGRlbGF0cyBrdW5kYW52w6RuZGFyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnQ01EQi1pbnN0w6RsbG5pbmdhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnU8O2ayBlZnRlciBldHQgdW5pa3QgbmFtbiBlbmRhc3QgaW5vbSBzYW1tYSBDb25maWdJdGVtLWtsYXNzICgiY2xhc3MiKSBlbGxlciBnbG9iYWx0ICgiZ2xvYmFsIiksIHZpbGtldCBpbm5lYsOkciBhdHQgdmFyamUgYmVmaW50bGlndCBDb25maWdJdGVtIHRhcyBtZWQgaSBiZXLDpGtuaW5nZW4gbsOkciBtYW4gbGV0YXIgZWZ0ZXIgZHViYmxldHRlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBuYW1pbmcgc2NoZW1lLid9ID0gJ1bDpGxqIGVuIG1vZHVsIGbDtnIgYXR0IGdlbm9tZHJpdmEgZXR0IG5hbW5naXZuaW5nc3NjaGVtYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ1bDpGxqIGVuIG1vZHVsIGbDtnIgYXR0IHZlcmtzdMOkbGxhIGV0dCBudW1tZXJzeXN0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgdmVyc2lvbiBzdHJpbmcgc2NoZW1lLid9ID0gJ1bDpGxqIGVuIG1vZHVsIGbDtnIgYXR0IGdlbm9tZHJpdmEgZXR0IHN5c3RlbSBtZWQgdmVyc2lvbnNzdHLDpG5nYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhdHRyaWJ1dGVzIHRvIHRyaWdnZXIgdGhlIGNyZWF0aW9uIG9mIGEgbmV3IHZlcnNpb24uJ30gPSAnVsOkbGogYXR0cmlidXQgZsO2ciBhdHQgdXRsw7ZzYSBza2FwYW5kZXQgYXYgZW4gbnkgdmVyc2lvbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnVsOkbGoga2F0ZWdvcmllciBzb20gc2thIHRpbGxkZWxhcyBkZW5uYSBrbGFzcyBhdiBrb25maWd1cmF0aW9uc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sb3IgZGVmaW5pdGlvbnMgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW4gY29uZmlnIGl0ZW0gZmlsdGVycyBmb3IgQ29uZmlnSXRlbSBPdmVydmlldy4nfSA9ICdLb2x1bW5maWx0ZXIgZsO2ciBDb25maWdJdGVtLW9iamVrdCBmw7ZyIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICdLb2x1bW5lciBzb20ga2FuIGZpbHRyZXJhcyBpIMO2dmVyc2lrdGVuIMO2dmVyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0LiBPYnNlcnZlcmE6IEVuZGFzdCBDb25maWcgSXRlbS1hdHRyaWJ1dCBvY2ggZHluYW1pc2thIGbDpGx0IChEeW5hbWljRmllbGRfTmFtZVgpIMOkciB0aWxsw6V0bmEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtcyd9ID0gJ0tvbmZpZ3VyYXRpb25zZW5oZXRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAnTMOkZ2cgdGlsbCBrb25maWd1cmVyaW5nc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICdSZWRpZ2VyYSBrb25maWd1cmVyaW5nc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLb25maWd1cmVyaW5nc29iamVrdCBmw7ZyIGjDpG5kZWxzZW1vZHVsIHNvbSBtw7ZqbGlnZ8O2ciBsb2dnbmluZyB0aWxsIGhpc3RvcmlrIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCB1cGRhdGVzIGNvbmZpZyBpdGVtcyB0byB0aGVpciBjdXJyZW50IGRlZmluaXRpb24uJ30gPQogICAgICAgICdIw6RuZGVsc2Vtb2R1bCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IHNvbSB1cHBkYXRlcmFyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gdGlsbCBkZXJhcyBha3R1ZWxsYSBkZWZpbml0aW9uLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBoaXN0b3J5Lid9ID0gJ0tvbmZpZ3VyZXJhciBhcnRpa2VsaGlzdG9yaWsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJ1V0c2tyaWZ0IGF2IGtvbmZpZ3VyZXJpbmdzb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJ0tvbmZpZ3VyZXJhIHpvb20gZsO2ciBvYmpla3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAnS29uZmlnSXRlbSB0csOkZHZ5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0tvbmZpZ0l0ZW0gVmVyc2lvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyBvZiB0aGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBhdiBmw7ZsamFuZGUga2xhc3NlciBrb21tZXIgaW50ZSBhdHQgbGFncmFzIHDDpSBFbGFzdGljc2VhcmNoLXNlcnZlcm4uIE9tIGR1IHZpbGwgdGlsbMOkbXBhIGRldHRhIHDDpSBiZWZpbnRsaWdhIENJIG3DpXN0ZSBDSS1taWdyZXJpbmdlbiBrw7ZyYXMgdmlhIGtvbnNvbGVuIGVmdGVyIGF0dCBkdSBoYXIgw6RuZHJhdCBkZXR0YSBhbHRlcm5hdGl2Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtcyB3aXRoIHRoZSBmb2xsb3dpbmcgZGVwbG95bWVudCBzdGF0ZXMgd2lsbCBub3QgYmUgc3RvcmVkIG9uIHRoZSBFbGFzdGljc2VhcmNoIHNlcnZlci4gVG8gYXBwbHkgdGhpcyB0byBleGlzdGluZyBDSXMsIHRoZSBDSSBtaWdyYXRpb24gaGFzIHRvIGJlIHJ1biB2aWEgY29uc29sZSwgYWZ0ZXIgY2hhbmdpbmcgdGhpcyBvcHRpb24uJ30gPQogICAgICAgICdDb25maWdJdGVtcyBtZWQgZsO2bGphbmRlIGRyaWZ0c8OkdHRuaW5nc3N0YXR1cyBrb21tZXIgaW50ZSBhdHQgbGFncmFzIHDDpSBFbGFzdGljc2VhcmNoLXNlcnZlcm4uIEbDtnIgYXR0IHRpbGzDpG1wYSBkZXR0YSBww6UgYmVmaW50bGlnYSBDSSBtw6VzdGUgQ0ktbWlncmVyaW5nZW4ga8O2cmFzIHZpYSBrb25zb2xlbiBlZnRlciBhdHQgZGV0dGEgYWx0ZXJuYXRpdiBoYXIgw6RuZHJhdHMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ0JlZ3LDpG5zbmluZyBrb25maWd1cmF0aW9uc2VuaGV0ZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ0tvbmZpZ3VyYXRpb24gQXJ0aWtlbGdyw6RucyBwZXIgc2lkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJ0RhdGFiYXMgZsO2ciBrb25maWd1cmF0aW9uc2hhbnRlcmluZy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJ0tvbmZpZ3VyYXRpb25zb2JqZWt0IGJ1bGttb2R1bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBiYWNrZW5kIHJvdXRlciBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnS29uZmlndXJhdGlvbnNvYmpla3Qgc8O2ayBiYWNrZW5kLXJvdXRlciBmw7ZyIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnU2thcGEgb2NoIGhhbnRlcmEgZGVmaW5pdGlvbmVyIGbDtnIga29uZmlndXJhdGlvbnNlbmhldGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnU2thcGFyIGJpbGpldHRlciBmw7ZyIENvbmZpZ0l0ZW1zIHZpZCBzcGVjaWZpa2EgdGlkcHVua3Rlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnS3VuZGVybmEga2FuIHNlIGhpc3Rvcmlza2EgQ0ktdmVyc2lvbmVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdLdW5kZXJuYSBoYXIgbcO2amxpZ2hldCBhdHQgbWFudWVsbHQgdsOkeGxhIG1lbGxhbiBoaXN0b3Jpc2thIENJLXZlcnNpb25lci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYSBhbnbDpG5kYXMgcMOlIGF0dHJpYnV0ZXQgZsO2ciBzw7Zrc2vDpHJtZW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdC4gRXhlbXBlbDogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdTdGFuZGFyZGRhdGEgc29tIHNrYSBhbnbDpG5kYXMgcMOlIGF0dHJpYnV0IGbDtnIgc8O2a3Nrw6RybWVuIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QuIEV4ZW1wZWw6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICdEZWZpbmllcmEgw6V0Z8OkcmRlciBkw6RyIGVuIGluc3TDpGxsbmluZ3NrbmFwcCDDpHIgdGlsbGfDpG5nbGlnIGkgd2lkZ2V0ZW4gZsO2ciBsw6Rua2FkZSBvYmpla3QgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gT2JzZXJ2ZXJhIGF0dCBkZXNzYSDDpXRnw6RyZGVyIG3DpXN0ZSBoYSByZWdpc3RyZXJhdCBmw7ZsamFuZGUgSlMtIG9jaCBDU1MtZmlsZXI6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIG9jaCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdEZWZpbmllcmEgZXR0IFRlbXBsYXRlOjpUb29sa2l0LXNjaGVtYSBmw7ZyIHZlcnNpb25zc3Ryw6RuZ2FyLiBBbnbDpG5kcyBlbmRhc3Qgb20gVmVyc2lvbiBTdHJpbmcgTW9kdWxlIMOkciBpbnN0w6RsbGQgcMOlIFRlbXBsYXRlVG9vbGtpdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYSBlbiB1cHBzw6R0dG5pbmcgdmlsbGtvciB1bmRlciB2aWxrYSBlbiBrdW5kIGbDpXIgc2UgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0LiBWaWxsa29yZW4ga2FuIGV2ZW50dWVsbHQgYmVncsOkbnNhcyB0aWxsIHZpc3NhIGt1bmRncnVwcGVyLiBOYW1uIMOkciBkZXQgZW5kYSBvYmxpZ2F0b3Jpc2thIGF0dHJpYnV0ZXQuIE9tIGluZ2EgYW5kcmEgYWx0ZXJuYXRpdiBhbmdlcyBrb21tZXIgYWxsYSBrb25maWd1cmF0aW9uc29iamVrdCBhdHQgdmFyYSBzeW5saWdhIHVuZGVyIGRlbiBrYXRlZ29yaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZGVsZXRlIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG7DtmR2w6RuZGlnYSBiZWjDtnJpZ2hldGVyIGbDtnIgYXR0IHRhIGJvcnQgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBtZWQgaGrDpGxwIGF2IGRldCBnZW5lcmlza2EgZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgbsO2ZHbDpG5kaWdhIGJlaMO2cmlnaGV0ZXIgZsO2ciBhdHQgaMOkbXRhIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgbWVkIGhqw6RscCBhdiBkZXQgZ2VuZXJpc2thIGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG7DtmR2w6RuZGlnYSBiZWjDtnJpZ2hldGVyIGbDtnIgYXR0IHPDtmthIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgbWVkIGhqw6RscCBhdiBkZXQgZ2VuZXJpc2thIGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG7DtmR2w6RuZGlnYSBiZWjDtnJpZ2hldGVyIGbDtnIgYXR0IHN0w6RsbGEgaW4gSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBtZWQgaGrDpGxwIGF2IGRldCBnZW5lcmlza2EgZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnRGVmaW5pZXJhciBlbiDDtnZlcnNpa3RzbW9kdWwgc29tIHZpc2FyIGRlbiBsaWxsYSB2eW4gYXYgZW4gbGlzdGEgbWVkIGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICdEZWZpbmllcmFyIG9tIGzDpG5rdHlwZW5zIGV0aWtldHRlciBtw6VzdGUgdmlzYXMgaSBub2RhbnNsdXRuaW5nYXJuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgcmVndWxqw6RyYSB1dHRyeWNrIGluZGl2aWR1ZWxsdCBmw7ZyIHZhcmplIENvbmZpZ0l0ZW0ta2xhc3MgZsO2ciBhdHQga29udHJvbGxlcmEgQ29uZmlnSXRlbS1uYW1uZXQgb2NoIHZpc2EgbW90c3ZhcmFuZGUgZmVsbWVkZGVsYW5kZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBkZSB0aWxsZ8OkbmdsaWdhIGtvbHVtbmVybmEgZsO2ciBDSTplciBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIMO2dmVyc2lrdCBiZXJvZW5kZSBww6UgQ0kta2xhc3Nlbi4gVmFyamUgcG9zdCBtw6VzdGUgYmVzdMOlIGF2IGV0dCBrbGFzc25hbW4gb2NoIGVuIG1hdHJpcyBtZWQgdGlsbGfDpG5nbGlnYSBmw6RsdCBmw7ZyIG1vdHN2YXJhbmRlIGtsYXNzLiBEeW5hbWlza2EgZsOkbHRwb3N0ZXIgbcOlc3RlIGbDtmxqYSBzY2hlbWF0IER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHN0YW5kYXJkYXR0cmlidXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGbDtnIgc29ydGVyaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgc8O2a3Jlc3VsdGF0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmRhdHRyaWJ1dGV0IGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgZsO2ciBzb3J0ZXJpbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBzw7ZrcmVzdWx0YXRldCBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZGF0dHJpYnV0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBmw7ZyIHNvcnRlcmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIHJlc3VsdGF0ZXQgYXYgc8O2a25pbmdlbiBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGRlbm5hIMOldGfDpHJkLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZG9yZG5pbmdlbiBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgc8O2a3Jlc3VsdGF0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4gVXBwOiDDpGxkc3QgcMOlIHRvcHBlbi4gTmVyOiBkZXQgc2VuYXN0ZSDDtnZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzdGFuZGFyZG9yZG5pbmdlbiBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgc8O2a3Jlc3VsdGF0ZXQgZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0LiBVcHA6IMOkbGRzdCDDtnZlcnN0LiBOZXI6IGRlbiBzZW5hc3RlIMO2dmVyc3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmRvcmRuaW5nZW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCBpIHJlc3VsdGF0ZXQgYXYgc8O2a25pbmdlbiBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGRlbiBow6RyIMOldGfDpHJkZW4uIFVwcDogw6RsZHN0IMO2dmVyc3QuIE5lcjogc2VuYXN0ZSDDtnZlcnN0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBkZSBrb2x1bW5lciBzb20gdmlzYXMgc29tIHN0YW5kYXJkIGbDtnIgQ0k6ZXIgaSBrb25maWd1cmF0aW9uc29iamVrdGV0cyDDtnZlcnNpa3QgYmVyb2VuZGUgcMOlIENJLWtsYXNzZW4uIFZhcmplIHBvc3QgbcOlc3RlIGJlc3TDpSBhdiBldHQga2xhc3NuYW1uIG9jaCBlbiBtYXRyaXMgbWVkIHRpbGxnw6RuZ2xpZ2EgZsOkbHQgZsO2ciBtb3RzdmFyYW5kZSBrbGFzcy4gRHluYW1pc2thIGbDpGx0cG9zdGVyIG3DpXN0ZSBmw7ZsamEgc2NoZW1hdCBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdEZWZpbmllcmFyIGRldCBzdGFuZGFyZGRqdXAgZsO2ciByZWxhdGlvbmVyIHNvbSBza2EgdmlzYXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmRhdHRyaWJ1dGV0IGbDtnIgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3Qgc29tIHZpc2FzIGbDtnIgc2vDpHJtZW4gZsO2ciBzw7ZrbmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmRhdHRyaWJ1dGV0IGbDtnIgc8O2a25pbmcgYXYga29uZmlndXJhdGlvbnNvYmpla3Qgc29tIHZpc2FzIHDDpSBza8Okcm1lbiBmw7ZyIHPDtmtuaW5nIGF2IGtvbmZpZ3VyYXRpb25zb2JqZWt0LiBFeGVtcGVsOiAiS2V5IiBtw6VzdGUgaGEgbmFtbmV0IHDDpSBkZXQgZHluYW1pc2thIGbDpGx0ZXQgaSBkZXQgaMOkciBmYWxsZXQgIlgiLCAiQ29udGVudCIgbcOlc3RlIGhhIHbDpHJkZXQgcMOlIGRldCBkeW5hbWlza2EgZsOkbHRldCBiZXJvZW5kZSBww6UgdHlwZW4gYXYgZHluYW1pc2t0IGbDpGx0LCBUZXh0OiAiYSB0ZXh0IiwgRHJvcGRvd246ICIxIiwgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgb2NoIGVsbGVyIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc3RhbmRhcmR1bmRlcm9iamVrdGV0IGbDtnIga2xhc3NlbiBcJ0lUU01Db25maWdJdGVtXCcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdEZWZpbmllcmFyIGRlIHRpbGxnw6RuZ2xpZ2Ega29sdW1uZXJuYSBmw7ZyIENJOmVyIGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgw7Z2ZXJzaWt0IGJlcm9lbmRlIHDDpSBDSS1rbGFzc2VuLiBWYXJqZSBwb3N0IG3DpXN0ZSBiZXN0w6UgYXYgZXR0IGtsYXNzbmFtbiBvY2ggZW4gbWF0cmlzIG1lZCB0aWxsZ8OkbmdsaWdhIGbDpGx0IGbDtnIgbW90c3ZhcmFuZGUga2xhc3MuIER5bmFtaXNrYSBmw6RsdHBvc3RlciBtw6VzdGUgZsO2bGphIHNjaGVtYXQgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgaGVpZ2h0IGZvciB0aGUgcmljaCB0ZXh0IGVkaXRvciBjb21wb25lbnQgZm9yIHRoaXMgc2NyZWVuLiBFbnRlciBudW1iZXIgKHBpeGVscykgb3IgcGVyY2VudCB2YWx1ZSAocmVsYXRpdmUpLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBow7ZqZGVuIGbDtnIgcmVkaWdlcmluZ3Nrb21wb25lbnRlbiBmw7ZyIHJpayB0ZXh0IGbDtnIgZGVuIGjDpHIgc2vDpHJtZW4uIEFuZ2UgYW50YWwgKHBpeGxhcikgZWxsZXIgcHJvY2VudHbDpHJkZSAocmVsYXRpdnQpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbmdlciBhbnRhbCByYWRlciBmw7ZyIEtFLWVkaXRvcm4gaSBhZG1pbmdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgb3JkbmluZ3Nmw7ZsamRlbiBmw7ZyIGluY2lkZW50dGlsbHN0w6VuZCBmcsOlbiBow7ZnICh0LmV4LiBjcmljaXRhbCkgdGlsbCBsw6VnICh0LmV4LiBmdW5jdGlvbmFsKS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICdEZWZpbmllcmFyIGRlIHJlbGV2YW50YSBkcmlmdHPDpHR0bmluZ3NzdGF0dXNhciBkw6RyIGzDpG5rYWRlIMOkcmVuZGVuIGthbiBww6V2ZXJrYSBzdGF0dXNlbiBmw7ZyIGV0dCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcmFyIHPDtmtncsOkbnNlbiBmw7ZyIHNrw6RybWVuIEFnZW50SVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBzw7ZrZ3LDpG5zZW4gZsO2ciBza8Okcm1lbiBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBDdXN0b21lcklUU01Db25maWdJdGVtIHNjcmVlbi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgc8O2a2dyw6Ruc2VuIGbDtnIgc2vDpHJtZW4gQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdEZWZpbmllcmFyIHPDtmtncsOkbnNlbiBmw7ZyIHNrw6RybWVuIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgZGUga29sdW1uZXIgc29tIHZpc2FzIGbDtnIgQ0kgaSBkZW4ga29tcGxleGEgdnluIGbDtnIgbMOkbmt0YWJlbGxlbiBmw7ZyIGFsbGEgQ0kta2xhc3Nlci4gT20gZGV0IGludGUgZmlubnMgbsOlZ29uIHBvc3QgdmlzYXMgc3RhbmRhcmRrb2x1bW5lcm5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnRGVmaW5pZXJhciBkZSBrb2x1bW5lciBzb20gdmlzYXMgZsO2ciBDSSBpIGRlbiBrb21wbGV4YSB2eW4gZsO2ciBsw6Rua3RhYmVsbGVuLCBiZXJvZW5kZSBww6UgQ0kta2xhc3MuIFZhcmplIHBvc3QgbcOlc3RlIGlubGVkYXMgbWVkIGtsYXNzbmFtbmV0IG9jaCBkdWJibGEga29sb24gKHQuZXguIENvbXB1dGVyOjopLiBEZXQgZmlubnMgZXR0IGbDpXRhbCBDSS1hdHRyaWJ1dCBzb20gw6RyIGdlbWVuc2FtbWEgZsO2ciBhbGxhIENJIChleGVtcGVsIGbDtnIga2xhc3NlbiBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gRsO2ciBhdHQgdmlzYSBlbnNraWxkYSBDSS1hdHRyaWJ1dCBzb20gZGVmaW5pZXJhcyBpIENJLWRlZmluaXRpb25lbiBtw6VzdGUgZsO2bGphbmRlIHNjaGVtYSBhbnbDpG5kYXMgKGV4ZW1wZWwgZsO2ciBrbGFzc2VuIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIE9tIGRldCBpbnRlIGZpbm5zIG7DpWdvbiBwb3N0IGbDtnIgZW4gQ0kta2xhc3MgdmlzYXMgc3RhbmRhcmRrb2x1bW5lcm5hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgZm9yIFwnQWN0aW9uXCcgaW4gdGhpcmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgdmlsa2Egb2JqZWt0IHNvbSDDpHIgdGlsbGfDpG5nbGlnYSBmw7ZyICJBY3Rpb24iIGkgZGVuIHRyZWRqZSBuaXbDpW4gaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgdmlsa2Egb2JqZWt0IHNvbSDDpHIgdGlsbGfDpG5nbGlnYSBpIGRlbiBmw7Zyc3RhIG5pdsOlbiBpIElUU00gQ29uZmlnIEl0ZW0gQUNMLXN0cnVrdHVyZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0RlZmluaWVyYXIgdmlsa2Egb2JqZWt0IHNvbSDDpHIgdGlsbGfDpG5nbGlnYSBpIGRlbiBhbmRyYSBuaXbDpW4gaSBJVFNNIENvbmZpZyBJdGVtIEFDTC1zdHJ1a3R1cmVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHZpbGtlbiB0eXAgYXYgbMOkbmsgKG5hbW5naXZlbiB1ciBldHQgw6RyZW5kZXBlcnNwZWt0aXYpIHNvbSBrYW4gcMOldmVya2Egc3RhdHVzZW4gZsO2ciBldHQgbMOkbmthdCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdEZWZpbmllcmFyIHZpbGtlbiB0eXAgYXYgw6RyZW5kZSBzb20ga2FuIHDDpXZlcmthIHN0YXR1c2VuIGbDtnIgZXR0IGzDpG5rYXQgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnRGVmaW5pdGlvbiBVcHBkYXRlcmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWxldGUgQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAnVGEgYm9ydCBrb25maWd1cmF0aW9uc29iamVrdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsU3RhdGUnfSA9ICdEZXBsU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBDb2xvcid9ID0gJ0RlcGxveW1lbnQgU3RhdGUgRsOkcmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ0R1cGxpY2VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0jDpG5kZWxzZW1vZHVsIGbDtnIgZHluYW1pc2thIGbDpGx0IHNvbSBtYXJrZXJhciBrb25maWd1cmF0aW9uc29iamVrdGRlZmluaXRpb25lciBzb20gb3N5bmtyb25pc2VyYWRlIG9tIGRlIGlubmVow6VsbGVyIGR5bmFtaXNrYSBmw6RsdCBzb20gw6RuZHJhcy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0R5bmFtaXNrYSBmw6RsdCBzb20gdmlzYXMgcMOlIHNrw6RybWVuIGbDtnIgeXR0ZXJsaWdhcmUgSVRTTS1mw6RsdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2thIGbDpGx0IHNvbSB2aXNhcyBww6Ugc2vDpHJtZW4gZsO2ciDDtnZlcnNpa3QgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnRHluYW1pc2thIGbDpGx0IHNvbSB2aXNhcyBww6Ugc2vDpHJtZW4gZsO2ciBzw7ZrbmluZyBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnQWt0aXZlcmFyIGZ1bmt0aW9uZW4gZsO2ciBtYXNzw6V0Z8OkcmRlciBmw7ZyIGtvbmZpZ3VyYXRpb25zb2JqZWt0IHPDpSBhdHQgYWdlbnRlbnMgZnJvbnRlbmQga2FuIGFyYmV0YSBtZWQgbWVyIMOkbiBldHQga29uZmlndXJhdGlvbnNvYmpla3Qgw6V0IGfDpW5nZW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICdBa3RpdmVyYXIgZnVua3Rpb25lbiBmw7ZyIG1hc3PDpXRnw6RyZGVyIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3QgZW5kYXN0IGbDtnIgZGUgZ3J1cHBlciBzb20gYW5nZXMgaSBsaXN0YW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FrdGl2ZXJhci9pbmFrdGl2ZXJhciBmdW5rdGlvbmVuIGbDtnIgYXR0IGtvbnRyb2xsZXJhIGF0dCBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGhhciB1bmlrYSBuYW1uLiBJbm5hbiBkdSBha3RpdmVyYXIgZGV0IGjDpHIgYWx0ZXJuYXRpdmV0IGLDtnIgZHUga29udHJvbGxlcmEgb20gZGV0IHJlZGFuIGZpbm5zIGtvbmZpZ3VyYXRpb25zb2JqZWt0IG1lZCBkdWJibGEgbmFtbiBpIHN5c3RlbWV0LiBEdSBrYW4gZ8O2cmEgZGV0dGEgbWVkIGtvbnNvbGtvbW1hbmRvdCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0jDpG5kZWxzZW1vZHVsIGbDtnIgYXR0IHPDpHR0YSBjb25maWdpdGVtLXN0YXR1cyBww6UgdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnRsOkbHQgaSBrb25maWd1cmF0aW9uc29iamVrdGV0cyBpbmRleCBzb20gYW52w6RuZHMgZsO2ciBmdWxsdGV4dHPDtmtuaW5nLiBGw6RsdCBsYWdyYXMgb2Nrc8OlLCBtZW4gw6RyIGludGUgb2JsaWdhdG9yaXNrYSBmw7ZyIGRlbiDDtnZlcmdyaXBhbmRlIGZ1bmt0aW9uYWxpdGV0ZW4uIElua2x1ZGVyaW5nIGF2IGJpbGFnb3Iga2FuIGluYWt0aXZlcmFzIGdlbm9tIGF0dCBzw6R0dGEgcG9zdGVuIHRpbGwgMCBlbGxlciByYWRlcmEgZGVuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnRsOkbHQgc29tIGxhZ3JhcyBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIGluZGV4IG9jaCBzb20gYW52w6RuZHMgZsO2ciBhbmRyYSBzYWtlciDDpG4gZnVsbHRleHRzw7ZrbmluZy4gRsO2ciBmdWxsc3TDpG5kaWcgZnVua3Rpb25hbGl0ZXQgw6RyIGFsbGEgZsOkbHQgb2JsaWdhdG9yaXNrYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICdGw7ZyIHZhcmplIHdlYmJ0asOkbnN0IChueWNrZWwpIGthbiBlbiBhcnJheSBhdiBrbGFzc2VyICh2w6RyZGUpIGRlZmluaWVyYXMgZsO2ciB2aWxrYSBpbXBvcnRlbiDDpHIgYmVncsOkbnNhZC4gRsO2ciBhbGxhIHZhbGRhIGtsYXNzZXIsIGVsbGVyIGFsbGEgYmVmaW50bGlnYSBrbGFzc2VyLCBtw6VzdGUgZGUgaWRlbnRpZmllcmFuZGUgYXR0cmlidXRlbiB2w6RsamFzIGkga29uZmlndXJhdGlvbmVuIGF2IGludm9rZXJuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCBmw7ZyIENvbmZpZ0l0ZW1GZXRjaC1pbmthbGxuaW5nc2xhZ3JldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdSZWdpc3RyZXJpbmcgYXYgR2VuZXJpY0ludGVyZmFjZS1tb2R1bCBmw7ZyIENvbmZpZ0l0ZW1GZXRjaC1pbmthbGxuaW5nc2xhZ3JldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnUmVnaXN0cmVyaW5nIGF2IEdlbmVyaWNJbnRlcmZhY2UtbW9kdWwgZsO2ciBDb25maWdJdGVtRmV0Y2gtaW5rYWxsbmluZ3NsYWdyZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gS29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ8OWdmVyc2lrdCDDtnZlciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0jDpG5kZWxzZVN0YXR1cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5rbHVkZXJhciBkcmlmdHPDpHR0bmluZ3NzdGF0dXNhciBpIHPDtmtuaW5nZW4gZWZ0ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBrdW5kZ3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5rbHVkZXJhciBpbmNpZGVudHN0YXR1c2FyIGkgc8O2a25pbmdlbiBlZnRlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdNYXhpbWFsdCBhbnRhbCBrb25maWd1cmF0aW9uc29iamVrdCBzb20gc2thIHZpc2FzIGkgcmVzdWx0YXRldCBhdiBkZW5uYSDDpXRnw6RyZC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICdNb2R1bCBmw7ZyIGF0dCBrb250cm9sbGVyYSB2aWxrZW4gZ3J1cHAgc29tIMOkciBhbnN2YXJpZyBmw7ZyIGVuIGtsYXNzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsIGbDtnIgYXR0IGtvbnRyb2xsZXJhIHZpbGtlbiBncnVwcCBzb20gw6RyIGFuc3ZhcmlnIGbDtnIgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsIGbDtnIgYXR0IGdlbmVyZXJhIHN0YXRpc3RpayDDtnZlciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ05hbW4gTW9kdWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ051bW1lciBNb2R1bCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBbnRhbCBrb25maWd1cmF0aW9uc29iamVrdCBzb20gc2thIHZpc2FzIHDDpSB2YXJqZSBzaWRhIGkgZXR0IHPDtmtyZXN1bHRhdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQW50YWwga29uZmlndXJhdGlvbnNvYmpla3Qgc29tIHNrYSB2aXNhcyBww6UgdmFyamUgc2lkYSBhdiBldHQgc8O2a3Jlc3VsdGF0IGkga3VuZGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJ09iamVrdCBhdHQgc8O2a2EgZWZ0ZXIsIGh1ciBtw6VuZ2EgcG9zdGVyIG9jaCB2aWxrYSBhdHRyaWJ1dCBzb20gc2thIHZpc2FzLiBDb25maWdJdGVtLWF0dHJpYnV0IG3DpXN0ZSB1dHRyeWNrbGlnZW4gbGFncmFzIHZpYSBFbGFzdGljc2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICfDlnZlcnNpa3QuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIga2F0ZWdvcmllcm5hIGbDtnIga2xhc3NlciBhdiBrb25maWd1cmF0aW9uc29iamVrdCBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIga29sdW1uZmlsdHJlbiBpIGRlbiBsaWxsYSDDtnZlcnNpa3RlbiDDtnZlciBrb25maWd1cmF0aW9uc29iamVrdC4gT2JzZXJ2ZXJhOiBvbSBkdSBhbmdlciAiQWN0aXZlIiB0aWxsIDAgZsO2cmhpbmRyYXMgZW5kYXN0IGhhbmRsw6RnZ2FyZSBmcsOlbiBhdHQgcmVkaWdlcmEgaW5zdMOkbGxuaW5nYXIgZsO2ciBkZW5uYSBncnVwcCBpIHNpbmEgcGVyc29ubGlnYSBpbnN0w6RsbG5pbmdhciwgbWVuIGFkbWluaXN0cmF0w7ZyZXIga2FuIGZvcnRmYXJhbmRlIHJlZGlnZXJhIGluc3TDpGxsbmluZ2FybmEgZsO2ciBlbiBhbm5hbiBhbnbDpG5kYXJlcyByw6RrbmluZy4gQW52w6RuZCAiUHJlZmVyZW5jZUdyb3VwIiBmw7ZyIGF0dCBzdHlyYSBpIHZpbGtldCBvbXLDpWRlIGRlc3NhIGluc3TDpGxsbmluZ2FyIHNrYSB2aXNhcyBpIGFudsOkbmRhcmdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgZsOkcmdlbiBmw7ZyIGRyaWZ0c8OkdHRuaW5nc3N0YXR1cyBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgZHJpZnRzw6R0dG5pbmdzdGlsbHN0w6VuZCBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIGV4ZW1wZWwgcMOlIGJlaMO2cmlnaGV0c2VncnVwcGVyIGkgZ3J1bmRrYXRhbG9nZW5zIGF0dHJpYnV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBuYW1ubW9kdWxlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgbnVtbWVybW9kdWxlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ1BhcmFtZXRyYXIgZsO2ciBzaWRvcm5hIChkw6RyIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZW4gdmlzYXMpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdQYXJhbWV0cmFyIGbDtnIgbW9kdWxlbiB2ZXJzaW9uIHN0cmluZyBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGbDtnIgY29uZmlnIGl0ZW0gY2xhc3NlcyBpIHByZWZlcmVuc3Z5biBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnUGFyYW1ldHJhciBmw7ZyIHZlcnNpb25zdXRsw7ZzYXJlbiBmw7ZyIGtsYXNzZXIgYXYga29uZmlndXJhdGlvbnNvYmpla3QgaSBwcmVmZXJlbnN2eW4gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnVXRmw7ZyIGRlbiBrb25maWd1cmVyYWRlIMOldGfDpHJkZW4gZsO2ciB2YXJqZSBow6RuZGVsc2UgKHNvbSBlbiBJbnZva2VyKSBmw7ZyIHZhcmplIGtvbmZpZ3VyZXJhZCB3ZWJidGrDpG5zdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ0JlaMO2cmlnaGV0c2dydXBwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIMOldGfDpHJkZW4gQXR0YWNobWVudCBmw7ZyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc2vDpHJtZW4gSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc8O2a3Nrw6RybWVuIGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc8O2a3Nrw6RybWVuIGbDtnIgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGt1bmRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSB0csOkZHZ5biBmw7ZyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSB6b29tc2vDpHJtZW4gZsO2ciBJVFNNLWtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBMw6RnZyB0aWxsIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCBhbnbDpG5kYSBza8Okcm1lbiBmw7ZyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBidWxrIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc2vDpHJtZW4gUmVkaWdlcmEgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnQmVow7ZyaWdoZXQga3LDpHZzIGbDtnIgYXR0IGFudsOkbmRhIHNrw6RybWVuIEhpc3RvcmlrIMO2dmVyIElUU00ta29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdCZWjDtnJpZ2hldCBrcsOkdnMgZsO2ciBhdHQgYW52w6RuZGEgc2vDpHJtZW4gU2tyaXYgdXQgSVRTTS1rb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ0JlaMO2cmlnaGV0IGtyw6R2cyBmw7ZyIGF0dCB0YSBib3J0IGtvbmZpZ3VyYXRpb25zb2JqZWt0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1PDtmsgaSBrb25maWd1cmF0aW9uc29iamVrdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJ1N0w6RsbCBpbiBpbmNpZGVudHN0YXR1cyBmw7ZyIGV0dCBDSSBhdXRvbWF0aXNrdCBuw6RyIGVuIFRpY2tldCBsw6Rua2FzIHRpbGwgZXR0IENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0w6RsbGVyIGluIGRyaWZ0c8OkdHRuaW5nc3N0YXR1cyBpIGtvbmZpZ3VyYXRpb25zb2JqZWt0ZXRzIGJ1bGtza8Okcm0gaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1N0w6RsbGVyIGluIGluY2lkZW50c3RhdHVzIGkga29uZmlndXJhdGlvbnNvYmpla3RldHMgYnVsa3Nrw6RybSBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIHNvbSBnw7ZyIGRldCBtw7ZqbGlndCBhdHQgbMOkbmthIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCB0aWxsIGV0dCBhbm5hdCBvYmpla3QgaSB6b29tdnluIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3RldCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IGtvbW1hIMOldCBoaXN0b3Jpa2VuIGbDtnIgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgw7Z2ZXJzaWt0ZW4gw7Z2ZXIga29uZmlndXJhdGlvbnNvYmpla3QgaSBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQga29tbWEgw6V0IGhpc3RvcmlrZW4gZsO2ciBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSB6b29tdnluIGkgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGVuIGzDpG5rIGkgbWVueW4gZsO2ciBhdHQgdGEgYm9ydCBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSBkZXNzIHpvb212eSBhdiBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IHZpc2EgbMOkbmthcm5hIHRpbGwga29uZmlndXJhdGlvbnNvYmpla3RlbiBzb20gZW4gdHLDpGR2eS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IGR1cGxpY2VyYSBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSDDtnZlcnNpa3RlbiDDtnZlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCBkdXBsaWNlcmEgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0IGkgem9vbXZ5biBhdiBhZ2VudGdyw6Ruc3NuaXR0ZXQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IHJlZGlnZXJhIGV0dCBrb25maWd1cmF0aW9uc29iamVrdCBpIHpvb212eW4gYXYgYWdlbnRncsOkbnNzbml0dGV0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlzYXIgZW4gbMOkbmsgaSBtZW55biBmw7ZyIGF0dCBnw6UgdGlsbGJha2EgaSB6b29tdnluIGbDtnIga29uZmlndXJhdGlvbnNvYmpla3RldCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IHNrcml2YSB1dCBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSB6b29tdnluIGF2IGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaXNhciBlbiBsw6RuayBpIG1lbnluIGbDtnIgYXR0IHpvb21hIGluIHDDpSBldHQga29uZmlndXJhdGlvbnNvYmpla3QgaSDDtnZlcnNpa3RlbiDDtnZlciBrb25maWd1cmF0aW9uc29iamVrdCBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1Zpc2FyIGhpc3RvcmlrZW4gZsO2ciBrb25maWd1cmF0aW9uc29iamVrdCAob212w6RuZCBvcmRuaW5nKSBpIGFnZW50Z3LDpG5zc25pdHRldC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnRGVuIHN0YW5kYXJka2F0ZWdvcmkgc29tIHZpc2FzIG9tIGluZ2VuIGthdGVnb3JpIGhhciB2YWx0cy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0lkZW50aWZpZXJhcmVuIGbDtnIgZXR0IGtvbmZpZ3VyYXRpb25zb2JqZWt0LCB0LmV4LiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gU3RhbmRhcmR2w6RyZGV0IMOkciBDb25maWdJdGVtIy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ1V0bMO2c2VyIENvbmZpZ0l0ZW1GZXRjaC1pbmthbGxhcmVuIGF1dG9tYXRpc2t0Lic7CiAgICAkU2VsZi0+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+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJ0ludmVyc3RlcmluZ3Nrb3N0bmFkZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICdGYWt0dXJhbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAnVGFuZ2VudGJvcmQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnTENELW1vbml0b3IgKGZseXRhbmRlIGtyaXN0YWxsc2vDpHJtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVELW1vbml0b3IgKGxqdXNlbWl0dGVyYW5kZSBkaW9kKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICdGYXN0IHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnTGFwdG9wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnTGF0aXR1ZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0xhZ2VyIDE6IEZ5c2lza3QgbGFnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnTGFnZXIgMjogRGF0YWzDpG5rbGFnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ0xhZ2VyIDM6IE7DpHR2ZXJrc2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJ0xhZ2VyIDM6IE7DpHR2ZXJrc2xhZ2VyIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnTGFnZXIgNDogVHJhbnNwb3J0bGFnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ0xhZ2VyIDU6IFNlc3Npb25zbGFnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAnTGFnZXIgNjogUHJlc2VudGF0aW9uc2xhZ2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAnTGFnZXIgNzogQXBwbGlrYXRpb25zbGFnZXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnSHlyZXNhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpY2Vuc2F2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICdMaWNlbnNueWNrZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnVHlwIGF2IGxpY2Vucyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGljZW5zcGVyaW9kIGZyw6VuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAnTGljZW5zcGVyaW9kIHRpbGwgb2NoIG1lZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5J30gPSAnTGl0aXVtasOkcm5mb3NmYXRiYXR0ZXJpIChMaUZlUE80KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnTGl0aXVtam9uYmF0dGVyaSAoTGktaW9uKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ0zDpW5lYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ0JlbMOkZ2V0IGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnTG9uZ2l0dWQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICdUaWxsdmVya2FyZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAnTWF4aW1hbCBsYXN0a2FwYWNpdGV0IChXKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICdNaW5uZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ01pbm5lc3R5cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAnTWluaS1SYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdNb2JpbG51bW1lcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICdNb2JpbC9FbWJlZGRlZCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCd9ID0gJ01vZGVsbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJ01vZGVsbGJlc2tyaXZuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0b3JucyB1cHBsw7ZzbmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdG9ybnMgc3Rvcmxlayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ011cyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnTsOkdHZlcmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvJ30gPSAnTsOkdHZlcmtzaW5mb3JtYXRpb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ0luZm9ybWF0aW9uIG9tIG7DpHR2ZXJrZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ07DpHR2ZXJrc3NraWt0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1DYWRtaXVtIChOaUNkKSBCYXR0ZXJ5J30gPSAnTmlja2VsLWthZG1pdW1iYXR0ZXJpIChOaUNkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ05pY2tlbC1tZXRhbGxoeWRyaWRiYXR0ZXJpIChOaU1IKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICdBdnRhbCBvbSB0eXN0bmFkc3BsaWt0IChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnQW50ZWNrbmluZ3Nib2snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdBbnRhbCBwcm9jZXNzb3Jlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgUkFNIG1vZHVsZXMnfSA9ICdBbnRhbCBSQU0tbW9kdWxlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICdBbnRhbCBncmFmaWtrb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICdPTEVELW1vbml0b3IgKG9yZ2FuaXNrIGxqdXNlbWl0dGVyYW5kZSBkaW9kKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICdSw7ZyZWxzZWtvc3RuYWRlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICdCZXN0w6RsbG5pbmdzbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnQW5uYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ1V0Z8Olbmdhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4tS09EJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnUElOIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAnUFVLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyAyJ30gPSAnUFVLIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFydG5lcnNoaXAgQWdyZWVtZW50J30gPSAnUGFydG5lcnNrYXBzYXZ0YWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICdUZWxlZm9ubnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIFR5cGUnfSA9ICdUeXAgYXYgdGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0Z5c2lza2Ega8Okcm5vcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ1N0csO2bWbDtnJzw7Zyam5pbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIERvbWFpbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdXJjaGFzZWQgYXQnfSA9ICdLw7ZwdGEgcMOlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICdSYWNrZGp1cCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIFVuaXRzIChVKSd9ID0gJ1JhY2stZW5oZXRlciAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ1J1bSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS1rb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUy1jZXJ0aWZpa2F0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAnRsO2cnPDpGxqbmluZ3NhdnRhbCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYXRlbGxpdGUgUGhvbmUnfSA9ICdTYXRlbGxpdHRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnRsO2cnNlZ2xhdCBTTEEtYmF0dGVyaSAoTGVhZC1BY2lkKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJ1NlcmllbnVtbWVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ1Byb2dyYW12YXJhIGbDtnIgc2VydmVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAnU2VydmljZWF2dGFsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmljZSBUYWcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnVHlwIGF2IHV0dGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAnUHJvZ3JhbXZhcmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICdIw7ZndGFsYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ1N0YW5kYXJkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICdTdGFydCBJUC1hZHJlc3MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ0bDtnJ2YXJpbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdMYWdyaW5nc3BhcnRpdGlvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ0RvdHRlcmJvbGFnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1bW1hcnknfSA9ICdTYW1tYW5mYXR0bmluZyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ1R1bm4ga2xpZW50JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RocmVhZHMnfSA9ICdUcsOlZGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnQmxpeHRzbmFiYiBhbnNsdXRuaW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICdUb3RhbHQgUkFNLW1pbm5lIGbDtnIgZ3JhZmlra29ydCAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG90YWx0IFJBTS1taW5uZSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdNb25pdG9yIG1lZCBwZWtza8Okcm0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdUb3JuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0ItaHViYic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLWhlYWRzZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICdWaXJ0dWVsbCBsw6Ruayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnVm9JUC10ZWxlZm9uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICdXZWJia2FtZXJhJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydSdW4gU2VhcmNoJ30gPSAnVGFmdXRhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ1BpYSB0YWZ1dGEga2F0aWthIHRvbGVvIGxpbGlsb3BpdGE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0tpcGVuZ2VsZSBjaGEgVXNhbmlkaSc7CiAgICAkU2VsZi0+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+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnSW1laXNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ01hdGVuZ2VuZXpvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAnS3dhbnphJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdJbGl5b3Bhbmd3YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICdSZWtlYmlzaGEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ1N0YWFmdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICdNYXBpdGlvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdKYXJpYmlvLyBNYXN3YWxpIG5hIE1hamlidSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0Lid9ID0gJyc7CgogICAgIyBTeXNDb25maWcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzAgLSBIaWRkZW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hlY2sgZm9yIGEgdW5pcXVlIG5hbWUgb25seSB3aXRoaW4gdGhlIHNhbWUgQ29uZmlnSXRlbSBjbGFzcyAoXCdjbGFzc1wnKSBvciBnbG9iYWxseSAoXCdnbG9iYWxcJyksIHdoaWNoIG1lYW5zIGV2ZXJ5IGV4aXN0aW5nIENvbmZpZ0l0ZW0gaXMgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gbG9va2luZyBmb3IgZHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0FuZ2FsaWEgbWFqaW5hIHlhIGtpcGVrZWUgdHUga2F0aWthIHRhYmFrYSBzYXdhIGxhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSAoXCdUYWJha2FcJykgYXUgem90ZSAoXCdab3RlXCcpLCBhbWJheW8gaW5hbWFhbmlzaGEga2lsYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2lsaWNob3BvIGtpbWVqdW11aXNod2Egd2FrYXRpIG5ha2FsYSBwYWNoYSB6aW5hYW5nYWxpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnVmlwZW5nZWxlIHZ5YSB1c2FuaWRpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdTYW5pZGkgbW9kdWxpIHlhIHR1a2lvIHlhIGtpcGVuZ2VsZSBhbWJhY2hvIGtpbmF3ZXplc2hhIGt1aW5naWEga2F0aWthIGhpc3RvcmlhIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdLaWtvbW8gY2hhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gbGltaXQgcGVyIHBhZ2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdLaXBhbmdhIG5qaWEgY2hhIG1hemluZ2lyYSB5YSBueXVtYSBjaGEgdXRhZnV0YWppIHdhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEga2lvbGVzdXJhIGNoYSB3YWthbGEuICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICdUZW5nZW5lemEgbmEgc2ltYW1pYSB1ZmFmYW51emkgd2EgdmlwZW5nZWxlIHZ5YSB1c2FuaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnRGF0YSBjaGFndW8gbWlzbmdpIGt1dHVtaWthIGthdGlrYSBzaWZhIGt3YSBhamlsaSB5YSBza3JpbmkgeWEga3V0YWZ1dGEgeWEgdGlrZXRpLgpNZmFubzoKIlVtYml6byBsYSBNdWRhIGxhIEt1dGVuZ2VuZXphIFRpa2V0aT0gbXdha2E7IE13YW56byB3YSBNdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aT0gTXdpc2hvOyBQb2ludGkgeWEgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ0RhdGEgY2hhZ3VvLW1zaW5naSBrdXR1bWlhIGthdGlrYSBzaWZhIGt3YSBhamlsaSB5YSBza3JpbmkgeWEga3V0YWZ1dGEgeWEgdGlrZXRpOgoiTXdha2Egd2Ega3VhbnphIHdhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpPTIwMTA7IE13ZXppIHdhIGt1YW56YSB3YSBtdWRhIHdhIGt1dGVuZ2VuZXphIHRpa2V0aT0xMDsgU2lrdSB5YSBrdWFuemEgeWEgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9NDsgTXdha2Egd2Ega3VhY2hhIHdhIG11ZGEgd2Ega3V0ZW5nZW5lemEgdGlrZXRpID0yMDEwOyBNd2V6aSB3YSBrdWFjaGEgd2EgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGkgPSAxMTsgU2lrdSB5YSBrdWFjaGEgeWEgbXVkYSB3YSBrdXRlbmdlbmV6YSB0aWtldGk9MzsgIi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgcnVodXNhIHppbmF6b2hpdGFqaWthIGt1cGF0YXZpcGVuZ2VsZSB2eWEgdXNhbmlkaSB2eWEgSVRTTSBrd2Ega3V0dW1pYSBraW9sZXN1cmEgY2hhIGplbmVyaWtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBydWh1c2EgemluYXpvaGl0YWppa2Ega3VwYXRhdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZ5YSBJVFNNIGt3YSBrdXR1bWlhIGtpb2xlc3VyYSBjaGEgamVuZXJpa2kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHJ1aHVzYSB6aW5hem9oaXRhamlrYSBrdXRhZnV0YSB2aXBlbmdlbGUgdnlhIHVzYW5pZGkgdnlhIElUU00ga3dhIGt1dHVtaWEga2lvbGVzdXJhIGNoYSBqZW5lcmlraS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgcnVodXNhIHppbmF6b2hpdGFqaWthIGt1cGF0YXZpcGVuZ2VsZSB2eWEgdXNhbmlkaSB2eWEgSVRTTSBrd2Ega3V0dW1pYSBraW9sZXN1cmEgY2hhIGplbmVyaWtpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG1vZHVsaSB5YSBtYXBpdGlvIGt1b255ZXNoYSBtYW5kaGFyaSBuZG9nbyB5YSBvcm9kaGEgeWEgdmlwZW5nZWxlIHZ5YSB1c2FuaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2VtaSB6YSBtYXJhIGt3YSBtYXJhIG1vamFtb2phIGt3YSBraWxhIHRhYmFrYSBsYSBraXBlbmdlbGUgY2ggdXNhbmlkaSBrdWFuZ2FsaWEgamluYSBsYSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgbmEga3Vvbnllc2hhIHVqdW1iZSB3YSBtYWtvc2EgeWFuYXlvaHVzaWFuYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrd2EgYWppbGkgeWEga3VwYW5nYSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB3YSB0aWtldGkgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrd2EgYWppbGkgeWEga3VwYW5nYSBtYXRva2VvIHlhIHV0YWZ1dGFqaSB3YSB0aWtldGkgeWEga2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdJbmFmYWZhbnVhIHNpZmEgeWEgdGlrZXRpIGNoYWd1by1tc2luZ2kga3dhIGFqaWxpIHlhIGt1cGFuZ2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgd2EgdGlrZXRpIHlhIHVlbmRlc2hhamkgaHV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBtcGFuZ2lsaW8gd2EgdGlrZXRpIGNoYWd1by1tc2luZ2kga2F0aWthIG1hdG9rZW8geWEgdXRhZnV0YWppIHlhIHRpa2V0aSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogWmEgc2FzYSBqdXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG1wYW5naWxpbyB3YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrYXRpa2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgeWEgdGlrZXRpIHlhIGtpb2xlc3VyYSBjaGEgbXRlamEuIEp1dTogS29uZ3dlIGp1dS4gQ2hpbmk6IFphIHNhc2EganV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdJbmFmYWZhbnVhIG1wYW5naWxpbyB3YSB0aWtldGkgY2hhZ3VvLW1zaW5naSBrYXRpa2EgbWF0b2tlbyB5YSB1dGFmdXRhamkgeWEgdGlrZXRpIHlhIG1jaGFrYXRvIGh1dS4gSnV1OiBLb25nd2UganV1LiBDaGluaTogWmEgc2FzYSBqdXUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgaWxpeW90YWZ1dHdhIGlsaXlvb255ZXNod2EgY2hhZ3VvIG1zaW5naSBrd2Egc2tyaW5pIHlhIGt1dGFmdXRhIHRpa2V0aS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2lmYSB5YSB0aWtldGkgaWxpeW90YWZ1dHdhIGlsaXlvb255ZXNod2EgY2hhZ3VvIG1zaW5naSBrd2Egc2tyaW5pIHlhIGt1dGFmdXRhIHRpa2V0aS4gTWZhbm86ICJLaWJvbnllIiBsYXppbWEgaXdlIG5hIGppbmEgbGEgdWdhIHdlbnllIG5ndXZ1IGt3YSBoYXBhIG5pIFwnWFwnLCAiTWF1ZGh1aSIgbGF6aW1hIGl3ZSBuYSB0aGFtYW5pIHVhIHVnYSB3ZW55ZSBuZ3V2dSBrdXRlZ2VtZWFuYSBuYSBhaW5hIHlhIHVnYSB3ZW55ZSBuZ3V2dSwgTWF0aW5pOlwnTWF0aW5pXCcsIEt1bmp1emk6IFwnMVwnLCBUYXJlaGUvTXVkYTogIE13YWthIHdhIGt1YW56YSB3YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YT0xOTc0OyBNd2V6aSB3YSBrdWFuemEgd2EgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2E9MDE7IFNpa3UgeWEga3VhbnphIHlhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhPTI2OyBTYWEgeWEga3VhbnphIHlhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0wMDsgRGFraWthIHlhIGt1YW56YSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9IDAwOyBTZWt1bmRlIHlhIGt1YW56YSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9IDAwOyBNd2FrYSB3YSBrdWlzaGEgd2EgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTIwMTM7IE13ZXppIHdhIGt1aXNoYSB3YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9MDE7IFNpa3UgeWEga3Vpc2hhIHlhIG1hamlyYSB5YSBtdWRhIHVsaW9wYW5nd2EgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0yNjsgU2FhIHlhIGt1aXNoYSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9MjM7IERha2lrYSB5YSBrdWlzaGEgeWEgbWFqaXJhIHlhIG11ZGEgdWxpb3Bhbmd3YSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPTU5OyBTZWt1bmRlIHlhIGt1aXNoYSB5YSBtYWppcmEgeWEgbXVkYSB1bGlvcGFuZ3dhIFggeWEgdWdhIHdlbnllIG5ndXZ1IHVsaW90YWZ1dGFmdXR3YSA9NTk7IG5hIGF1IFVtYml6byBsYSBwb2ludGkgeWEgbXVkYSBYIHlhIHVnYSB3ZW55ZSBuZ3V2dSB1bGlvdGFmdXRhZnV0d2EgPSBXZWVrOyBNd2Fuem8gd2EgcG9pbnRpIHlhIG11ZGEgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0gS2FibGE7IFRoYW1hbmkgeWEgcG9pbnRpIHlhIG11ZGEgWCB5YSB1Z2Egd2VueWUgbmd1dnUgdWxpb3RhZnV0YWZ1dHdhID0gNzsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lwZW5nZWxlIGNoYSBjaGFndW8gbXNpbmdpIGNoYSB0YWJha2EgbGEgXCdLaXBlbmdlbGVjaGEgVXNhbmlkaSBjaGEgSVRTTVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgdXJlZnUga3dhIGtpamVuemkgY2hhIG1oYXJpcmkgd2EgbWF0aW5pIHRhamluaSBrd2Egc2tyaW5pIGhpaS4gSW5naXphIG5hbWJhIChQaWtzZWxpKSBhdSB0aGFtYW5pIHlhIGFzaWxpbWlhIChJbmF5b2h1c2lrYSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgbmFtYmEgeWEgc2FmdSBtbGFsbyBrd2EgbWhhcmlyaSB3YSB1ZmFmYW51emkgd2EgQ0kga2F0aWthIGtpb2xlc3VyYSBjaGEga2lvbmdvemknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnSW5hd2V6ZXNoYSB1cGVvIHdhIGt1dGFmdXRhIGt3YSBza2VyaW5pIHlhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEga2lrb21vIGNoYSBrdXRhZnV0YSBrd2Egc2tyaW5pIHlhIEt1dGFmdXRhIEtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSAgY2hhIFdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdJbmF3ZXplc2hhIHVwZW8gd2Ega3V0YWZ1dGEga3dhIHNrZXJpbmkgeWEgS2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnSW5hZmFmYW51YSBraWtvbW8gY2hhIGt1dGFmdXRhIGt3YSBza3JpbmkgeWEgS3V0YWZ1dGEgS2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNICBjaGEgV2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgc2FmdSB3aW1hIHphIENJIHppbGl6b29ueWVzaHdhIGthdGlrYSBtYW5kaGFyaSB5YSBqZWR3YWxpIHRhdGEgbGEga2l1bmdvLGt1dGVnZW1lYW5hIG5hIHRhYmFrYSBsYSBDSS4gS2lsYSBpbmdpem8gbGF6aW1hIGxpd2UgbmEga2lhbWJpc2hpIGF3YWxpIGppbmEgbGEgdGFiYWthIG5hIDo6ICggbWZhbm8gVGFyYWtpbGlzaGk6OikuS3VuYSB2aXVtYmkgdmljaGFjaGUgdnlhIENJIGFtYmF2eW8gdmlwbyBrd2EgQ0kgem90ZSAobWZhbm8ga3dlbnllIHRhYmFrYSBsYSB0YXJha2lsaXNoaTogdGFyYWtpbGlzaGk6OmppbmEsIFRhcmFraWxpc2hpOjpIYWxpIHlhQ3VyRGVwLCBUYXJha2lsaXNoaTo6TXVkYSB3YSBrdXRlbmdlbmV6YSkuIEt1b255ZXNoYSBraXVtYmkgY2hhIENJIGtpbW9qYSBraW1vamEga2FtYSB2aWxpdnlvIGZhZmFudWxpd2Ega3dlbnllIHVmYWZhbnV6aSB3YSBDSSwgbXBhbmdpbGlvIHVmdWF0YW8gbGF6aW1hIHV0dW1pa2UgKG1mYW5vIGt3ZW55ZSB0YWJha2EgdGFyYWtpbGlzaGkpOiBUYXJha2lsaXNoaTo6ZGlza2kga3V1OjoxLCBUYXJha2lsaXNoaTo6RGlza2kga3V1IG5ndW11OjoxVXdlem86OjEsIFRhcmFraWxpc2hpOjpEaXNraSBrdXUgbmd1bXU6OjIsIFRhcmFraWxpc2hpOjpEaXNraSBrdXUgbmd1bXU6OjI6OlV3ZXpvOjoxLiBLYW1hIGhha3VuYSBpbmdpem8ga3dhIHRhYmFrYSBsYSBDSSwgc2FmdXdpbWEgY2hhZ3VvIG1zaW5naSB6aW5hb255ZXNod2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSW5hZmFmYSB2aXBlbmdlbGVlIGFtYmF2eW8gdmluYXBhdGlrYW5hIGt3YSBhamlsaSB5YSBcJ0tpdGVuZG9cJyBrYXRpa2EgbmdhemkgeWEgdGF0dSB5YSBtdXVuZG8gd2EgQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ0luYWZhZmFudWEgdmlwZW5nZWxlIGFtYmF2eW8gdmluYXBhdGlrYW5hIGthdGlrYSBuZ2F6aSB5YSBrd2FuemEgeWEgbXV1bmRvIHdhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSW5hZmFmYW51YSB2aXBlbmdlbGUgYW1iYXZ5byB2aW5hcGF0aWthbmEga2F0aWthIG5nYXppIHlhIHBpbGkgeWEgbXV1bmRvIHdhIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIGxpbmsgKG5hbWVkIGZyb20gdGhlIHRpY2tldCBwZXJzcGVjdGl2ZSkgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gVXBkYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdLaXBlbmdlbGUgY2hhIFVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICdIYWxpIHlhIGt1dHVtaWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnSGFsaSB5YSBrdXR1bWlhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ05ha2FsYSBwYWNoYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW55ZXNoYSB1Z2EgemEga2ljaHdhIGNoYSBoYWJhcmkga2F0aWthIHNrcmluaSB5YSB1Z2Egd2EgSVRTTSB1bGlvb25nZXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW55ZXNoYSB1Z2EgemEga2ljaHdhIGNoYSBoYWJhcmkga2F0aWthIHNrcmluaSB5YSB1Z2Egd2EgSVRTTSB1bGlvb25nZXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW55ZXNoYSB1Z2EgemEga2ljaHdhIGNoYSBoYWJhcmkga2F0aWthIHNrcmluaSB5YSB1Z2Egd2EgSVRTTSB1bGlvb25nZXp3YSB3YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBmb3IgdGhlIGFnZW50IGZyb250ZW5kIHRvIHdvcmsgb24gbW9yZSB0aGFuIG9uZSBjb25maWd1cmF0aW9uIGl0ZW0gYXQgYSB0aW1lLid9ID0KICAgICAgICAnSW5hd2V6ZXNoYSBraXBlbmdlbGUgY2hhIGtpdGVuZG8gY2ggd2luZ2kgY2hhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrd2EgbWFpbmdpcmEgeWEgbWJlbGUgeWEgd2FrYWxhIGt1ZmFueWEga2F6aSBrYXRpa2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIHphaWRpIHlhIGtpbW9qYSBrd2EgbXVkYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ0luYXdlemVzaGEga2lwZW5nZWxlIGNoYSBraXRlbmRvIGNoYSB3aW5naSBjaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGt3YSBtYWt1bmRpIHlhbGl5b29yb2RoZXNod2EgdHUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFdmVudCBtb2R1bGUgdG8gc2V0IGNvbmZpZ2l0ZW0tc3RhdHVzIG9uIHRpY2tldC1jb25maWdpdGVtLWxpbmsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAnVXNhamlsaSB3YSBtb2R1bGkgeWEga2lvbGVzdXJhIGNoYSBqdW1sYSBrd2FhamlsaSBsYSB0YWJha2EgbGEga2loYW1zaGFqaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdVc2FqaWxpIHdhIG1vZHVsaSB5YSBraW9sZXN1cmEgY2hhIGp1bWxhIGt3YWFqaWxpIGxhIHRhYmFrYSBsYSBraWhhbXNoYWppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdVc2FqaWxpIHdhIG1vZHVsaSB5YSBraW9sZXN1cmEgY2hhIGp1bWxhIGt3YWFqaWxpIGxhIHRhYmFrYSBsYSBraWhhbXNoYWppLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdLaXBlbmdlbGUgY2hhIHVzYW5pZGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudFN0YXRlJ30gPSAnSGFsaSB5YSB0dWtpbyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICdOYW1iYSB5YSB1cGVvIHdhIGp1dSB3YSB0aWtldGkgeml0YWthem8gb255ZXNod2Ega2F0aWthIG1hdG9rZW8geWEgbWNoYWthdG8gaHV1Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ01vZHVsaSB5YSBrdWFuZ2FsaWEgbWFrdW5kaSB5YW5heW9odXNpa2EgbmEgdGFiYWthLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbS4nfSA9CiAgICAgICAgJ01vZHVsZSB5YSBrdWFuZ2FsaWEgbWFrdW5kaSB5YW5heW9odXNpa2EgbmEga2lwZW5nZWxlIGNoYSB1c2FuaWRpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ01vZHVsaSB5YSBrdXRlbmdlbmV6YSB0YWt3aW11IHphIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTT4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdOYW1iYSB0YSB0aWtldGkgeml0YWthem9vbnllc2h3YSBrYXRpa2Ega2lsYSB1a3VyYXNhIHdhIG1hdG9rZW8geWEgdXRhZnV0YWppIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnTmFtYmEgdGEgdGlrZXRpIHppdGFrYXpvb255ZXNod2Ega2F0aWthIGtpbGEgdWt1cmFzYSB3YSBtYXRva2VvIHlhIHV0YWZ1dGFqaSBrYXRpa2Ega2lvbGVzdXJhIGNoYSBtdGVqYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ01hcGl0aW8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIHJhbmdpIHlhIGhhbGkgemEgbWF0dW1pemkga2FtYSBtYW5kaGFyaSB5YSBtYXBlbmRlbGVvIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgbWZhbm8gcnVodXNhIHphIHZpa3VuZGkga3dhIHNpZmEgemEga2F0YWxvZ2kgemEgdWp1bWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIGhhbGkgemEgbWF0dW1pemkga2FtYSBtYW5kaGFyaSB5YSBtYXBlbmRlbGVvIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdWaWdlem8ga3dhIGFqaWxpIHlhIHVrdXJhc2EgKGFtYmF2eW8gdmlwZW5nZWxlIHZ5YSB1c2FuaWRpIHZpbWVvbnllc2h3YSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1ZpZ2V6byBrd2EgYWppbGkgeWEgaGFsaSB6YSBtYXR1bWl6aSBrYW1hIG1hbmRoYXJpIHlhIG1hcGVuZGVsZW8geWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVmlnZXpvIGt3YSBhamlsaSB5YSBoYWxpIHphIG1hdHVtaXppIGthbWEgbWFuZGhhcmkgeWEgbWFwZW5kZWxlbyB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICdGYW55YSBraXRlY25kbyBjaGEgdXNhbmlkaXNod2FqaSBrd2Ega2lsYSB0dWtpbyAoa2FtYSBLaWNob2NoZXppKSBrd2Ega2lsYSBodWR1bWEgeWEgd2F2dXRpIGlsaXlvc2FuaWRpd2EuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGt1dGFmdXRhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5haGl0YWppIHJ1aHVzYSBrdXR1bWlhIHNrcmluaSB5YSBrdXRhZnV0YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga3V0YWZ1dGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGthdGlrYSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgaWxpeW9rdXp3YSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIElUU00ga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGtpbGljaG9vbmdlemEga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGtpbGljaG9oYXJpcml3YSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYWhpdGFqaSBydWh1c2Ega3V0dW1pYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGNoYSBJVFNNIGNoYSBoaXN0b3JpYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFoaXRhamkgcnVodXNhIGt1dHVtaWEgc2tyaW5pIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBjaGEgSVRTTSBjaGEga3VjaGFwaXNoYSBrYXRpa2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICdVcGVuZGVsZW8gdW5hb3Rha2l3YSBpbGkga3VmdXRhIG1hYmFkaWxpa28uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmF3ZWthIGhhbGkgeWEga3V0dW1pYSBrYXRpa2Egc2tyaW5pIHlhIHdpbmdpIHdhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hd2VrYSBoYWxpIHlhIHR1a2lvIGthdGlrYSBza3JpbmkgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2lvbmdvIGthdGlrYSBtZW55dSBhbWJhY2hvIGtpbmF1bmdhbmlzaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIG5hIGtpcGVuZ2VlIGtpbmdpbmUga2F0aWthIG1hbmRoYXJpIGlsaXlva3V6d2EgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xldXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdJbmFvbnllc2hhIGtpdW5nbyBrd2VueWUgIG1lbnl1IGt1d2V6YSBrdWZpa2lhIGhpc3RvcmlhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFwaXRpbyB5YSBraXBlbmdlbGUgeWEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSW5hb255ZXNoYSBraXVuZ28ga3dlbnllICBtZW55dSBrdXdlemEga3VmaWtpYSBoaXN0b3JpYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hbmRoYXJpIHlha2UgaWxpeW9rdXp3YSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3VoYXJpcmkgIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFuZGhhcmkgeWFrZSBpbGl5b2t1endhIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1dG9hIG5ha2FsYSBwYWNoYSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hcGl0aW8geWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIHlhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdPbnllc2hhIGtpdW5nbyBrYXRpa2EgbWVueXUga3V0b2EgbmFrYWxhIHBhY2hhIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSBrYXRpa2EgbWFuZGhhcmkgeWFrZSB5YSBraXBlbmdlbGUgY2hhIHVzYW5pZGkgY2hhIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1aGFyaXJpICBraXBlbmdlbGUgY2hhIHVzYW5pZGkga2F0aWthIG1hbmRoYXJpIHlha2UgaWxpeW9rdXp3YSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEga2l1bmdvIGt3ZW55ZSBtZW55dSBpbGkga3VydWRpIG55dW1hIGt3ZW55ZSBtdW9uZWthbm8gd2EgbWFiYWRpbGlrbyB1bGlva3V6d2Egd2Ega2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1Y2hhcGlzaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYW5kaGFyaSB5YWtlIGlsaXlva3V6d2EgeWEga2lvbGVzdXJhIGNoYSB3YWthbGEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnT255ZXNoYSBraXVuZ28ga2F0aWthIG1lbnl1IGt1a3V6YSBrYXRpa2Ega2lwZW5nZWxlIGNoYSB1c2FuaWRpIGthdGlrYSBtYXBpdGlvIHlhIGtpcGVuZ2VsZSBjaGEgdXNhbmlkaSB5YSBraW9sZXN1cmEgY2hhIHdha2FsYS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0luYW9ueWVzaGEgaGlzdG9yaWEgeWEga2lwZW5nZWxlIGNoYSB1c2FuaWRpIChrd2EgbXBhbmdpbGlvIHdhIGt1cnVkaSBueXVtYSkga2F0aWthIGtpb2xlc3VyYSBjaGEgd2FrYWxhLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ0tpdGFtYnVsaXNoaSBjaGEga2lwZW5nZWxlIGNoYSB1c2FuaWRpLCBtZmFuby5Db25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gQ2hhZ3UtbXNpbmdpIG5pIENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICdUYWJha2EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Bvc3Rwcm9kdWN0aXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJyc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJyc7CiAgICAkU2VsZi0+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+eydBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyd9ID0gJ1VoYXNpYnUgd2EgbXVkYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZG1pbmlzdHJhdG9yJ30gPSAnVXRhd2FsYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAnSmVuZ28nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ0tpb2xlc3VyYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBSZWFkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBjYXRlZ29yeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhaW5lciBNYW5hZ2VtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBPcmRlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnRW5lbyBrYXppJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1iZWRkZWQgU0lNIChlU0lNKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbXBsb3ltZW50IENvbnRyYWN0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuZCBvZiBzdXBwb3J0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsIEhhcmQgRHJpdmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmx5d2hlZWwgRW5lcmd5IFN0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9ybSBGYWN0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJhbmNoaXNlIEFncmVlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmVld2FyZSd9ID0gJ1Byb2dyYW11IHlhIGJ1cmUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+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+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+C4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfguITguYnguJnguKvguLLguYDguKfguK3guKPguYzguIrguLHguYjguJnguJfguLXguYjguYHguKXguYnguKfguJTguYnguKfguKLguKvguKPguLfguK3guYTguKHguYg/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ+C4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4geC4s+C4q+C4meC4lOC4hOC5iOC4sic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gSW5mb3JtYXRpb24nfSA9ICfguILguYnguK3guKHguLnguKXguKPguLLguKLguIHguLLguKPguIHguLLguKPguIHguLPguKvguJnguJTguITguYjguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZ4Lib4Lix4LiI4LiI4Li44Lia4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguYzguIHguLLguKPguJPguYzguJvguLHguIjguIjguLjguJrguLHguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkJ30gPSAn4LiB4Liy4Lij4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiH4Lil4LmI4Liy4Liq4Li44LiUJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCBieSd9ID0gJ+C4geC4suC4o+C5gOC4m+C4peC4teC5iOC4ouC4meC5geC4m+C4peC4h+C4peC5iOC4suC4quC4uOC4lOC5guC4lOC4oic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBTZWFyY2gnfSA9ICcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEbyB5b3Ugd2FudCB0byBwcm9jZWVkPyd9ID0gJ+C4hOC4uOC4k+C4leC5ieC4reC4h+C4geC4suC4o+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4leC5iOC4reC5hOC4m+C4q+C4o+C4t+C4reC5hOC4oeC5iD8nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05lZWQgRXhhbXBsZUNsYXNzZXMhJ30gPSAn4LiV4LmJ4Lit4LiH4LiB4Liy4LijIEV4YW1wbGVQcm9jZXNzZXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluaXRpb24gaXMgbm8gdmFsaWQgWUFNTCBoYXNoLid9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXc6IElUU00gQ29uZmlnSXRlbSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IG5lZWQgYXQgbGVhc3Qgb25lIHNlbGVjdGVkIENvbmZpZ3VyYXRpb24gSXRlbSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGRvblwndCBoYXZlIHdyaXRlIGFjY2VzcyB0byB0aGlzIGNvbmZpZ3VyYXRpb24gaXRlbTogJXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2FzIG5vdCBhYmxlIHRvIGRlbGV0ZSB0aGUgY29uZmlnaXRlbSBJRCAlcyEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbiBmb3VuZCBmb3IgQ29uZmlnSXRlbUlEICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQgb3IgQ2xhc3NJRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUhpc3RvcnkucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfguYTguKHguYjguKrguLLguKHguLLguKPguJbguYHguKrguJTguIfguJvguKPguLDguKfguLHguJXguLQg4LmE4Lih4LmI4LmE4LiU4LmJ4Lij4Lix4LiaIFRpY2tldElEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+C5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC5geC4quC4lOC4h+C4m+C4o+C4sOC4p+C4seC4leC4tCDguYTguKHguYjguYTguJTguYnguKPguLHguJogVGlja2V0SUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn4LmE4Lih4LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmB4Liq4LiU4LiH4Lib4Lij4Liw4Lin4Lix4LiV4Li0IOC5hOC4oeC5iOC5hOC4lOC5ieC4o+C4seC4miBUaWNrZXRJRCEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbUlEICVzIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn4Lit4LmJ4Liy4LiH4Lit4Li04LiHJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfguYTguKHguYjguKHguLXguJzguKXguKXguLHguJ7guJjguYwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ+C4geC4suC4o+C4lOC4s+C5gOC4meC4tOC4meC4h+C4suC4mSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn4LiE4Liz4LmA4LiV4Li34Lit4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn4LmA4Lir4LiV4Li44LiB4Liy4Lij4LiT4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guIHguLLguKPguJ7guLHguJLguJnguLLguIHguLLguKPguILguK3guIcgY29uZmlnIGl0ZW0g4LiZ4Li14LmJICc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ+C4quC4luC4suC4meC4oOC4suC4nuC5gOC4q+C4leC4uOC4geC4suC4o+C4k+C5jOC4guC4reC4hyBjb25maWcgaXRlbSDguJnguLUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfguYTguKHguYjguYTguJTguYnguKPguLHguJrguK3guJnguLjguI3guLLguJUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn4Lib4Lij4Liw4LmA4Lig4LiX4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiB4Liy4Lij4LmD4LiK4LmJ4LiH4Liy4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+C4m+C4o+C4sOC5gOC4oOC4l+C4quC4luC4suC4meC4oOC4suC4nuC4guC4reC4h+C5gOC4q+C4leC5jOC4geC4suC4o+C4k+C5jOC4m+C4seC4iOC4iOC4uOC4muC4seC4mSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfguKPguLDguKvguKfguYjguLLguIcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfguIjguLPguJnguKfguJnguKrguLnguIfguKrguLjguJTguILguK3guIfguKvguJnguLbguYjguIfguK3guLjguJvguIHguKPguJPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn4Lir4Lih4LiU4Lit4Liy4Lii4Li4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn4LiB4Liy4Lij4LiU4Li54LmB4Lil4Lij4Lix4LiB4Lip4LiyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn4LiB4Liy4Lij4LiZ4Liz4Lij4LmI4Lit4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICfguIHguLLguKPguKfguLLguIfguYHguJzguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn4LiL4LmI4Lit4LihJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfguYDguIHguKnguLXguKLguJMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfguJfguJTguKrguK3guJovUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICcnOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgdXNlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDTURCIFNldHRpbmdzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICfguJXguKPguKfguIjguKrguK3guJrguIrguLfguYjguK3guYDguInguJ7guLLguLDguYDguJfguYjguLLguJnguLHguYnguJnguJfguLXguYjguK3guKLguLnguYjguYPguJkgQ29uZmlnSXRlbSDguIrguLHguYnguJnguYDguJTguLXguKLguKfguIHguLHguJkgKOC4iuC4seC5ieC4mSkg4Lir4Lij4Li34Lit4LiX4Lix4LmJ4LiH4Lir4Lih4LiUICjguJfguLHguYnguIfguKvguKHguJQpIOC4i+C4tuC5iOC4h+C4q+C4oeC4suC4ouC4hOC4p+C4suC4oeC4p+C5iOC4skNvbmZpZ0l0ZW0g4LiX4Li14LmI4Lih4Li14Lit4Lii4Li54LmI4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4LiI4Liw4LiW4Li54LiB4LiZ4Liz4LmA4LiC4LmJ4Liy4Lia4Lix4LiN4LiK4Li14LmA4Lie4Li34LmI4Lit4LiE4LmJ4LiZ4Lir4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiX4Li14LmI4LiL4LmJ4Liz4LiB4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnQ29uZmlnIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguYLguKHguJTguLnguKXguIHguLTguIjguIHguKPguKPguKHguILguK3guIdDb25maWcgaXRlbSDguJfguLXguYjguIrguYjguKfguKLguYPguKvguYnguYDguILguYnguLLguKrguLnguYjguKPguLDguJrguJrguJvguKPguLDguKfguLHguJXguLTguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guKrguILguK3guIfguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfguIHguLLguKPguIjguLPguIHguLHguJQgQ29uZmlndXJhdGlvbiBJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0NvbmZpZ3VyYXRpb24gSXRlbSDguITguYnguJnguKvguLIgYmFja2VuZCByb3V0ZXIg4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIGZvciB2aWV3aW5nIFBlcm1pc3Npb24gQ29uZGl0aW9ucyBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLCB3aGVuIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgYXJlIG5vdCBzcGVjaWZpY2FsbHkgY29uZmlndXJlZC4gVGhpcyBzZXR0aW5nIGlzIHVzZWQgYXMgYSBmYWxsYmFjayBmb3IgdGhlIG90aGVyIFBlcm1pc3Npb24gQ29uZGl0aW9uIENvbHVtbnMgc2V0dGluZ3MuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgd2hlbiB2aWV3aW5nIHRoZSBjb3JyZXNwb25kaW5nIFBlcm1pc3Npb24gQ29uZGl0aW9uIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlIGFuZCBtYW5hZ2UgdGhlIGRlZmluaXRpb25zIGZvciBDb25maWd1cmF0aW9uIEl0ZW1zLid9ID0gJ+C4quC4o+C5ieC4suC4h+C5geC4peC4sOC4iOC4seC4lOC4geC4suC4o+C4hOC4s+C4meC4tOC4ouC4suC4oeC4quC4s+C4q+C4o+C4seC4miBDb25maWd1cmF0aW9uIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfguILguYnguK3guKHguLnguKXguYDguKPguLTguYjguKHguJXguYnguJnguJfguLXguYjguIjguLDguYPguIrguYnguYPguJnguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK3guIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKcg4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiHOiAiVGlja2V0Q3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7VGlja2V0Q3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtUaWNrZXRDcmVhdGVUaW1lUG9pbnQ9MjsiJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLid9ID0KICAgICAgICAn4LiC4LmJ4Lit4Lih4Li54Lil4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiX4Li14LmI4LiI4Liw4LmD4LiK4LmJ4LmD4LiZ4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4Liq4Liz4Lir4Lij4Lix4Lia4Lir4LiZ4LmJ4Liy4LiI4Lit4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4LinIOC4leC4seC4p+C4reC4ouC5iOC4suC4hzogIlRpY2tldENyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnRNb250aD0xMDtUaWNrZXRDcmVhdGVUaW1lU3RhcnREYXk9NDtUaWNrZXRDcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtUaWNrZXRDcmVhdGVUaW1lU3RvcE1vbnRoPTExO1RpY2tldENyZWF0ZVRpbWVTdG9wRGF5PTM7Iic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Liq4Li04LiX4LiY4Li04LmM4LiX4Li14LmI4LiI4Liz4LmA4Lib4LmH4LiZ4LmD4LiZ4LiB4Liy4Lij4LmA4Lit4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU03guYLguJTguKLguYPguIrguYnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4quC4tOC4l+C4mOC4tOC5jOC4l+C4teC5iOC4iOC4s+C5gOC4m+C5h+C4meC5g+C4meC4geC4suC4o+C5gOC4reC4suC4o+C4suC4ouC4geC4suC4o+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4siBJVFNN4LmC4LiU4Lii4LmD4LiK4LmJ4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LiX4Lix4LmI4Lin4LmE4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguKrguLTguJfguJjguLTguYzguJfguLXguYjguIjguLPguYDguJvguYfguJnguYPguJnguIHguLLguKPguITguYnguJnguKvguLLguKPguLLguKLguIHguLLguKPguIHguLLguKPguJXguLHguYnguIfguITguYjguLIgSVRTTeC5guC4lOC4ouC5g+C4iuC5ieC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C4l+C4seC5iOC4p+C5hOC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4Liq4Li04LiX4LiY4Li04LmM4LiX4Li14LmI4LiI4Liz4LmA4Lib4LmH4LiZ4LmD4LiZ4LiB4Liy4Lij4LmA4Lit4Liy4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyIElUU03guYLguJTguKLguYPguIrguYnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguJfguLHguYjguKfguYTguJsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LmC4Lih4LiU4Li54Lil4Lig4Liy4Lie4Lij4Lin4Lih4LmD4LiZ4LiB4Liy4Lij4LmB4Liq4LiU4LiH4Lih4Li44Lih4Lih4Lit4LiH4LiC4LiZ4Liy4LiU4LmA4Lil4LmH4LiB4LiC4Lit4LiH4Lij4Liy4Lii4LiB4Liy4LijICBDb25maWd1cmF0aW9uIEl0ZW1zJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiZ4Li04Lie4LiI4LiZ4LmM4LiX4Lix4LmI4Lin4LmE4Lib4LmA4Lib4LmH4LiZ4Lij4Liy4Lii4Lia4Li44LiE4LiE4Lil4LmD4LiZQ29uZmlnSXRlbSDguYHguJXguYjguKXguLDguIrguLHguYnguJkg4LmA4Lie4Li34LmI4Lit4LiV4Lij4Lin4LiI4Liq4Lit4Lia4LiK4Li34LmI4LitIENvbmZpZ0l0ZW0g4LmB4Lil4Liw4LmA4Lie4Li34LmI4Lit4LmB4Liq4LiU4LiH4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4Lic4Li04LiU4Lie4Lil4Liy4LiU4LiX4Li14LmI4Liq4Lit4LiU4LiE4Lil4LmJ4Lit4LiH4LiB4Lix4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGF2YWlsYWJsZSBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguITguYHguK3guJXguJfguKPguLTguJrguLTguKfguJXguYzguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguKrguLPguKvguKPguLHguJrguIHguLLguKPguYDguKPguLXguKLguIfguKXguLPguJTguLHguJrguJXguLHguYvguKfguILguK3guIfguJzguKXguKXguLHguJ7guJjguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguJXguLHguYvguKfguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4leC4seC5i+C4p+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4muC4leC4seC5i+C4p+C4guC4reC4h+C4nOC4peC4peC4seC4nuC4mOC5jOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4p+C5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ+C4geC4s+C4q+C4meC4lOC4hOC5geC4reC4leC4l+C4o+C4tOC4muC4tOC4p+C4leC5jOC5gOC4o+C4tOC5iOC4oeC4leC5ieC4meC4guC4reC4h+C4leC4seC5i+C4p+C4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C5gOC4o+C4teC4ouC4h+C4peC4s+C4lOC4seC4muC4leC4seC5i+C4p+C4guC4reC4h+C4nOC4peC4peC4seC4nuC4mOC5jOC4guC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4suC4leC4seC5i+C4p+C4guC4reC4h+C4geC4suC4o+C4lOC4s+C5gOC4meC4tOC4meC4geC4suC4o+C4meC4teC5iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiB4Liy4Lij4LiI4Lix4LiU4LmA4Lij4Li14Lii4LiH4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LmD4LiZ4Lic4Lil4Lil4Lix4Lie4LiY4LmM4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMIOC4guC4tuC5ieC4mTog4LmA4LiB4LmI4Liy4LiX4Li14LmI4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZIOC4peC4hzog4Lil4LmI4Liy4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguIHguLLguKPguIjguLHguJTguYDguKPguLXguKLguIfguYDguKPguLTguYjguKHguJXguYnguJnguILguK3guIfguJXguLHguYvguKfguILguK3guIfguJzguKXguKXguLHguJ7guJjguYzguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKXguLnguIHguITguYnguLIg4LiC4Li24LmJ4LiZOiDguYDguIHguYjguLLguJfguLXguYjguKrguLjguJTguJTguYnguLLguJnguJrguJkg4Lil4LiHOiDguKXguYjguLLguKrguLjguJTguJTguYnguLLguJnguJrguJknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn4LiB4Liz4Lir4LiZ4LiU4LiB4Liy4Lij4LiI4Lix4LiU4LmA4Lij4Li14Lii4LiH4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiC4Lit4LiH4LiV4Lix4LmL4Lin4LmD4LiZ4Lic4Lil4Lil4Lix4Lie4LiY4LmM4LiC4Lit4LiH4LiB4Liy4Lij4LiE4LmJ4LiZ4Lir4Liy4LiV4Lix4LmL4Lin4LiC4Lit4LiH4LiB4Liy4Lij4LiU4Liz4LmA4LiZ4Li04LiZ4LiB4Liy4Lij4LiZ4Li14LmJIOC4guC4tuC5ieC4mTog4LmA4LiB4LmI4Liy4LiX4Li14LmI4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZIOC4peC4hzog4Lil4LmI4Liy4Liq4Li44LiU4LiU4LmJ4Liy4LiZ4Lia4LiZJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ+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+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfguIHguLPguKvguJnguJTguILguLXguJTguIjguLPguIHguLHguJTguILguK3guIfguIHguLLguKPguITguYnguJnguKvguLLguKrguLPguKvguKPguLHguJrguKvguJnguYnguLLguIjguK0gQWdlbnRJVFNNQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+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+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICfguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguKPguLLguKLguIHguLLguKPguITguLjguJPguKXguLHguIHguKnguJPguLDguILguK3guIfguIHguLLguKPguJfguLPguIfguLLguJnguYDguJvguYfguJnguIHguKXguLjguYjguKEg4Liq4Liz4Lir4Lij4Lix4Lia4Lif4Lij4Lit4LiZ4LiV4LmM4LmA4Lit4LiZ4LiC4Lit4LiH4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmM4LmA4Lie4Li34LmI4Lit4LiX4Liz4LiH4Liy4LiZ4LiB4Lix4Lia4Lij4Liy4Lii4LiB4Liy4Lij4LiB4Liy4Lij4LiB4Liz4Lir4LiZ4LiU4LiE4LmI4Liy4LiX4Li14LmI4Lih4Li14Lih4Liy4LiB4LiB4Lin4LmI4Liy4Lir4LiZ4Li24LmI4LiH4LmD4LiZ4Lir4LiZ4Li24LmI4LiH4LiE4Lij4Lix4LmJ4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgb25seSBmb3IgdGhlIGxpc3RlZCBncm91cHMuJ30gPQogICAgICAgICfguYDguJvguLTguJTguYPguIrguYnguIfguLLguJnguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguKPguLLguKLguIHguLLguKPguITguLjguJPguKXguLHguIHguKnguJPguLDguILguK3guIfguIHguLLguKPguJfguLPguIfguLLguJnguYDguJvguYfguJnguIHguKXguLjguYjguKHguYDguInguJ7guLLguLDguKrguLPguKvguKPguLHguJrguIHguKXguLjguYjguKHguJfguLXguYjguKPguLDguJrguLjguYTguKfguYknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCwgdXNlZCBmb3IgdGhlIGZ1bGx0ZXh0IHNlYXJjaC4gRmllbGRzIGFyZSBhbHNvIHN0b3JlZCwgYnV0IGFyZSBub3QgbWFuZGF0b3J5IGZvciB0aGUgb3ZlcmFsbCBmdW5jdGlvbmFsaXR5LiBJbmNsdXNpb24gb2YgYXR0YWNobWVudHMgY2FuIGJlIGRpc2FibGVkIGJ5IHNldHRpbmcgdGhlIGVudHJ5IHRvIDAgb3IgZGVsZXRpbmcgaXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4IHdoaWNoIGFyZSB1c2VkIGZvciBvdGhlciB0aGluZ3MgYmVzaWRlcyBmdWxsdGV4dCBzZWFyY2hlcy4gRm9yIHRoZSBjb21wbGV0ZSBmdW5jdGlvbmFsaXR5IGFsbCBmaWVsZHMgYXJlIG1hbmRhdG9yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfguIHguLLguKPguKXguIfguJfguLDguYDguJrguLXguKLguJnguYLguKHguJTguLnguKUgR2VuZXJpY0ludGVyZmFjZSDguKrguLPguKvguKPguLHguJrguIrguLHguYnguJnguILguK3guIfguJzguLnguYnguKPguYnguK3guIfguILguK0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfguIHguLLguKPguKXguIfguJfguLDguYDguJrguLXguKLguJnguYLguKHguJTguLnguKUgR2VuZXJpY0ludGVyZmFjZSDguKrguLPguKvguKPguLHguJrguIrguLHguYnguJnguILguK3guIfguJzguLnguYnguKPguYnguK3guIfguILguK0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbVVwZGF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn4LiB4Liy4Lij4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LmC4Lih4LiU4Li54LilIEdlbmVyaWNJbnRlcmZhY2Ug4Liq4Liz4Lir4Lij4Lix4Lia4LiK4Lix4LmJ4LiZ4LiC4Lit4LiH4Lic4Li54LmJ4Lij4LmJ4Lit4LiH4LiC4LitJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0NvbmZpZ0l0ZW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBjb25maWcgaXRlbSBvdmVydmlldy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAn4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LiC4Lit4LiH4LmA4Lir4LiV4LmM4LiB4Liy4Lij4LiT4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguYDguKvguJXguYzguIHguLLguKPguJPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn4LmC4Lih4LiU4Li54Lil4LmD4LiZ4LiB4Liy4Lij4LiV4Lij4Lin4LiI4Liq4Lit4Lia4Lic4Li54LmJ4Lij4Lix4Lia4Lic4Li04LiU4LiK4Lit4Lia4LiB4Lil4Li44LmI4Lih4Liq4Liz4Lir4Lij4Lix4Lia4LiE4Lil4Liy4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn4LmC4Lih4LiU4Li54Lil4LmD4LiZ4LiB4Liy4Lij4LiV4Lij4Lin4LiI4Liq4Lit4Lia4Lic4Li54LmJ4Lij4Lix4Lia4Lic4Li04LiU4LiK4Lit4Lia4LiB4Lil4Li44LmI4Lih4Liq4Liz4Lir4Lij4Lix4LiaIGNvbmZpZ3VyYXRpb24gaXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ+C5guC4oeC4lOC4ueC4peC4quC4o+C5ieC4suC4h+C4quC4luC4tOC4leC4tCBJVFNNIGNvbmZpZyBpdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguJrguJnguYHguJXguYjguKXguLDguKvguJnguYnguLLguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguKrguLLguJjguLLguKPguJPguLAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LiI4Liz4LiZ4Lin4LiZ4Lia4LiX4LiE4Lin4Liy4LihIEZBUSDguJfguLXguYjguIjguLDguYHguKrguJTguIfguJrguJnguYHguJXguYjguKXguLDguKvguJnguYnguLLguILguK3guIfguJzguKXguIHguLLguKPguITguYnguJnguKvguLLguYPguJnguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguILguK3guIfguKXguLnguIHguITguYnguLInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ+C4oOC4suC4nuC4o+C4p+C4oSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guILguK3guIfguKrguLXguYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiV4Lix4Lin4Lit4Lii4LmI4Liy4LiH4LiB4Lil4Li44LmI4Lih4LiX4Li14LmI4LmE4LiU4LmJ4Lij4Lix4Lia4Lit4LiZ4Li44LiN4Liy4LiV4LiC4Lit4LiH4LmB4Lit4LiV4LiX4Lij4Li04Lia4Li04Lin4LiV4LmM4LmB4LiE4LmH4LiV4LiV4Liy4Lil4LmH4Lit4LiB4LiX4Lix4LmI4Lin4LmE4LibJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfguJ7guLLguKPguLLguKHguLTguYDguJXguK3guKPguYzguKrguLPguKvguKPguLHguJrguIHguLLguKPguJ7guLHguJLguJnguLLguKrguJbguLLguJnguKDguLLguJ7guYPguJnguKHguLjguKHguKHguK3guIfguIHguLLguKPguJXguLHguYnguIfguITguYjguLLguILguK3guIfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIvguYDguK3guYDguKLguYjguJnguJXguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LmB4LiV4LmI4Lil4Liw4Lir4LiZ4LmJ4LiyKOC4i+C4tuC5iOC4hyBjb25maWd1cmF0aW9uIGl0ZW1zIOC5geC4quC4lOC4hyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyB0ZW1wbGF0ZSB0b29sa2l0IG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4Lie4Liy4Lij4Liy4Lih4Li04LmA4LiV4Lit4Lij4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lie4Lix4LiS4LiZ4Liy4Liq4LiW4Liy4LiZ4Lig4Liy4Lie4LmD4LiZ4Lih4Li44Lih4Lih4Lit4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LiC4Lit4LiH4Lit4Li04LiZ4LmA4LiV4Lit4Lij4LmM4LmA4Lif4LiL4LmA4Lit4LmA4Lii4LmI4LiZ4LiV4LmMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHRyaWdnZXIgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+C4nuC4suC4o+C4suC4oeC4tOC5gOC4leC4reC4o+C5jOC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4nuC4seC4kuC4meC4suC4quC4luC4suC4meC4oOC4suC4nuC5g+C4meC4oeC4uOC4oeC4oeC4reC4h+C4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+eydTaG93cyB0aGUgY29uZmlnIGl0ZW0gaGlzdG9yeSAocmV2ZXJzZSBvcmRlcmVkKSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn4LmB4Liq4LiU4LiH4Lib4Lij4Liw4Lin4Lix4LiV4Li0IGNvbmZpZyBpdGVtICjguKXguLPguJTguLHguJrguKLguYnguK3guJnguIHguKXguLHguJopIOC5g+C4meC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4n+C4i+C5gOC4reC5gOC4ouC5iOC4meC4leC5jCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ+C4leC4seC4p+C4muC5iOC4h+C4iuC4teC5ieC4quC4s+C4q+C4o+C4seC4miAgQ29uZmlndXJhdGlvbiBJdGVtIOC5gOC4iuC5iOC4mSBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIyDguITguYjguLLguYDguKPguLTguYjguKHguJXguYnguJnguITguLfguK0gQ29uZmlnSXRlbSMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBFeHByZXNzaW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn4LiE4Lil4Liy4LiqJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJyc7CiAgICAkU2VsZi0+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+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn4LiB4Liy4Lij4Liq4Lij4LmJ4Liy4LiHJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfguK3guLTguJnguYDguJXguK3guKPguYzguYDguJ/guIsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn4LiL4Li14Lie4Li14Lii4Li5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ+C5gOC4lOC4quC4l+C4reC4myc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfguJ/guKPguLXguYHguKfguKPguYwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+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+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+eydSdW4gU2VhcmNoJ30gPSAnQXJhbWEgw4dhbMSxxZ90xLFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fsc28gc2VhcmNoIGluIHByZXZpb3VzIHZlcnNpb25zPyd9ID0gJ0F5csSxY2Egw7ZuY2VraSBzw7xyw7xtbGVyZGUgYXJhbWE/JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSBpw6dpbiBUcmVlVmlldyc7CiAgICAkU2VsZi0+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+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJ1Nlbmtyb25pemUgZWRpbG1lbWnFnyBJVFNNQ29uZmlnSXRlbSB0YW7EsW1sYXLEsW7EsXogdmFyLiBMw7x0ZmVuIElUU01Db25maWdJdGVtIGRpbmFtaWsgYWxhbiBkZcSfacWfaWtsaWtsZXJpbml6aSBkYcSfxLF0xLFuLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnU8O8cmVzaSBkb2xkdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0Jha8SxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ1BpbG90JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICdQbGFubGFubcSxxZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAnT25hcsSxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnRW1la2xpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ8SwbmNlbGVtZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAnVGVzdC9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAnR2VuZWwgQmFrxLHFnyB2ZSBPbmF5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ1PEsW7EsWZsYXLEsS9yb2xsZXJpIHZlIGlsZ2lsaSBhbGFubGFyxLEgacOnZSBha3Rhcm1hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnU8SxbsSxZiBpw6dlIGFrdGFyxLFtxLEgc8SxcmFzxLFuZGEgYmlyIGhhdGEgb2x1xZ90dS4nOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIEdpemxpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEgLSBTaG93bid9ID0gJzEgLSBHw7ZzdGVyaWxlbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAnQXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYXPEsW5kYSBnZW5pxZ9sZXRpbG1pxZ8gYXJhbWEga2/Fn3VsbGFyxLFuYSBpemluIHZlcmlyLiBCdSDDtnplbGxpayBzYXllc2luZGUsIMO2cm5lxJ9pbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFkxLFuxLEgIigqa2V5MSomKmtleTIqKSIgdmV5YSAiKCprZXkxKnwqa2V5MiopIiBnaWJpIGJ1IHTDvHIga2/Fn3VsbGFybGEgYXJheWFiaWxpcnNpbml6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hc8SxbmRhIGdlbmnFn2xldGlsbWnFnyBhcmFtYSBrb8WfdWxsYXLEsW5hIGl6aW4gdmVyaXIuIEJ1IMO2emVsbGlrIHNheWVzaW5kZSwgw7ZybmXEn2luIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYWTEsW7EsSAiKCphbmFodGFyMSomKmFuYWh0YXIyKikiIHZleWEgIigqYW5haHRhcjEqfCphbmFodGFyMiopIiBnaWJpIGJ1IHTDvHIga2/Fn3VsbGFybGEgYXJheWFiaWxpcnNpbml6Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICdBdGFubcSxxZ8gQ0lcJ2xhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZFRvRW50aXR5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0IGEgc3BlY2lmaWMgdGltZSBwb2ludCBjcmVhdGUgYSB0aWNrZXQgZm9yIGNvbmZpZyBpdGVtcywgaWYgdGhlIGNvbmZpZ3VyZWQgcmVxdWlyZW1lbnRzIGFyZSBtZXQuIFRoZSB0aW1lIHBvaW50IGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBkeW5hbWljIGZpZWxkIG9mIHR5cGUgZGF0ZSBjb25maWd1cmVkIHVuZGVyICJUaW1lQ0lLZXkiIG9mIHRoZSBDb25maWdJdGVtLCBhbmQgbW9kaWZpZWQgYnkgIlRpbWVNb2RpZmllciIuIElmIHRoZSBsYXR0ZXIgY2FuIGJlIGVpdGhlciBqdXN0IGEgbnVtYmVyLCBvciBhIHNpZ24gKCsvLSksIGEgbnVtYmVyLCBhbmQgYW4gdW5pdCAoZC9oL20pOiAiNyIgaXMgZXF1aXZhbGVudCB0byAiKzdkIi4gVGhlIER5bmFtaWNGaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIHdpbGwgYmUgdXNlZCB0byBtYXJrIGNyZWF0ZWQgdGlja2V0cyAtIGl0IGhhcyB0byBleGlzdC4gVGhlIGZsYWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSIGFuZCBEQVRFLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2UgYWNjb3VudGluZy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZXMgY291bnRpbmcsIHdoZXJlICJUb3RhbExpY2Vuc2VzREYiLCAiQXZhaWxhYmxlTGljZW5zZXNERiIgYW5kICJMaWNlbnNlUmVmZXJlbmNlREYiIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGR5bmFtaWMgZmllbGRzIHVzZWQgdG8gdHJhY2sgdGhlIHJlbWFpbmluZyBsaWNlbnNlcy4gSWYgdXNlZCwgb25seSBkZXBsb3ltZW50IHN0YXRlcyBpbiAiVmFsaWREZXBsU3RhdGVzIiBhcmUgY29uc2lkZXJlZC4gSWYgYSB0aHJlc2hvbGQgaXMgZGVmaW5lZCBpbiAiTWluaW11bUxpY2Vuc2VzIiwgYSB0aWNrZXQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGNyZWF0ZWQgaWYgbGVzcyBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlLiBGb3IgdGhpcywgdGhlIGNoZWNrYm94IGR5bmFtaWMgZmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiBtdXN0IGV4aXN0LiBUaGUgdGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiwgTElDRU5TRVNfQVZBSUwgYW5kIExJQ0VOU0VTX01JTiwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0IiBieSB0aGUgY29uZmlnIGl0ZW0gbmFtZSwgbnVtYmVyLCBhdmFpbGFibGUgbGljZW5zZXMsIGFuZCBtaW5pbXVtIHJlcXVpcmVkIGF2YWlsYWJsZSBsaWNlbnNlcywgcmVzcGVjdGl2ZWx5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciBjb21wYW55J30gPSAnTcO8xZ90ZXJpIMWfaXJrZXRlIGF0YW5hbiBDSVwnbGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJcyBhc3NpZ25lZCB0byBjdXN0b21lciB1c2VyJ30gPSAnTcO8xZ90ZXJpIGt1bGxhbsSxY8SxeWEgYXRhbmFuIENJXCdsYXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJ0NNREIgQXlhcmxhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NoZWNrIGZvciBhIHVuaXF1ZSBuYW1lIG9ubHkgd2l0aGluIHRoZSBzYW1lIENvbmZpZ0l0ZW0gY2xhc3MgKFwnY2xhc3NcJykgb3IgZ2xvYmFsbHkgKFwnZ2xvYmFsXCcpLCB3aGljaCBtZWFucyBldmVyeSBleGlzdGluZyBDb25maWdJdGVtIGlzIHRha2VuIGludG8gYWNjb3VudCB3aGVuIGxvb2tpbmcgZm9yIGR1cGxpY2F0ZXMuJ30gPQogICAgICAgICdZYWxuxLF6Y2EgYXluxLEgQ29uZmlnSXRlbSBzxLFuxLFmxLEgKFwnY2xhc3NcJykgacOnaW5kZSB2ZXlhIGdlbmVsIG9sYXJhayAoXCdnbG9iYWxcJykgYmVuemVyc2l6IGJpciBhZCBvbHVwIG9sbWFkxLHEn8SxbsSxIGtvbnRyb2wgZWRpbjsgYnUsIHlpbmVsZW5lbmxlcmkgYXJhcmtlbiBtZXZjdXQgaGVyIENvbmZpZ0l0ZW1cJ8SxbiBkaWtrYXRlIGFsxLFuZMSxxJ/EsSBhbmxhbcSxbmEgZ2VsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICdCaXIgYWRsYW5kxLFybWEgxZ9lbWFzxLEgdXlndWxhbWFrIGnDp2luIGJpciBtb2TDvGwgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIG51bWJlciBzY2hlbWUuJ30gPSAnQmlyIHNhecSxIMWfZW1hc8SxbsSxIHV5Z3VsYW1hayBpw6dpbiBiaXIgbW9kw7xsIHNlw6dpbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSB2ZXJzaW9uIHN0cmluZyBzY2hlbWUuJ30gPSAnU8O8csO8bSBkaXplc2kgxZ9lbWFzxLFuxLEgdXlndWxhbWFrIGnDp2luIGJpciBtb2TDvGwgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYXR0cmlidXRlcyB0byB0cmlnZ2VyIHRoZSBjcmVhdGlvbiBvZiBhIG5ldyB2ZXJzaW9uLid9ID0gJ1llbmkgYmlyIHPDvHLDvG3DvG4gb2x1xZ90dXJ1bG1hc8SxbsSxIHRldGlrbGVtZWsgacOnaW4gw7Z6bml0ZWxpa2xlcmkgc2XDp2luLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICdCdSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWbEsW5hIGF0YW5hY2FrIGthdGVnb3JpbGVyaSBzZcOnaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnQ29uZmlnSXRlbSBPdmVydmlldyBpw6dpbiBzw7x0dW4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBmaWx0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgZ2VuZWwgYmFrxLHFn8SxbmRhIGZpbHRyZWxlbmViaWxlbiBzw7x0dW5sYXIuIE5vdDogWWFsbsSxemNhIFlhcMSxbGFuZMSxcm1hIMOWxJ9lc2kgw7Z6bml0ZWxpa2xlcmluZSB2ZSBEaW5hbWlrIEFsYW5sYXJhIChEeW5hbWljRmllbGRfTmFtZVgpIGl6aW4gdmVyaWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGVrbGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGVkaXQuJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBkw7x6ZW5sZW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGFjY291bnRpbmcgbGljZW5zZXMgZm9yIGEgZ2l2ZW4gY29uZmlnIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBsb2dnaW5nIHRvIGhpc3RvcnkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBnZcOnbWnFn2UgZ8O8bmzDvMSfZSBrYXlkZXRtZXlpIHNhxJ9sYXlhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIG9sYXkgbW9kw7xsw7wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IHVwZGF0ZXMgY29uZmlnIGl0ZW1zIHRvIHRoZWlyIGN1cnJlbnQgZGVmaW5pdGlvbi4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGdlw6dlcmxpIHRhbsSxbWxhcsSxbmEgZ8O2cmUgZ8O8bmNlbGxleWVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgb2xheSBtb2TDvGzDvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gaGlzdG9yeS4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlw6dtacWfaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YXpkxLFybWEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YWvEsW5sYcWfdMSxcm1hLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJ0NvbmZpZ0l0ZW0gQcSfYcOnIEfDtnLDvG7DvG3DvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICdDb25maWdJdGVtIFPDvHLDvG0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQcWfYcSfxLFkYWtpIHPEsW7EsWZsYXLEsW4gQ29uZmlnSXRlbXMgw7bEn2VsZXJpIEVsYXN0aWNzZWFyY2ggc3VudWN1c3VuZGEgc2FrbGFubWF5YWNha3TEsXIuIEJ1bnUgbWV2Y3V0IENJXCdsYXJhIHV5Z3VsYW1hayBpw6dpbiwgYnUgc2XDp2VuZWsgZGXEn2nFn3RpcmlsZGlrdGVuIHNvbnJhIENJIGdlw6dpxZ9pbmluIGtvbnNvbCDDvHplcmluZGVuIMOnYWzEscWfdMSxcsSxbG1hc8SxIGdlcmVraXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0HFn2HEn8SxZGFraSBkYcSfxLF0xLFtIGR1cnVtbGFyxLFuYSBzYWhpcCBDb25maWdJdGVtcywgRWxhc3RpY3NlYXJjaCBzdW51Y3VzdW5kYSBkZXBvbGFubWF5YWNha3TEsXIuIEJ1bnUgbWV2Y3V0IENJXCdsYXJhIHV5Z3VsYW1hayBpw6dpbiwgYnUgc2XDp2VuZWsgZGXEn2nFn3RpcmlsZGlrdGVuIHNvbnJhIENJIGdlw6dpxZ9pbmluIGtvbnNvbCDDvHplcmluZGVuIMOnYWzEscWfdMSxcsSxbG1hc8SxIGdlcmVraXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBMaW1pdCd9ID0gJ1lhcMSxbGFuZMSxcm1hIMOWxJ9lc2kgU8SxbsSxcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICdLb25maWfDvHJhc3lvbiBTYXlmYSBiYcWfxLFuYSDDtsSfZSBzxLFuxLFyxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICdLb25maWfDvHJhc3lvbiBZw7ZuZXRpbWkgVmVyaXRhYmFuxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBidWxrIG1vZHVsZS4nfSA9ICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRvcGx1IG1vZMO8bMO8Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGFya2EgdcOnIHnDtm5sZW5kaXJpY2lzaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJlIHRoZSBjb2x1bW5zIHdoaWNoIGFyZSBhdmFpbGFibGUgZm9yIHZpZXdpbmcgUGVybWlzc2lvbiBDb25kaXRpb25zIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UsIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBhcmUgbm90IHNwZWNpZmljYWxseSBjb25maWd1cmVkLiBUaGlzIHNldHRpbmcgaXMgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciB0aGUgb3RoZXIgUGVybWlzc2lvbiBDb25kaXRpb24gQ29sdW1ucyBzZXR0aW5ncy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAnWWFwxLFsYW5kxLFybWEgw5bEn2VsZXJpIGnDp2luIHRhbsSxbWxhciBvbHXFn3R1cnVuIHZlIHnDtm5ldGluLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGVzIFRpY2tldHMgZm9yIENvbmZpZ0l0ZW1zIGF0IHNwZWNpZmljIHRpbWUgcG9pbnRzLid9ID0gJ0JlbGlybGkgemFtYW4gbm9rdGFsYXLEsW5kYSBDb25maWdJdGVtcyBpw6dpbiBCaWxldGxlciBvbHXFn3R1cnVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICdNw7zFn3RlcmlsZXIgZ2XDp21pxZ8gQ0kgc8O8csO8bWxlcmluaSBnw7ZyZWJpbGlybGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICdNw7zFn3RlcmlsZXIsIGdlw6dtacWfIENJIHPDvHLDvG1sZXJpIGFyYXPEsW5kYSBtYW51ZWwgb2xhcmFrIGdlw6dpxZ8geWFwbWEgb2xhbmHEn8SxbmEgc2FoaXB0aXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxIGnDp2luIMO2em5pdGVsaWt0ZSBrdWxsYW7EsWxhY2FrIHZhcnNhecSxbGFuIHZlcmlsZXIuIMOWcm5lazogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICdZYXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLEgacOnaW4gw7Z6bml0ZWxpa3RlIGt1bGxhbsSxbGFjYWsgdmFyc2F5xLFsYW4gdmVyaWxlci4gw5ZybmVrOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9MzsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnQmHEn2xhbnTEsWzEsSBuZXNuZWxlciB3aWRnZXRcJ8SxbmRhIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikgYmlyIGF5YXIgZMO8xJ9tZXNpbmluIG1ldmN1dCBvbGR1xJ91IEV5bGVtbGVyaSB0YW7EsW1sYXnEsW4uIEzDvHRmZW4gYnUgRXlsZW1sZXJpbiBhxZ9hxJ/EsWRha2kgSlMgdmUgQ1NTIGRvc3lhbGFyxLFuxLEga2F5ZGV0bWnFnyBvbG1hc8SxIGdlcmVrdGnEn2luaSB1bnV0bWF5xLFuOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyB2ZSBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICdTw7xyw7xtIGRpemVsZXJpIGnDp2luIGJpciBUZW1wbGF0ZTo6VG9vbGtpdCDFn2VtYXPEsSB0YW7EsW1sYXnEsW4uIFlhbG7EsXpjYSBTw7xyw7xtIERpemVzaSBNb2TDvGzDvCBUZW1wbGF0ZVRvb2xraXQgb2xhcmFrIGF5YXJsYW5txLHFn3NhIGt1bGxhbsSxbMSxci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ0JpciBtw7zFn3RlcmluaW4gYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSBnw7ZybWVzaW5lIGl6aW4gdmVyaWxlbiBiaXIgZGl6aSBrb8WfdWwgdGFuxLFtbGF5xLFuLiBLb8WfdWxsYXIgaXN0ZcSfZSBiYcSfbMSxIG9sYXJhayBiZWxpcmxpIG3DvMWfdGVyaSBncnVwbGFyxLF5bGEgc8SxbsSxcmxhbmTEsXLEsWxhYmlsaXIuIEFkIHRlayB6b3J1bmx1IG5pdGVsaWt0aXIuIEJhxZ9rYSBiaXIgc2XDp2VuZWsgYmVsaXJ0aWxtZXpzZSwgdMO8bSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmkgYnUga2F0ZWdvcmkgYWx0xLFuZGEgZ8O2csO8bsO8ciBvbGFjYWt0xLFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnR2VuZWwgQXJhecO8esO8IGt1bGxhbmFyYWsgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBzaWxtZWsgacOnaW4gR2VyZWtsaSBpemlubGVyaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdHZW5lbCBBcmF5w7x6w7wga3VsbGFuYXJhayBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGFsbWFrIGnDp2luIEdlcmVrbGkgaXppbmxlcmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNlYXJjaCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnR2VuZWwgQXJhecO8esO8IGt1bGxhbmFyYWsgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZWxlcmluaSBhcmFtYWsgacOnaW4gR2VyZWtsaSBpemlubGVyaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICdHZW5lbCBBcmF5w7x6w7wga3VsbGFuYXJhayBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGF5YXJsYW1hayBpw6dpbiBHZXJla2xpIGl6aW5sZXJpIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBhbiBvdmVydmlldyBtb2R1bGUgdG8gc2hvdyB0aGUgc21hbGwgdmlldyBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBsaXN0Lid9ID0KICAgICAgICAnQmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgbGlzdGVzaW5pbiBrw7zDp8O8ayBnw7Zyw7xuw7xtw7xuw7wgZ8O2c3Rlcm1layBpw6dpbiBiaXIgZ2VuZWwgYmFrxLHFnyBtb2TDvGzDvCB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgaWYgdGhlIGxpbmsgdHlwZSBsYWJlbHMgbXVzdCBiZSBzaG93biBpbiB0aGUgbm9kZSBjb25uZWN0aW9ucy4nfSA9CiAgICAgICAgJ0JhxJ9sYW50xLEgdMO8csO8IGV0aWtldGxlcmluaW4gZMO8xJ/DvG0gYmHEn2xhbnTEsWxhcsSxbmRhIGfDtnN0ZXJpbGlwIGfDtnN0ZXJpbG1leWVjZcSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW0gYWTEsW7EsSBkZW5ldGxlbWVrIHZlIGlsZ2lsaSBoYXRhIGlsZXRpbGVyaW5pIGfDtnN0ZXJtZWsgacOnaW4gaGVyIENvbmZpZ0l0ZW0gc8SxbsSxZsSxIGnDp2luIGF5csSxIGF5csSxIGTDvHplbmxpIGlmYWRlbGVyIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSBzxLFuxLFmxLFuYSBiYcSfbMSxIG9sYXJhayB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlbmVsIGfDtnLDvG7DvG3DvG5kZWtpIGt1bGxhbsSxbGFiaWxpciBDSSBzw7x0dW5sYXLEsW7EsSB0YW7EsW1sYXIuIEhlciBnaXJpxZ8gYmlyIHPEsW7EsWYgYWTEsSB2ZSBpbGdpbGkgc8SxbsSxZiBpw6dpbiBrdWxsYW7EsWxhYmlsaXIgYWxhbmxhcmRhbiBvbHXFn2FuIGJpciBkaXppZGVuIG9sdcWfbWFsxLFkxLFyLiBEaW5hbWlrIGFsYW4gZ2lyacWfbGVyaSBEeW5hbWljRmllbGRfRmllbGROYW1lIMWfZW1hc8SxbmEgdXltYWsgem9ydW5kYWTEsXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdBcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIHNvbnVjdW51biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhbGFtYXPEsSBpw6dpbiB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIMO2em5pdGVsacSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DvMWfdGVyaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgc29udWN1bnVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxcmFsYW1hc8SxIGnDp2luIHZhcnNhecSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgw7Z6bml0ZWxpxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0J1IGnFn2xlbWluIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgc29udWN1bnVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxcmFsYW1hc8SxIGnDp2luIHZhcnNhecSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgw7Z6bml0ZWxpxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnQXJhY8SxIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBzb251Y3VuZGFraSB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhc8SxbsSxIHRhbsSxbWxhci4gWXVrYXLEsTogZW4gZXNraSBlbiDDvHN0dGUuIEHFn2HEn8SxOiBlbiBzb24gw7xzdHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnTcO8xZ90ZXJpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBzb251Y3VuZGFraSB2YXJzYXnEsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsXJhc8SxbsSxIHRhbsSxbWxhci4gWXVrYXLEsTogZW4gZXNraSBlbiDDvHN0dGUuIEHFn2HEn8SxOiBlbiBzb24gw7xzdHRlLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICdCdSBpxZ9sZW1pbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIHNvbnVjdW5kYWtpIHZhcnNhecSxbGFuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxcmFzxLFuxLEgdGFuxLFtbGFyLiBZdWthcsSxOiBlbiBlc2tpIGVuIMO8c3R0ZS4gQcWfYcSfxLE6IGVuIHNvbiDDvHN0dGUuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSBzxLFuxLFmxLFuYSBiYcSfbMSxIG9sYXJhayB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlbmVsIGfDtnLDvG7DvG3DvG5kZSBDSVwnbGFyxLFuIHZhcnNhecSxbGFuIGfDtnLDvG50w7xsZW5lbiBzw7x0dW5sYXLEsW7EsSB0YW7EsW1sYXIuIEhlciBnaXJpxZ8gYmlyIHPEsW7EsWYgYWTEsSB2ZSBpbGdpbGkgc8SxbsSxZiBpw6dpbiBrdWxsYW7EsWxhYmlsaXIgYWxhbmxhcsSxbiBiaXIgZGl6aXNpbmRlbiBvbHXFn21hbMSxZMSxci4gRGluYW1payBhbGFuIGdpcmnFn2xlcmkgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZSDFn2VtYXPEsW5hIHV5bWFrIHpvcnVuZGFkxLFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICdHw7ZzdGVyaWxlY2VrIHZhcnNhecSxbGFuIGlsacWfa2kgZGVyaW5sacSfaW5pIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxIGnDp2luIHZhcnNhecSxbGFuIGfDtnN0ZXJpbGVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgw7Z6bml0ZWxpxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJLZXkiIG11c3QgaGF2ZSB0aGUgbmFtZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBpbiB0aGlzIGNhc2UgXCdYXCcsICJDb250ZW50IiBtdXN0IGhhdmUgdGhlIHZhbHVlIG9mIHRoZSBEeW5hbWljIEZpZWxkIGRlcGVuZGluZyBvbiB0aGUgRHluYW1pYyBGaWVsZCB0eXBlLCAgVGV4dDogXCdhIHRleHRcJywgRHJvcGRvd246IFwnMVwnLCBEYXRlL1RpbWU6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyBhbmQgb3IgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBhcmFtYSBla3JhbsSxIGnDp2luIHZhcnNhecSxbGFuIGfDtnN0ZXJpbGVuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgbml0ZWxpxJ9pbmkgdGFuxLFtbGFyLiDDlnJuZWs6ICJBbmFodGFyIiBEaW5hbWlrIEFsYW7EsW4gYWTEsW7EsSBpw6dlcm1lbGlkaXIsIGJ1IGR1cnVtZGEgXCdYXCcsICLEsMOnZXJpayIgRGluYW1payBBbGFuIHTDvHLDvG5lIGJhxJ9sxLEgb2xhcmFrIERpbmFtaWsgQWxhbsSxbiBkZcSfZXJpbmkgacOnZXJtZWxpZGlyLCBNZXRpbjogXCdiaXIgbWV0aW5cJywgQcOnxLFsxLFyIG1lbsO8OiBcJzFcJywgVGFyaWgvU2FhdDogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIHZlIHZleWEgXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRGb3JtYXQ9d2VlazsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50U3RhcnQ9QmVmb3JlOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRWYWx1ZT03XCc7Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHN1Ym9iamVjdCBvZiB0aGUgY2xhc3MgXCdJVFNNQ29uZmlnSXRlbVwnLid9ID0KICAgICAgICAnXCdJVFNNQ29uZmlnSXRlbVwnIHPEsW7EsWbEsW7EsW4gdmFyc2F5xLFsYW4gYWx0IG5lc25lc2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRpc2FibGVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICdDSSBzxLFuxLFmxLFuYSBiYcSfbMSxIG9sYXJhayB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlbmVsIGfDtnLDvG7DvG3DvG5kZWtpIGt1bGxhbsSxbGFiaWxpciBDSSBzw7x0dW5sYXLEsW7EsSB0YW7EsW1sYXIuIEhlciBnaXJpxZ8gYmlyIHPEsW7EsWYgYWTEsSB2ZSBpbGdpbGkgc8SxbsSxZiBpw6dpbiBrdWxsYW7EsWxhYmlsaXIgYWxhbmxhcmRhbiBvbHXFn2FuIGJpciBkaXppZGVuIG9sdcWfbWFsxLFkxLFyLiBEaW5hbWlrIGFsYW4gZ2lyacWfbGVyaSBEeW5hbWljRmllbGRfRmllbGROYW1lIMWfZW1hc8SxbmEgdXltYWsgem9ydW5kYWTEsXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJ0J1IGVrcmFuIGnDp2luIHplbmdpbiBtZXRpbiBkw7x6ZW5sZXlpY2kgYmlsZcWfZW5pbmluIHnDvGtzZWtsacSfaW5pIHRhbsSxbWxhci4gU2F5xLEgKHBpa3NlbCkgdmV5YSB5w7x6ZGUgZGXEn2VyaSAoZ8O2cmVsaSkgZ2lyaW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG51bWJlciBvZiByb3dzIGZvciB0aGUgQ0kgZGVmaW5pdGlvbiBlZGl0b3IgaW4gdGhlIGFkbWluIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1nDtm5ldGljaSBhcmF5w7x6w7xuZGVraSBDSSB0YW7EsW3EsSBkw7x6ZW5sZXlpY2lzaSBpw6dpbiBzYXTEsXIgc2F5xLFzxLFuxLEgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBvcmRlciBvZiBpbmNpZGVudCBzdGF0ZXMgZnJvbSBoaWdoIChlLmcuIGNyaWNpdGFsKSB0byBsb3cgKGUuZy4gZnVuY3Rpb25hbCkuJ30gPQogICAgICAgICdPbGF5IGR1cnVtbGFyxLFuxLFuIHnDvGtzZWsgKMO2cm4uIGtyaWtpdGFsKSBpbGUgZMO8xZ/DvGsgKMO2cm4uIGZvbmtzaXlvbmVsKSBhcmFzxLFuZGFraSBzxLFyYXPEsW7EsSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnQmHEn2xhbnTEsWzEsSBkZXN0ZWsgdGFsZXBsZXJpbmluIGJpciBDSVwnbsSxbiBkdXJ1bXVudSBldGtpbGV5ZWJpbGVjZcSfaSBpbGdpbGkgZGHEn8SxdMSxbSBkdXJ1bWxhcsSxbsSxIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdBZ2VudElUU01Db25maWdJdGVtIGVrcmFuxLEgacOnaW4gYXJhbWEgc8SxbsSxcsSxbsSxIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIGVrcmFuxLEgacOnaW4gYXJhbWEgc8SxbsSxcsSxbsSxIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtIGVrcmFuxLEgacOnaW4gYXJhbWEgc8SxbsSxcsSxbsSxIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICdDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoIGVrcmFuxLEgacOnaW4gYXJhbWEgc8SxbsSxcsSxbsSxIHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgUHVibGljSVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldyBmb3IgYWxsIENJIGNsYXNzZXMuIElmIHRoZXJlIGlzIG5vIGVudHJ5LCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnVMO8bSBDSSBzxLFuxLFmbGFyxLEgacOnaW4gYmHEn2xhbnTEsSB0YWJsb3N1IGthcm1hxZ/EsWsgZ8O2csO8bsO8bcO8bmRlIENJXCdsYXLEsW4gZ8O2c3RlcmlsZW4gc8O8dHVubGFyxLFuxLEgdGFuxLFtbGFyLiBIZXJoYW5naSBiaXIgZ2lyacWfIHlva3NhLCB2YXJzYXnEsWxhbiBzw7x0dW5sYXIgZ8O2c3RlcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNob3duIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBsaW5rIHRhYmxlIGNvbXBsZXggdmlldywgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGJlIHByZWZpeGVkIHdpdGggdGhlIGNsYXNzIG5hbWUgYW5kIGRvdWJsZSBjb2xvbnMgKGkuZS4gQ29tcHV0ZXI6OikuIFRoZXJlIGFyZSBhIGZldyBDSS1BdHRyaWJ1dGVzIHRoYXQgY29tbW9uIHRvIGFsbCBDSXMgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcjogQ29tcHV0ZXI6Ok5hbWUsIENvbXB1dGVyOjpDdXJEZXBsU3RhdGUsIENvbXB1dGVyOjpDcmVhdGVUaW1lKS4gVG8gc2hvdyBpbmRpdmlkdWFsIENJLUF0dHJpYnV0ZXMgYXMgZGVmaW5lZCBpbiB0aGUgQ0ktRGVmaW5pdGlvbiwgdGhlIGZvbGxvd2luZyBzY2hlbWUgbXVzdCBiZSB1c2VkIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4gSWYgdGhlcmUgaXMgbm8gZW50cnkgZm9yIGEgQ0kgY2xhc3MsIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICdDSSBzxLFuxLFmxLFuYSBiYcSfbMSxIG9sYXJhayBiYcSfbGFudMSxIHRhYmxvc3Uga2FybWHFn8SxayBnw7Zyw7xuw7xtw7xuZGUgQ0lcJ2xhcsSxbiBnw7ZzdGVyaWxlbiBzw7x0dW5sYXLEsW7EsSB0YW7EsW1sYXIuIEhlciBnaXJpxZ9pbiDDtm7DvG5lIHPEsW7EsWYgYWTEsSB2ZSDDp2lmdCBpa2kgbm9rdGEgw7xzdCDDvHN0ZSBrb251bG1hbMSxZMSxciAow7ZybmXEn2luIEJpbGdpc2F5YXI6OikuIFTDvG0gQ0lcJ2xhcmRhIG9ydGFrIG9sYW4gYmlya2HDpyBDSS3DlnpuaXRlbGnEn2kgdmFyZMSxciAoQmlsZ2lzYXlhciBzxLFuxLFmxLEgacOnaW4gw7ZybmVrOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBDSS1UYW7EsW3EsW5kYSB0YW7EsW1sYW5kxLHEn8SxIGdpYmkgYmlyZXlzZWwgQ0ktw5Z6bml0ZWxpa2xlcmluaSBnw7ZzdGVybWVrIGnDp2luIGHFn2HEn8SxZGFraSDFn2VtYSBrdWxsYW7EsWxtYWzEsWTEsXIgKEJpbGdpc2F5YXIgc8SxbsSxZsSxIGnDp2luIMO2cm5layk6IEJpbGdpc2F5YXI6OkhhcmREaXNrOjoxLCBCaWxnaXNheWFyOjpIYXJkRGlzazo6MTo6S2FwYXNpdGU6OjEsIEJpbGdpc2F5YXI6OkhhcmREaXNrOjoyLCBCaWxnaXNheWFyOjpIYXJkRGlzazo6Mjo6S2FwYXNpdGU6OjEuIEJpciBDSSBzxLFuxLFmxLEgacOnaW4gZ2lyacWfIHlva3NhLCB2YXJzYXnEsWxhbiBzw7x0dW5sYXIgZ8O2c3RlcmlsaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSBDb25maWcgSXRlbSBBQ0wgeWFwxLFzxLFuxLFuIMO8w6fDvG5jw7wgc2V2aXllc2luZGUgaGFuZ2kgw7bEn2VsZXJpbiBcJ0V5bGVtXCcgacOnaW4ga3VsbGFuxLFsYWJpbGlyIG9sZHXEn3VudSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSBDb25maWcgSXRlbSBBQ0wgeWFwxLFzxLFuxLFuIGJpcmluY2kgc2V2aXllc2luZGUgaGFuZ2kgw7bEn2VsZXJpbiBtZXZjdXQgb2xkdcSfdW51IHRhbsSxbWxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnSVRTTSBDb25maWcgSXRlbSBBQ0wgeWFwxLFzxLFuxLFuIGlraW5jaSBzZXZpeWVzaW5kZSBoYW5naSDDtsSfZWxlcmluIG1ldmN1dCBvbGR1xJ91bnUgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICdIYW5naSBiYcSfbGFudMSxIHTDvHLDvG7DvG4gKGJpbGV0IHBlcnNwZWt0aWZpbmRlbiBhZGxhbmTEsXLEsWxhbikgYmHEn2xhbnTEsWzEsSBiaXIgQ0lcJ27EsW4gZHVydW11bnUgZXRraWxleWViaWxlY2XEn2luaSB0YW7EsW1sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggdHlwZSBvZiB0aWNrZXQgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgbGlua2VkIENJLid9ID0KICAgICAgICAnQmHEn2zEsSBiaXIgQ0lcJ27EsW4gZHVydW11bnUgaGFuZ2kgdMO8ciBiaWxldGxlcmluIGV0a2lsZXllYmlsZWNlxJ9pbmkgdGFuxLFtbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIFVwZGF0ZSd9ID0gJ1RhbsSxbSBHw7xuY2VsbGVtZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlbGV0ZSBDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICdZYXDEsWxhbmTEsXJtYSDDlsSfZXNpbmkgU2lsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAnRGHEn8SxdMSxbSBEdXJ1bXUgUmVuZ2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ1lpbmVsZW5lbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkIGV2ZW50IG1vZHVsZSB0aGF0IG1hcmtzIGNvbmZpZyBpdGVtIGRlZmluaXRpb25zIGFzIG91dCBvZiBzeW5jLCBpZiBjb250YWluaW5nIGR5bmFtaWMgZmllbGRzIGNoYW5nZS4nfSA9CiAgICAgICAgJ0RpbmFtaWsgYWxhbiBvbGF5IG1vZMO8bMO8LCBkaW5hbWlrIGFsYW5sYXLEsW4gZGXEn2nFn21lc2kgZHVydW11bmRhIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdGFuxLFtbGFyxLFuxLEgc2Vua3Jvbml6YXN5b24gZMSxxZ/EsSBvbGFyYWsgacWfYXJldGxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGFkZGl0aW9uYWwgSVRTTSBmaWVsZCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gZWsgSVRTTSBhbGFuxLEgZWtyYW7EsW5kYSBnw7ZzdGVyaWxlbiBkaW5hbWlrIGFsYW5sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DvMWfdGVyaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luZSBnZW5lbCBiYWvEscWfIGVrcmFuxLFuZGEgZ8O2c3RlcmlsZW4gZGluYW1payBhbGFubGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgZWtyYW7EsW5kYSBnw7ZzdGVyaWxlbiBkaW5hbWlrIGFsYW5sYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIMO2biB1Y3VudW4gYXluxLEgYW5kYSBiaXJkZW4gZmF6bGEgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSDDvHplcmluZGUgw6dhbMSxxZ9tYXPEsSBpw6dpbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHRvcGx1IGV5bGVtIMO2emVsbGnEn2luaSBldGtpbmxlxZ90aXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdG9wbHUgZXlsZW0gw7Z6ZWxsacSfaW5pIHlhbG7EsXpjYSBsaXN0ZWxlbmVuIGdydXBsYXIgacOnaW4gZXRraW5sZcWfdGlyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ0lUU00geWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmkgYmVuemVyc2l6IGFkbGFyIGnDp2luIGtvbnRyb2wgZXRtZSBpxZ9sZXZpbmkgZXRraW5sZcWfdGlyaXIvZGV2cmUgZMSxxZ/EsSBixLFyYWvEsXIuIEJ1IHNlw6dlbmXEn2kgZXRraW5sZcWfdGlybWVkZW4gw7ZuY2Ugc2lzdGVtaW5pemRlIHlpbmVsZW5lbiBhZGxhcmEgc2FoaXAgeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpIG9sdXAgb2xtYWTEscSfxLFuxLEga29udHJvbCBldG1lbGlzaW5pei4gQnVudSBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMga29uc29sIGtvbXV0dSBpbGUgeWFwYWJpbGlyc2luaXouJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ0JpbGV0LWNvbmZpZ2l0ZW0tbGluayDDvHplcmluZGUgY29uZmlnaXRlbS1zdGF0dXMgYXlhcmxhbWFrIGnDp2luIG9sYXkgbW9kw7xsw7wuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ1RhbSBtZXRpbiBhcmFtYSBpw6dpbiBrdWxsYW7EsWxhbiB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGRpemluaSBhbGFubGFyxLEuIEFsYW5sYXIgZGEgc2FrbGFuxLFyLCBhbmNhayBnZW5lbCBpxZ9sZXZzZWxsaWsgacOnaW4gem9ydW5sdSBkZcSfaWxkaXIuIEVrbGVyaW4gZGFoaWwgZWRpbG1lc2ksIGdpcmnFn2kgMCBvbGFyYWsgYXlhcmxheWFyYWsgdmV5YSBzaWxlcmVrIGRldnJlIGTEscWfxLEgYsSxcmFrxLFsYWJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBkaXppbmluZGUgZGVwb2xhbmFuIHZlIHRhbSBtZXRpbiBhcmFtYWxhcsSxbsSxbiB5YW7EsSBzxLFyYSBiYcWfa2EgxZ9leWxlciBpw6dpbiBkZSBrdWxsYW7EsWxhbiBhbGFubGFyLiBUYW0gacWfbGV2c2VsbGlrIGnDp2luIHTDvG0gYWxhbmxhciB6b3J1bmx1ZHVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ0hlciB3ZWIgaGl6bWV0aSAoYW5haHRhcikgacOnaW4sIGnDp2UgYWt0YXJtYW7EsW4ga8Sxc8SxdGxhbmTEscSfxLEgYmlyIGRpemkgc8SxbsSxZiAoZGXEn2VyKSB0YW7EsW1sYW5hYmlsaXIuIFNlw6dpbGVuIHTDvG0gc8SxbsSxZmxhciB2ZXlhIG1ldmN1dCB0w7xtIHPEsW7EsWZsYXIgacOnaW4gdGFuxLFtbGF5xLFjxLEgbml0ZWxpa2xlcmluIGludm9rZXIgeWFwxLFsYW5kxLFybWFzxLFuZGEgc2XDp2lsbWVzaSBnZXJla2VjZWt0aXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCDDp2HEn8SxcsSxY8SxIGthdG1hbsSxIGnDp2luIEdlbmVyaWNJbnRlcmZhY2UgbW9kw7xsIGtheWTEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICdDb25maWdJdGVtRmV0Y2ggw6dhxJ/EsXLEsWPEsSBrYXRtYW7EsSBpw6dpbiBHZW5lcmljSW50ZXJmYWNlIG1vZMO8bCBrYXlkxLEuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1GZXRjaCDDp2HEn8SxcsSxY8SxIGthdG1hbsSxIGnDp2luIEdlbmVyaWNJbnRlcmZhY2UgbW9kw7xsIGtheWTEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnSVRTTSBDb25maWdJdGVtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmUgZ2VuZWwgYmFrxLHFny4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAnSW5jaVN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdJbmNpZGVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGNsYXNzZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hc8SxbmRhIGRhxJ/EsXTEsW0gZHVydW1sYXLEsW7EsSBpw6dlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hc8SxbmEgb2xheSBkdXJ1bWxhcsSxbsSxIGRhaGlsIGVkZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBuYW1lIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG51bWJlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgYWNjb3VudGluZyBjb25maWd1cmF0aW9uIGl0ZW0gZXZlbnQgbW9kdWxlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FkZXIgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gdGhlIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ0J1IGnFn2xlbWluIHNvbnVjdW5kYSBnw7Zyw7xudMO8bGVuZWNlayBtYWtzaW11bSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHNhecSxc8SxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ0JpciBzxLFuxLFmdGFuIHNvcnVtbHUgZ3J1YnUga29udHJvbCBldG1layBpw6dpbiBtb2TDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAnQmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luZGVuIHNvcnVtbHUgZ3J1YnUga29udHJvbCBldG1layBpw6dpbiBtb2TDvGwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAnSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGlzdGF0aXN0aWtsZXJpIG9sdcWfdHVybWFrIGnDp2luIG1vZMO8bC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfEsHNpbSBNb2TDvGzDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAnTnVtYXJhIE1vZMO8bMO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FyYWPEsSBhcmF5w7x6w7xuZGUgYmlyIGFyYW1hIHNvbnVjdW51biBoZXIgc2F5ZmFzxLFuZGEgZ8O2csO8bnTDvGxlbmVjZWsgeWFwxLFsYW5kxLFybWEgw7bEn2VsZXJpbmluIHNhecSxc8SxLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNw7zFn3RlcmkgYXJhecO8esO8bmRlIGJpciBhcmFtYSBzb251Y3VudW4gaGVyIHNheWZhc8SxbmRhIGfDtnLDvG50w7xsZW5lY2VrIHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pbiBzYXnEsXPEsS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAnQXJhbmFjYWsgbmVzbmVsZXIsIGthw6cgZ2lyacWfIHZlIGhhbmdpIMO2em5pdGVsaWtsZXJpbiBnw7ZzdGVyaWxlY2XEn2kuIENvbmZpZ0l0ZW0gw7Z6bml0ZWxpa2xlcmluaW4gRWxhc3RpY3NlYXJjaCBhcmFjxLFsxLHEn8SxeWxhIGHDp8Sxa8OnYSBkZXBvbGFubWFzxLEgZ2VyZWtpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAnR2VuZWwgYmFrxLHFny4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNhdGVnb3JpZXMgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBrYXRlZ29yaWxlcmkgacOnaW4gcGFyYW1ldHJlbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0vDvMOnw7xrIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luZSBnZW5lbCBiYWvEscWfxLFuIHPDvHR1biBmaWx0cmVsZXJpIGnDp2luIHBhcmFtZXRyZWxlci4gTMO8dGZlbiBkaWtrYXQ6IFwnQWt0aWZcJyBkZcSfZXJpbmkgMCBvbGFyYWsgYXlhcmxhbWFrLCB0ZW1zaWxjaWxlcmluIGJ1IGdydWJ1biBheWFybGFyxLFuxLEga2nFn2lzZWwgdGVyY2lobGVyaW5kZSBkw7x6ZW5sZW1lbGVyaW5pIGVuZ2VsbGVyLCBhbmNhayB5w7ZuZXRpY2lsZXJpbiBiYcWfa2EgYmlyIGt1bGxhbsSxY8SxIGFkxLFuYSBheWFybGFyxLEgZMO8emVubGVtZWxlcmluZSBpemluIHZlcmlyLiBCdSBheWFybGFyxLFuIGt1bGxhbsSxY8SxIGFyYXnDvHrDvG5kZSBoYW5naSBhbGFuZGEgZ8O2c3RlcmlsZWNlxJ9pbmkga29udHJvbCBldG1layBpw6dpbiBcJ1ByZWZlcmVuY2VHcm91cFwnIGt1bGxhbsSxbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0RhxJ/EsXTEsW0gZHVydW1sYXLEsSBpw6dpbiBwYXJhbWV0cmVsZXIsIG3DvMWfdGVyaSB0ZW1zaWxjaXNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSByZW5rbGVuZGlyaWxpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHRlcmNpaGxlciBnw7Zyw7xuw7xtw7xuZGVraSBkYcSfxLF0xLFtIGR1cnVtbGFyxLEgacOnaW4gcGFyYW1ldHJlbGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZXhhbXBsZSBwZXJtaXNzaW9uIGdyb3VwcyBvZiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGF0dHJpYnV0ZXMuJ30gPQogICAgICAgICdHZW5lbCBrYXRhbG9nIMO2em5pdGVsaWtsZXJpbmluIMO2cm5layBpemluIGdydXBsYXLEsW7EsW4gcGFyYW1ldHJlbGVyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG5hbWUgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHRlcmNpaGxlciBnw7Zyw7xuw7xtw7xuZGUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFuxLFmbGFyxLEgacOnaW4gYWQgbW9kw7xsw7wgcGFyYW1ldHJlbGVyaS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBpw6dpbiBzYXnEsSBtb2TDvGzDvCBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgcGFnZXMgKGluIHdoaWNoIHRoZSBjb25maWd1cmF0aW9uIGl0ZW1zIGFyZSBzaG93bikuJ30gPQogICAgICAgICdTYXlmYWxhciBpw6dpbiBwYXJhbWV0cmVsZXIgKHlhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pbiBnw7ZzdGVyaWxkacSfaSkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHPEsW7EsWZsYXLEsSBpw6dpbiBzw7xyw7xtIGRpemVzaSBtb2TDvGzDvCBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4gdGVyY2lobGVyIGfDtnLDvG7DvG3DvG5kZWtpIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgc8SxbsSxZmxhcsSxIGnDp2luIHPDvHLDvG0gZGl6ZXNpIMWfYWJsb24gYXJhw6cgc2V0aSBtb2TDvGzDvCBwYXJhbWV0cmVsZXJpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHRlcmNpaGxlciBnw7Zyw7xuw7xtw7xuZGUgeWFwxLFsYW5kxLFybWEgw7bEn2VzaSBzxLFuxLFmbGFyxLEgacOnaW4gc8O8csO8bSB0ZXRpa2xleWljaXNpIHBhcmFtZXRyZWxlcmkuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFyxLFsbcSxxZ8gaGVyIFdlYnNlcnZpY2UgacOnaW4gaGVyIG9sYXkgacOnaW4gKEludm9rZXIgb2xhcmFrKSB5YXDEsWxhbmTEsXLEsWxtxLHFnyBleWxlbWkgZ2Vyw6dla2xlxZ90aXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJ8SwemluIGdydWJ1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBla2xlbWUgZXlsZW1pbmkga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgYXJhbWEgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ03DvMWfdGVyaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGFyYW1hIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGHEn2HDpyBnw7Zyw7xuw7xtw7wgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHpvb20gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuZGUgSVRTTSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHlha8SxbmxhxZ90xLFybWEgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtsZW1lIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBidWxrIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIHRvcGx1IElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgZWRpdCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZMO8emVubGVtZSBla3JhbsSxbsSxIGt1bGxhbm1hayBpw6dpbiBnZXJla2xpIGl6aW5sZXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSBnZcOnbWnFnyBJVFNNIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgZWtyYW7EsW7EsSBrdWxsYW5tYWsgacOnaW4gZ2VyZWtsaSBpemlubGVyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bmRlIElUU00geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB5YXpkxLFyIGVrcmFuxLFuxLEga3VsbGFubWFrIGnDp2luIGdlcmVrbGkgaXppbmxlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIHNpbG1layBpw6dpbiBnZXJla2xpIGF5csSxY2FsxLFrbGFyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ1lhcMSxbGFuZMSxcm1hIMO2xJ9lbGVyaW5pIGFyYXnEsW4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldCB0aGUgaW5jaWRlbnQgc3RhdGUgb2YgYSBDSSBhdXRvbWF0aWNhbGx5IHdoZW4gYSBUaWNrZXQgaXMgTGlua2VkIHRvIGEgQ0kuJ30gPQogICAgICAgICdCaXIgQmlsZXQgYmlyIENJXCd5YSBCYcSfbGFuZMSxxJ/EsW5kYSBDSVwnbsSxbiBvbGF5IGR1cnVtdW51IG90b21hdGlrIG9sYXJhayBheWFybGF5xLFuLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0FyYWPEsSBhcmF5w7x6w7xuw7xuIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2kgdG9wbHUgZWtyYW7EsW5kYSBkYcSfxLF0xLFtIGR1cnVtdW51IGF5YXJsYXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSB0b3BsdSBla3JhbsSxbmRhIG9sYXkgZHVydW11bnUgYXlhcmxhci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdNZW7DvGRlLCBhcmFjxLEgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHlha8SxbmxhxZ90xLFybWEgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgYmHFn2thIGJpciBuZXNuZXlsZSBpbGnFn2tpbGVuZGlybWV5aSBzYcSfbGF5YW4gYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGVraSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBnZcOnbWnFn2luZSBlcmnFn21layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pbiBnZcOnbWnFn2luZSBlcmnFn21layBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdUZW1zaWxjaSBhcmF5w7x6w7xuw7xuIHlha8SxbmxhxZ90xLFybWEgZ8O2csO8bsO8bcO8bmRlIGJpciB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpbmkgc2lsbWVrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAnWWFwxLFsYW5kxLFybWEgw7bEn2VzaSBiYcSfbGFudMSxbGFyxLFuxLEgQcSfYcOnIEfDtnLDvG7DvG3DvCBvbGFyYWsgZ8O2csO8bnTDvGxlbWVrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSDDp2/En2FsdG1hayBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIMOnb8SfYWx0bWFrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YWvEsW5sYcWfdMSxcm1hIGfDtnLDvG7DvG3DvG5kZSBiaXIgeWFwxLFsYW5kxLFybWEgw7bEn2VzaW5pIGTDvHplbmxlbWVrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnVGVtc2lsY2kgYXJhecO8esO8bsO8biB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIHlha8SxbmxhxZ90xLFybWEgZ8O2csO8bsO8bcO8bmUgZ2VyaSBkw7ZubWVrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFrxLFubGHFn3TEsXJtYSBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSB5YXpkxLFybWFrIGnDp2luIG1lbsO8ZGUgYmlyIGJhxJ9sYW50xLEgZ8O2c3RlcmlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gem9vbSBpbnRvIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG7DvG4geWFwxLFsYW5kxLFybWEgw7bEn2VzaSBnZW5lbCBnw7Zyw7xuw7xtw7xuZGUgYmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaSB5YWvEsW5sYcWfdMSxcm1hayBpw6dpbiBtZW7DvGRlIGJpciBiYcSfbGFudMSxIGfDtnN0ZXJpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ1RlbXNpbGNpIGFyYXnDvHrDvG5kZSB5YXDEsWxhbmTEsXJtYSDDtsSfZXNpIGdlw6dtacWfaW5pICh0ZXJzIHPEsXJhbMSxKSBnw7ZzdGVyaXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ0hpw6diaXJpIHNlw6dpbG1lbWnFn3NlIGfDtnN0ZXJpbGVuIHZhcnNhecSxbGFuIGthdGVnb3JpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaWRlbnRpZmllciBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0sIGUuZy4gQ29uZmlnSXRlbSMsIE15Q29uZmlnSXRlbSMuIFRoZSBkZWZhdWx0IGlzIENvbmZpZ0l0ZW0jLid9ID0KICAgICAgICAnQmlyIHlhcMSxbGFuZMSxcm1hIMO2xJ9lc2luaW4gdGFuxLFtbGF5xLFjxLFzxLEsIMO2cm5lxJ9pbiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVmFyc2F5xLFsYW4gQ29uZmlnSXRlbSNcJ2Rpci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ0NvbmZpZ0l0ZW1GZXRjaCDDp2HEn8SxcsSxY8Sxc8SxbsSxIG90b21hdGlrIG9sYXJhayB0ZXRpa2xlci4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ1PDvHLDvG0gRGl6ZXNpIMSwZmFkZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ1PDvHLDvG0gRGl6ZXNpIE1vZMO8bMO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ1PDvHLDvG0gVGV0aWtsZXlpY2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciBmaWVsZHMgc2hvdWxkIGJlIGF1dG9tYXRpY2FsbHkgZmlsbGVkICgxKSwgYW5kIGluIHRoYXQgY2FzZSBhbHNvIGJlIGhpZGRlbiBmcm9tIHRpY2tldCBmb3JtdWxhcnMgKDIpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhlIGV4ZWN1dGlvbiBvZiBDb25maWdJdGVtQUNMIGNhbiBiZSBhdm9pZGVkIGJ5IGNoZWNraW5nIGNhY2hlZCBmaWVsZCBkZXBlbmRlbmNpZXMuIFRoaXMgY2FuIGltcHJvdmUgbG9hZGluZyB0aW1lcyBvZiBmb3JtdWxhcnMsIGJ1dCBoYXMgdG8gYmUgZGlzYWJsZWQsIGlmIEFDTE1vZHVsZXMgYXJlIHRvIGJlIHVzZWQgZm9yIElUU01Db25maWdJdGVtLSBhbmQgRm9ybS1SZXR1cm5UeXBlcy4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1BQ0xcJ25pbiB5w7xyw7x0w7xsbWVzaW5pbiDDtm5iZWxsZcSfZSBhbMSxbm3EscWfIGFsYW4gYmHEn8SxbWzEsWzEsWtsYXLEsW7EsSBrb250cm9sIGVkZXJlayDDtm5sZW5pcCDDtm5sZW5lbWV5ZWNlxJ9pLiBCdSwgZm9ybcO8bGVybGVyaW4gecO8a2xlbWUgc8O8cmVsZXJpbmkgaXlpbGXFn3RpcmViaWxpciwgYW5jYWsgQUNMTW9kw7xsbGVyaSBJVFNNQ29uZmlnSXRlbS0gdmUgRm9ybS1SZXR1cm5UeXBlcyBpw6dpbiBrdWxsYW7EsWxhY2Frc2EgZGV2cmUgZMSxxZ/EsSBixLFyYWvEsWxtYWzEsWTEsXIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICdCYcWfbMSxa3RhIGhhbmdpIGdlbmVsIGJpbGdpbGVyIGfDtnN0ZXJpbGlyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydjbGFzcyd9ID0gJ3PEsW7EsWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnZ2xvYmFsJ30gPSAna8O8cmVzZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncG9zdHByb2R1Y3RpdmUnfSA9ICfDnFJFTUUgU09OUkFTSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAnw5xSRU1FIMOWTkNFU8SwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfDvHJldGtlbic7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSBpbsOnICg0NCw0NSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKSd9ID0gJzEyVTogMjEgaW7DpyAoNTMsMzQgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVU6IDI2LDI1IGluw6cgKDY2LDY4IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUgaW7DpyAoODAsMDEgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE5LWluY2ggUmFjayd9ID0gJzE5IGluw6cgUmFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSBpbsOnICg0LDQ1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMFU6IDM1IGluY2hlcyAoODguOSBjbSknfSA9ICcyMFU6IDM1IGluw6cgKDg4LDkgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxIGluw6cgUmFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVTogMzgsNSBpbsOnICg5Nyw3OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMtaW5jaCBSYWNrJ30gPSAnMjMgaW7DpyBSYWYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2IGluw6cgKDYwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknfSA9ICcyNFU6IDQyIGluw6cgKDEwNiw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1U6IDQ3LDI1IGluw6cgKDEyMCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJ30gPSAnMlU6IDMsNSBpbsOnICg4LDg5IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJ30gPSAnMzBVOiA1Miw1IGluw6cgKDEzMywzNSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1IGluw6cgKDgwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1U6IDU3LDc1IGluw6cgKDE0Niw2OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0IGluw6cgKDkwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknfSA9ICczNlU6IDYzIGluw6cgKDE2MCwwMiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzkuNCBpbmNoZXMgKDEwMDAgbW0pJ30gPSAnMzksNCBpbsOnICgxMDAwIG1tKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUgaW7DpyAoMTczLDM1IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNVOiA1LDI1IGluw6cgKDEzLDM0IGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1IGluw6cgKDE4Niw2OSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDMuMyBpbmNoZXMgKDExMDAgbW0pOid9ID0gJzQzLDMgaW7DpyAoMTEwMCBtbSk6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJ30gPSAnNDVVOiA3OCw3NSBpbsOnICgyMDAsMDIgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ3LjIgaW5jaGVzICgxMjAwIG1tKSd9ID0gJzQ3LDIgaW7DpyAoMTIwMCBtbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknfSA9ICc0OFU6IDg0IGluw6cgKDIxMywzNiBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyBpbsOnICgxNyw3OCBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknfSA9ICc1VTogOCw3NSBpbsOnICgyMiwyMyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSBpbsOnICgyNiw2NyBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1U6IDEyLDI1IGluw6cgKDMxLDEyIGNtKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQgaW7DpyAoMzUsNTYgY20pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKSd9ID0gJzlVOiAxNSw3NSBpbsOnICg0MCwwMSBjbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdNdWhhc2ViZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY2NvdW50aW5nIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkZHJlc3MgQWxsb2NhdGlvbid9ID0gJ0FkcmVzIFRhaHNpc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ1nDtm5ldGljaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICdBbmFsb2cgVGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcGFjaGUgTGljZW5zZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBcHBsaWFuY2UgVHlwZSd9ID0gJ0NpaGF6IFRpcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICdBa8O8IEthcGFzaXRlc2kgKEFoKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IFR5cGUnfSA9ICdQaWwgVGlwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ0JpbmEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ090b2LDvHMgQXJhecO8esO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSURSJ30gPSAnQ0lEUic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUnfSA9ICdDUFUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVIENsYXNzJ30gPSAnQ1BVIFPEsW7EsWbEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnS2FwYXNpdGUgKEdCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpayBrYXJ0xLEgYmHFn8SxbmEga2FwYXNpdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICdLYXJ0IE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ0thcnQgT2t1eXVjdSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICdLYXJ0IFRpcGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ03DvMWfdGVyaSBTZXJ0aWZpa2FsYXLEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICdNw7zFn3RlcmkgWWF6xLFsxLFtxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAnTcO8xZ90ZXJpIGthdGVnb3Jpc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnU2FhdCBIxLF6xLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tzcGVlZCd9ID0gJ1NhYXQgSMSxesSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICdLb2QgxLBtemFsYW1hIFNlcnRpZmlrYWxhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZlcmVuY2UgUGhvbmUnfSA9ICdLb25mZXJhbnMgVGVsZWZvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uc3VsdGluZyBBZ3JlZW1lbnQnfSA9ICdEYW7EscWfbWFubMSxayBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCd9ID0gJ8SwbGV0acWfaW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJ0Rpc3RyaWLDvHTDtnJsZSDEsGxldGnFn2ltZSBHZcOnaW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICdLb250ZXluZXIgWcO2bmV0aW1pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0J30gPSAnU8O2emxlxZ9tZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnU8O2emxlxZ9tZSBUw7xyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICdTw7Z6bGXFn21lIHPDvHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAnU8O2emxlxZ9tZSBzw7xyZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvcmRsZXNzIFBob25lIChERUNUIFBob25lKSd9ID0gJ0thYmxvc3V6IFRlbGVmb24gKERFQ1QgVGVsZWZvbiknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnTWFsaXlldCBiaXJpbWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bnQgb2YgbGljZW5zZXMnfSA9ICdSdWhzYXQgc2F5xLFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ09sdcWfdHVydWxtYSBUYXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ8OWemVsIFJhZic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCBBeXLEsWxtxLHFnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydETlMtU2VydmVyJ30gPSAnRE5TIFN1bnVjdXN1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RWSSd9ID0gJ0RWSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIEludm9pY2UnfSA9ICdGYXR1cmEgVGFyaWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICdTaXBhcmnFnyBUYXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJ1RlbWluYXQgVGFyaWhpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgcmVsZWFzZSd9ID0gJ1lhecSxbmxhbm1hIHRhcmloaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXNrdG9wJ30gPSAnTWFzYcO8c3TDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJ0Rpc3BsYXlQb3J0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvY3VtZW50IFNpZ25pbmcgQ2VydGlmaWNhdGVzJ30gPSAnQmVsZ2UgxLBtemFsYW1hIFNlcnRpZmlrYWxhcsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWbEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnRS1wb3N0YSBTZXJ0aWZpa2FsYXLEsSAoUy9NSU1FIFNlcnRpZmlrYWxhcsSxKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWJlZGRlZCBTSU0gKGVTSU0pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtcGxveW1lbnQgQ29udHJhY3QnfSA9ICfEsMWfIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ1NvbiBJUCBBZHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICdEZXN0ZcSfaW4gc29udSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJ1NvbiBLdWxsYW5tYSBUYXJpaGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ0hhcmljaSBTYWJpdCBTw7xyw7xjw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlyZXdhbGwnfSA9ICdHw7x2ZW5saWsgRHV2YXLEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ8OccsO8biBZYXrEsWzEsW3EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ1ZvbGFuIEVuZXJqaSBEZXBvbGFtYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ0Zvcm0gRmFrdMO2csO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICdGcmFuY2hpc2UgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAnw5xjcmV0c2l6IHlhesSxbMSxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHUEwgKEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyYWwgSW5mb3JtYXRpb24nfSA9ICdHZW5lbCBCaWxnaWxlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ0dyYWZpayBLYXJ0bGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR3JhcGhpY3MgY2FyZCd9ID0gJ0dyYWZpayBrYXJ0xLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJ0hETUknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGFyZHdhcmUnfSA9ICdEb25hbsSxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJ0RvbmFuxLFtIE1vZGVsaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICdEb25hbsSxbSBBxJ/EsXJsxLHEn8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICdLdWxha2zEsWsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICdJUCBQcm90b2tvbMO8JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ0tpbWxpayB2ZSBFcmnFn2ltIFnDtm5ldGltaSAoSUFNKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAnRW52YW50ZXIgTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAnWWF0xLFyxLFtIG1hbGl5ZXRsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAnRmF0dXJhIE51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0tsYXZ5ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSknfSA9ICdMQ0QgTW9uaXTDtnIgKFPEsXbEsSBLcmlzdGFsIEVrcmFuKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMRUQgTW9uaXRvciAoTGlnaHQgRW1pdHRpbmcgRGlvZGUpJ30gPSAnTEVEIE1vbml0w7ZyIChJxZ/EsWsgWWF5YW4gRGl5b3QpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xHUEwgKExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYW5kbGluZSBQaG9uZSd9ID0gJ1NhYml0IFRlbGVmb24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAnRGl6w7xzdMO8IEJpbGdpc2F5YXInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICdFbmxlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ0thdG1hbiAxOiBGaXppa3NlbCBLYXRtYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAnS2F0bWFuIDI6IFZlcmkgQmHEn2xhbnTEsSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnS2F0bWFuIDM6IEHEnyBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICdLYXRtYW4gMzogQcSfIEthdG1hbsSxIChTdXBlcm5ldCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAnS2F0bWFuIDQ6IFRhxZ/EsW1hIEthdG1hbsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICdLYXRtYW4gNTogT3R1cnVtIEthdG1hbsSxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ0thdG1hbiA2OiBTdW51bSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ0thdG1hbiA3OiBVeWd1bGFtYSBLYXRtYW7EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMZWFzZSBBZ3JlZW1lbnQnfSA9ICdLaXJhIFPDtnpsZcWfbWVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ0xpc2FucyBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBDb3VudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEtleSd9ID0gJ0xpc2FucyBBbmFodGFyxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnTGlzYW5zIFTDvHLDvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAnTGlzYW5zIHPDvHJlc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICfFnnUgdGFyaWhlIGthZGFyIGxpc2FucyBzw7xyZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICdMaXR5dW0gRGVtaXIgRm9zZmF0IChMaUZlUE80KSBQaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bS1Jb24gKExpLWlvbikgQmF0dGVyeSd9ID0gJ0xpdHl1bSDEsHlvbiAoTGktaW9uKSBQaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICdLcmVkaSBTw7Z6bGXFn21lc2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ8Sww6dpbmRlIGJ1bHVuYW4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnQm95bGFtJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnw5xyZXRpY2kgZmlybWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ01ha3NpbXVtIFnDvGsgS2FwYXNpdGVzaSAoVyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnSGFmxLF6YSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ0JlbGxlayBUw7xyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ01pbmkgUmFmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICdDZXAgVGVsZWZvbnUgTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ01vYmlsL0VtYmVkZGVkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAnTW9kZWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICdNb2RlbCBBw6fEsWtsYW1hc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ01vbml0w7ZyIMOHw7Z6w7xuw7xybMO8xJ/DvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICdNb25pdMO2ciBCb3l1dHUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW91c2UnfSA9ICdGYXJlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsnfSA9ICfFnmViZWtlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ0HEnyBCaWxnaXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mb3JtYXRpb24nfSA9ICdBxJ8gQmlsZ2lsZXJpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICdBxJ8gS2F0bWFuxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICdOaWtlbC1LYWRtaXl1bSAoTmlDZCkgUGlsJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAnTmlrZWwtTWV0YWwgSGlkcml0IChOaU1IKSBQaWwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnR2l6bGlsaWsgU8O2emxlxZ9tZXNpIChOREEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnTm90IERlZnRlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdDUFUgc2F5xLFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIFJBTSBtb2R1bGVzJ30gPSAnUkFNIG1vZMO8bMO8IHNhecSxc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ0dyYWZpayBrYXJ0xLEgc2F5xLFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQgTW9uaXTDtnIgKE9yZ2FuaWsgScWfxLFrIFlheWFuIERpeW90KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfEsMWfbGV0bWUgbWFsaXlldGxlcmknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnU2lwYXJpxZ8gTnVtYXJhc8SxJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnRGnEn2VyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J091dHB1dHMnfSA9ICfDh8Sxa3TEsWxhcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICdQSU4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4gMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICdPcnRha2zEsWsgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcnBldHVhbCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSAvIFZvSVAnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgTnVtYmVyJ30gPSAnVGVsZWZvbiBOdW1hcmFzxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ1RlbGVmb24gVGlwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ0Zpemlrc2VsIMOHZWtpcmRla2xlcic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ0fDvMOnIERhxJ/EsXTEsW3EsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ8WedXJhZGFuIHNhdMSxbiBhbMSxbmTEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnUmFmIERlcmlubGnEn2knOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICdSYWYgw5xuaXRlbGVyaSAoVSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUm9vbSd9ID0gJ09kYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTSBLYXJ0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAnU1NML1RMUyBTZXJ0aWZpa2FsYXLEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTYWxlcyBDb250cmFjdCd9ID0gJ1NhdMSxxZ8gU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ1V5ZHUgVGVsZWZvbnUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhbGVkIExlYWQtQWNpZCAoU0xBKSBCYXR0ZXJ5J30gPSAnU8SxemTEsXJtYXogS3VyxZ91bi1Bc2l0IChTTEEpIEFrw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICdTZXJpIG51bWFyYXPEsSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICdTdW51Y3UgWWF6xLFsxLFtxLEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdIaXptZXQgU8O2emxlxZ9tZXNpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgVGFnJ30gPSAnU2VydmlzIEV0aWtldGknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAnU29rZXQgVGlwaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTb2Z0d2FyZSd9ID0gJ1lhesSxbMSxbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ0tvbnXFn21hY8SxbGFyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnQmHFn2xhbmfEscOnIElQIEFkcmVzaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdG9yYWdlJ30gPSAnRGVwb2xhbWEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICdEZXBvbGFtYSBCw7Zsw7xtw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICdCYcSfbMSxIE9ydGFrbMSxayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAnw5Z6ZXQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhpbiBDbGllbnQnfSA9ICfEsG5jZSDEsHN0ZW1jaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnxLBwbGlrbGVyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnVGh1bmRlcmJvbHQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKSd9ID0gJ1RvcGxhbSBHcmFmaWsga2FydMSxIFJBTVwnaSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIFJBTSAoR0IpJ30gPSAnVG9wbGFtIFJBTSAoR0IpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICdEb2t1bm1hdGlrIEVrcmFuIE1vbml0w7Zyw7wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICdLdWxlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQiBIdWInfSA9ICdVU0IgSHViJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnVVNCLUMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVkdBJ30gPSAnVkdBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZQTid9ID0gJ1ZQTic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUiBIZWFkc2V0J30gPSAnVlIgS3VsYWtsxLFrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWwgQ2xpZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZpcnR1YWxMaW5rJ30gPSAnVmlydHVhbExpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ1ZvSVAgVGVsZWZvbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAnV2ViIGthbWVyYXPEsSc7CgoKICAgIHB1c2ggQHsgJFNlbGYtPntKYXZhU2NyaXB0U3RyaW5nc30gLy8gW10gfSwgKAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJywKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY29tbXVuaWNhdGlvbi4nLAogICAgJ0NvbmZpcm0nLAogICAgJ0Rpc21pc3MnLAogICAgJ0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/JywKICAgICdJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnLAogICAgJ05vJywKICAgICdOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJywKICAgICdPaycsCiAgICAnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbicsCiAgICAnUGxlYXNlIGVudGVyIGF0IGxlYXN0IG9uZSBzZWFyY2ggdmFsdWUgb3IgKiB0byBmaW5kIGFueXRoaW5nLicsCiAgICAnU2VhcmNoJywKICAgICdTZXR0aW5ncycsCiAgICAnU3VibWl0JywKICAgICdUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnVGhlIGZvbGxvd2luZyByb2xlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdZZXMnLAogICAgKTsKCn0KCjE7Cg==</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/QvtGI0YPQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbHNvIHNlYXJjaCBpbiBwcmV2aW91cyB2ZXJzaW9ucz8nfSA9ICfQotCw0LrQvtC2INGI0YPQutCw0YLQuCDQsiDQv9C+0L/QtdGA0LXQtNC90ZbRhSDQstC10YDRgdGW0Y/RhT8nOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1UcmVlVmlldwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVHJlZVZpZXcgZm9yIENvbmZpZ0l0ZW0nfSA9ICdUcmVlVmlldyDQtNC70Y8gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ9Cg0ZbQstC10L3RjCDQs9C70LjQsdC40L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ9CX0LHRltC70YzRiNC40YLQuC/Qt9C80LXQvdGI0LjRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJ9CU0L7RgdGP0LPQvdGD0YLQviDQvNCw0LrRgdC40LzQsNC70YzQvdC+0LPQviDRgNGW0LLQvdGPINC/0L7RgdC40LvQsNC90Ywg0LTQu9GPIENvbmZpZ0l0ZW0hJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBJbmZvcm1hdGlvbid9ID0gJ9CG0L3RhNC+0YDQvNCw0YbRltGPINC/0YDQviDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJ30gPSAn0J/QvtGC0L7Rh9C90LjQuSDRgdGC0LDQvSDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnfSA9ICfQn9C+0YLQvtGH0L3QuNC5INGB0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICfQntGB0YLQsNC90L3RltC5INGA0LDQtyDQt9C80ZbQvdC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfQntGB0YLQsNC90L3RltC5INGA0LDQtyDQt9C80ZbQvdC10L3Qvic7CgogICAgIyBUZW1wbGF0ZTogQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91ciBDb25maWdJdGVtcyd9ID0gJ9CS0LDRiNGWINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJ9Cf0L7RiNGD0Log0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgSlMgVGVtcGxhdGU6IENsYXNzSW1wb3J0Q29uZmlybQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfQkdGD0LTQtSDRltC80L/QvtGA0YLQvtCy0LDQvdC+INC90LDRgdGC0YPQv9C90ZYg0LrQu9Cw0YHQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICfQkdGD0LTRg9GC0Ywg0ZbQvNC/0L7RgNGC0L7QstCw0L3RliDQvdCw0YHRgtGD0L/QvdGWINGA0L7Qu9GWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nfSA9CiAgICAgICAgJ9CX0LLQtdGA0L3RltGC0Ywg0YPQstCw0LPRgywg0YnQviDRgtCw0LrQvtC2INCx0YPQtNGD0YLRjCDRgdGC0LLQvtGA0LXQvdGWINCy0ZbQtNC/0L7QstGW0LTQvdGWINC00LjQvdCw0LzRltGH0L3RliDQv9C+0LvRjyDRliDQutC70LDRgdC4IEdlbmVyYWxDYXRhbG9nLCDRliDQsNCy0YLQvtC80LDRgtC40YfQvdC1INCy0LjQtNCw0LvQtdC90L3RjyDQvdC1INC/0LXRgNC10LTQsdCw0YfQtdC90L4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn0KXQvtGH0LXRgtC1INC/0YDQvtC00L7QstC20LjRgtC4Pyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmVlZCBFeGFtcGxlQ2xhc3NlcyEnfSA9ICfQn9C+0YLRgNGW0LHQvdGWINC/0YDQuNC60LvQsNC00Lgg0LrQu9Cw0YHRltCyISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICfQktC40LfQvdCw0YfQtdC90L3RjyDQvdC1INGUINC60L7RgNC10LrRgtC90LjQvCBZQU1MINGF0LXRiNC10LwuJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldzogSVRTTSBDb25maWdJdGVtJ30gPSAn0J7Qs9C70Y/QtDog0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00nOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnQ29uZmlnSXRlbUlEINC90LUg0LLQutCw0LfRg9GU0YLRjNGB0Y8hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn0JLQsNC8INC/0L7RgtGA0ZbQsdC10L0g0L/RgNC40L3QsNC50LzQvdGWINC+0LTQuNC9INCy0LjQsdGA0LDQvdC40Lkg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgZG9uXCd0IGhhdmUgd3JpdGUgYWNjZXNzIHRvIHRoaXMgY29uZmlndXJhdGlvbiBpdGVtOiAlcy4nfSA9CiAgICAgICAgJ9CjINCy0LDRgSDQvdC10LzQsNGUINC/0YDQsNCyINC90LAg0LfQsNC/0LjRgSDQtNC+INGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zc6ICVzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBkZWZpbml0aW9uIHdhcyBkZWZpbmVkIGZvciBjbGFzcyAlcyEnfSA9ICfQlNC70Y8g0LrQu9Cw0YHRgyAlcyDQvdC1INCy0LjQt9C90LDRh9C10L3QviDQstC40LfQvdCw0YfQtdC90L3RjyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ9CV0LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyAiJXMiINC90LUg0LfQvdCw0LnQtNC10L3QviDQsiDQsdCw0LfRliDQtNCw0L3QuNGFISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ9Cd0LUg0LLQtNCw0LvQvtGB0Y8g0LLQuNC00LDQu9C40YLQuCDRltC00LXQvdGC0LjRhNGW0LrQsNGC0L7RgCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgJXMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfQktC10YDRgdGW0Y4g0LTQu9GPIENvbmZpZ0l0ZW1JRCAlcyDQvdC1INC30L3QsNC50LTQtdC90L4hJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ0NvbmZpZ0l0ZW1JRCwgRHVwbGljYXRlSUQg0LDQsdC+IENsYXNzSUQg0L3QtSDQstC60LDQt9GD0Y7RgtGM0YHRjyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIGlzIGdpdmVuISd9ID0gJ9CU0L7RgdGC0YPQvyDQvdC1INC90LDQtNCw0ZTRgtGM0YHRjyEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn0J3QtdC80L7QttC70LjQstC+INC/0L7QutCw0LfQsNGC0Lgg0ZbRgdGC0L7RgNGW0Y4sINC90LUg0LLQutCw0LfQsNC90L4gQ29uZmlnSXRlbUlEISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ9Cd0LXQvNC+0LbQu9C40LLQviDQv9C+0LrQsNC30LDRgtC4INGW0YHRgtC+0YDRltGOLCDQvdC10LzQsNGUINC/0YDQsNCyINC00L7RgdGC0YPQv9GDISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgdmVyc2lvbiAoSUQ9JXMpJ30gPSAn0J3QvtCy0LAg0LLQtdGA0YHRltGPIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQntC90L7QstC70LXQvdC+INGB0YLQsNC9INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8gKNC90L7QstC40Lk9JXMsINGB0YLQsNGA0LjQuT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn0J7QvdC+0LLQu9C10L3QuNC5INGB0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyAo0L3QvtCy0LjQuT0lcywg0YHRgtCw0YDQuNC5PSVzKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ0NvbmZpZ0l0ZW0gKElEPSVzKSDQstC40LTQsNC70LXQvdC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAn0JTQvtC00LDQvdC+INC/0L7RgdC40LvQsNC90L3RjyDQvdCwICVzICjRgtC40L89JXMpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfQn9C+0YHQuNC70LDQvdC90Y8g0L3QsCAlcyAodHlwZT0lcykg0LLQuNC00LDQu9C10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn0J7QvdC+0LLQu9C10L3QviDQstC40LfQvdCw0YfQtdC90L3RjyBDb25maWdJdGVtIChJRD0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfQhtC8XCfRjyDQvtC90L7QstC70LXQvdC+ICjQvdC+0LLQtT0lcywg0YHRgtCw0YDQtT0lcyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICfQkNGC0YDQuNCx0YPRgiAlcyDQt9C80ZbQvdC10L3QviDQtyAiJXMiINC90LAgIiVzIic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uICVzIGRlbGV0ZWQnfSA9ICfQktC40LTQsNC70LXQvdC+INCy0LXRgNGB0ZbRjiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICdDb25maWdJdGVtSUQg0LDQsdC+IFZlcnNpb25JRCDQvdC1INCy0LrQsNC30YPRjtGC0YzRgdGPISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBjb25maWcgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfQndC10LzQvtC20LvQuNCy0L4g0L/QvtC60LDQt9Cw0YLQuCDQtdC70LXQvNC10L3RgiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINC90LXQvNCw0ZQg0L/RgNCw0LIg0LTQvtGB0YLRg9C/0YMhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnQ29uZmlnSXRlbUlEICVzINC90LUg0LfQvdCw0LnQtNC10L3QviDQsiDQsdCw0LfRliDQtNCw0L3QuNGFISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtJ30gPSAnQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAn0L3QsNC00YDRg9C60L7QstCw0L3QviDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiAlcyDQsiAlcyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAn0J/QvtGB0LjQu9Cw0L3QvdGPJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAn0J3QtdC/0YDQsNCy0LjQu9GM0L3QuNC5IENsYXNzSUQhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnQ2xhc3NJRCDQvdC1INC90LDQtNCw0ZTRgtGM0YHRjyEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfQn9GA0LDQstCwINC00L7RgdGC0YPQv9GDINC00LvRjyDRhtGM0L7Qs9C+INC60LvQsNGB0YMg0L3QtSDQvdCw0LTQsNC90L4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfQkdC10LfRgNC10LfRg9C70YzRgtCw0YLQvdC+ISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ9Cg0LXQt9GD0LvRjNGC0LDRgtC4INC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfQndC10LzQvtC20LvQuNCy0L4g0L/QvtC60LDQt9Cw0YLQuCDQtdC70LXQvNC10L3Rgiwg0L3QtdC80LDRlCDQv9GA0LDQsiDQtNC+0YHRgtGD0L/RgyDQtNC70Y8gQ29uZmlnSXRlbSEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAnQ29uZmlnSXRlbSDQvdC1INC30L3QsNC50LTQtdC90L4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ9CS0LXRgNGB0ZbQuSDQvdC1INC30L3QsNC50LTQtdC90L4hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAn0L7Qv9C10YDQsNGC0LjQstC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn0L/QvtC/0LXRgNC10LTQttC10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn0ZbQvdGG0LjQtNC10L3Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3RjyDRhtGM0L7Qs9C+INC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn0KHRgtCw0L0g0ZbQvdGG0LjQtNC10L3RgtGDINGG0YzQvtCz0L4g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfQndC10LzQsNGUINC/0YDQsNCyINC00L7RgdGC0YPQv9GDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ9Ck0ZbQu9GM0YLRgCDQvdC10LTRltC50YHQvdC40LkhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfQn9Cw0YDQsNC80LXRgtGA0Lgg0L/QvtGI0YPQutGDINC90LXQstGW0YDQvdGWISc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJ9Cf0L7QutCw0LfQsNC90ZYg0LXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn0KLQuNC/INGB0YLQsNC90YMg0YDQvtC30LPQvtGA0YLQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICfQn9C+0YLQvtGH0L3QuNC5INGB0YLQsNC9INGW0L3RhtC40LTQtdC90YLRgyDQotC40L8g0ZbQvdGG0LjQtNC10L3RgtGDJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvSVRTTUNvbmZpZ0l0ZW0vTGF5b3V0RGF0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmV0d2Vlbid9ID0gJyDQnNGW0LYnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ9Ce0LHQvNC10LbQtdC90L3RjyDQutC70LDRgdGW0LIg0LTQu9GPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCBvbmUgb3IgbW9yZSBjbGFzc2VzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfQktC40LHQtdGA0ZbRgtGMINC+0LTQuNC9INCw0LHQviDQtNC10LrRltC70YzQutCwINC60LvQsNGB0ZbQsiwg0YnQvtCxINC+0LHQvNC10LbQuNGC0Lgg0LLQuNCx0ZbRgCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfQntCx0LzQtdC20LXQvdC90Y8g0LrQu9Cw0YHRltCyINC00LvRjyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgZGVwbG95bWVudCBzdGF0ZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ9CS0LjQsdC10YDRltGC0Ywg0L7QtNC40L0g0LDQsdC+INC00LXQutGW0LvRjNC60LAg0LrQu9Cw0YHRltCyLCDRidC+0LEg0L7QsdC80LXQttC40YLQuCDQstC40LHRltGAINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfQlNC40L3QsNC80ZbRh9C90LjQuSAoQ29uZmlnSXRlbSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJ9Ch0YLQsNGC0LjRh9C90LjQuSAo0LLQtdGA0YHRltGPKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICfQotC40L8g0L/QvtGB0LjQu9Cw0L3QvdGPINC90LAg0L/QvtGB0LjQu9Cw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ9Cn0Lgg0YHRgtC+0YHRg9GU0YLRjNGB0Y8g0YbQtSDQv9C+0YHQuNC70LDQvdC90Y8gQ29uZmlnSXRlbSDQsNCx0L4g0YHRgtCw0YLQuNGH0L3QvtGXINCy0LXRgNGB0ZbRlyDQvtCxXCfRlNC60YLQsCwg0L3QsCDRj9C60LjQuSDQv9C+0YHQuNC70LDRlNGC0YzRgdGPINC/0L7RgdC40LvQsNC90L3Rjy4g0JTQu9GPINC00LjQvdCw0LzRltGH0L3QuNGFINC/0L7RgdC40LvQsNC90Ywg0LLQuNC60L7QvdGD0ZTRgtGM0YHRjyDQu9C40YjQtSDQvtCx0YfQuNGB0LvQtdC90L3RjyDQv9C+0YLQvtGH0L3QvtCz0L4g0YHRgtCw0L3RgyDRltC90YbQuNC00LXQvdGC0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAn0JLQuNCx0LXRgNGW0YLRjCDQsNGC0YDQuNCx0YPRgiwg0LfQsCDRj9C60LjQvCDQsdGD0LTQtSDQt9C00ZbQudGB0L3RjtCy0LDRgtC40YHRjyDQv9C+0YjRg9C6INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwtc291cmNlIGtleSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIHR5cGUgb2YgZGlzcGxheSd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9EeW5hbWljRmllbGQvRHJpdmVyL0NvbmZpZ0l0ZW1WZXJzaW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBY3RpdmF0ZSB0aGlzIG9wdGlvbiB0byBkaXNwbGF5IHZhbHVlcyBhcyBhIHRyZWUsIGdyb3VwZWQgYnkgY29uZmlnIGl0ZW1zLid9ID0KICAgICAgICAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0lUU01Db25maWdJdGVtL0RlZmluaXRpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Jhc2Ugc3RydWN0dXJlIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgYSBoYXNoIHdpdGggZGF0YSBpbiBZQU1MIGZvcm1hdC4nfSA9CiAgICAgICAgJ9Ch0YLRgNGD0LrRgtGD0YDQsCDQsdCw0LfQuCDQtNCw0L3QuNGFINC90LXQstGW0YDQvdCwLiDQkdGD0LTRjCDQu9Cw0YHQutCwLCDQvdCw0LTQsNC50YLQtSDRhdC10Ygg0Lcg0LTQsNC90LjQvNC4INGDINGE0L7RgNC80LDRgtGWIFlBTUwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAn0KDRj9C00L7QuiBZQU1MINC/0L7RgtGA0ZbQsdC90L4g0L/QvtGH0LjQvdCw0YLQuCDQtyBcJy0tLVwnLic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9MaW5rLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgcHVyZ2UgdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluay4nfSA9ICfQndC1INCy0LTQsNC70L7RgdGPINC+0YfQuNGB0YLQuNGC0Lgg0YLQsNCx0LvQuNGG0Y4gY29uZmlnaXRlbV9saW5rLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn0JLRltC00L/QvtCy0ZbQtNC90LjRhSDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyINC90LUg0LfQvdCw0LnQtNC10L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3VsZCBub3QgaW5zZXJ0IGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9Cd0LUg0LLQtNCw0LvQvtGB0Y8g0LLRgdGC0LDQstC40YLQuCDQsiDRgtCw0LHQu9C40YbRjiBjb25maWdpdGVtX2xpbmsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJ9CS0YHRgtCw0LLQuNCyIDAg0YDRj9C00LrRltCyINGDINGC0LDQsdC70LjRhtGOIGNvbmZpZ2l0ZW1fbGluayc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICfQnNCw0LrRgdC40LzQsNC70YzQvdCwINC60ZbQu9GM0LrRltGB0YLRjCDQvtC00L3QvtCz0L4g0LXQu9C10LzQtdC90YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfQoNGP0LTQvtC6INCy0LXRgNGB0ZbRlyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICfQn9C+0LzQuNC70LrQsCDRgdC40L3RhdGA0L7QvdGW0LfQsNGG0ZbRlyDQstC40LfQvdCw0YfQtdC90YwuINCR0YPQtNGMINC70LDRgdC60LAsINC/0LXRgNC10LLRltGA0YLQtSDQu9C+0LMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn0KMg0LLQsNGBINGUINCy0LjQt9C90LDRh9C10L3QvdGPIElUU01Db25maWdJdGVtLCDRj9C60ZYg0L3QtSDRgdC40L3RhdGA0L7QvdGW0LfQvtCy0LDQvdGWLiDQkdGD0LTRjCDQu9Cw0YHQutCwLCDRgNC+0LfQs9C+0YDQvdGW0YLRjCDQtNC40L3QsNC80ZbRh9C90ZYg0LfQvNGW0L3QuCDQv9C+0LvRltCyIElUU01Db25maWdJdGVtLic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn0JfQsNC60ZbQvdGH0LjQstGB0Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFpbnRlbmFuY2UnfSA9ICfQntCx0YHQu9GD0LPQvtCy0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn0J/RltC70L7Rgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn0JfQsNC/0LvQsNC90L7QstCw0L3Qvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXBhaXInfSA9ICfQoNC10LzQvtC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV0aXJlZCd9ID0gJ9Cd0LAg0L/QtdC90YHRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXZpZXcnfSA9ICfQntCz0LvRj9C0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfQotC10YHRgtGD0LLQsNC90L3Rjy9RQSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAn0J7Qs9C70Y/QtCDRgtCwINC/0ZbQtNGC0LLQtdGA0LTQttC10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ9CG0LzQv9C+0YDRgiDQutC70LDRgdGW0LIv0YDQvtC70LXQuSDRgtCwINC/0L7Qslwn0Y/Qt9Cw0L3QuNGFINC3INC90LjQvNC4INC/0L7Qu9GW0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfQktC40L3QuNC60LvQsCDQv9C+0LzQuNC70LrQsCDQv9GW0LQg0YfQsNGBINGW0LzQv9C+0YDRgtGDINC60LvQsNGB0YMuJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDQn9GA0LjRhdC+0LLQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtINCf0L7QutCw0LfQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9CU0L7Qt9Cy0L7Qu9GP0ZQg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4INGA0L7Qt9GI0LjRgNC10L3RliDRg9C80L7QstC4INC/0L7RiNGD0LrRgyDQtNC70Y8g0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLiDQl9CwINC00L7Qv9C+0LzQvtCz0L7RjiDRhtGW0ZTRlyDRhNGD0L3QutGG0ZbRlyDQstC4INC80L7QttC10YLQtSDRiNGD0LrQsNGC0LgsINC90LDQv9GA0LjQutC70LDQtCwg0L3QsNC30LLRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtyDRgtCw0LrQuNC80Lgg0YPQvNC+0LLQsNC80LgsINGP0LogIigqa2V5MSomJiprZXkyKikiINCw0LHQviAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJ9CU0L7Qt9Cy0L7Qu9GP0ZQg0YDQvtC30YjQuNGA0LXQvdGWINGD0LzQvtCy0Lgg0L/QvtGI0YPQutGDINGDINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINC60LvRltGU0L3RgtCwLiDQl9CwINC00L7Qv9C+0LzQvtCz0L7RjiDRhtGW0ZTRlyDRhNGD0L3QutGG0ZbRlyDQstC4INC80L7QttC10YLQtSDRiNGD0LrQsNGC0LgsINC90LDQv9GA0LjQutC70LDQtCwg0L3QsNC30LLRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQtyDRgtCw0LrQuNC80Lgg0YPQvNC+0LLQsNC80LgsINGP0LogIigqa2V5MSomJiprZXkyKikiINCw0LHQviAiKCprZXkxKnx8KmtleTIqKSIuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkIENJcyd9ID0gJ9Cf0YDQuNC30L3QsNGH0LXQvdGWINCa0IYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIgYnkgdGhlIGNvbmZpZyBpdGVtIG5hbWUsIG51bWJlciwgYXZhaWxhYmxlIGxpY2Vuc2VzLCBhbmQgbWluaW11bSByZXF1aXJlZCBhdmFpbGFibGUgbGljZW5zZXMsIHJlc3BlY3RpdmVseS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDSXMgYXNzaWduZWQgdG8gY3VzdG9tZXIgY29tcGFueSd9ID0gJ9Ca0IYsINC/0YDQuNC30L3QsNGH0LXQvdGWINC60L7QvNC/0LDQvdGW0Zct0LrQu9GW0ZTQvdGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICfQn9GW0LvQvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NNREIgU2V0dGluZ3MnfSA9ICfQndCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8gQ01EQic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAn0J/QtdGA0LXQstGW0YDRj9GC0Lgg0YPQvdGW0LrQsNC70YzQvdC1INGW0LxcJ9GPINGC0ZbQu9GM0LrQuCDQsiDQvNC10LbQsNGFINC+0LTQvdC+0LPQviDQutC70LDRgdGDIENvbmZpZ0l0ZW0gKFwnY2xhc3NcJykg0LDQsdC+INCz0LvQvtCx0LDQu9GM0L3QviAoXCdnbG9iYWxcJyksINGJ0L4g0L7Qt9C90LDRh9Cw0ZQsINGJ0L4g0L/RgNC4INC/0L7RiNGD0LrRgyDQtNGD0LHQu9GW0LrQsNGC0ZbQsiDQstGA0LDRhdC+0LLRg9GU0YLRjNGB0Y8g0LrQvtC20LXQvSDRltGB0L3Rg9GO0YfQuNC5IENvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICfQktC40LHQtdGA0ZbRgtGMINC80L7QtNGD0LvRjCwg0YnQvtCxINC30LDRgdGC0L7RgdGD0LLQsNGC0Lgg0YHRhdC10LzRgyDRltC80LXQvdGD0LLQsNC90L3Rjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJ9CS0LjQsdC10YDRltGC0Ywg0LzQvtC00YPQu9GMLCDRidC+0LEg0LfQsNGB0YLQvtGB0YPQstCw0YLQuCDQvdC+0LzQtdGA0L3RgyDRgdGF0LXQvNGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICfQktC40LHQtdGA0ZbRgtGMINC80L7QtNGD0LvRjCDQtNC70Y8g0LfQsNGB0YLQvtGB0YPQstCw0L3QvdGPINGB0YXQtdC80Lgg0YDRj9C00LrRltCyINCy0LXRgNGB0ZbQuS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICfQktC40LHQtdGA0ZbRgtGMINCw0YLRgNC40LHRg9GC0LgsINGJ0L7QsSDQt9Cw0L/Rg9GB0YLQuNGC0Lgg0YHRgtCy0L7RgNC10L3QvdGPINC90L7QstC+0Zcg0LLQtdGA0YHRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgY2F0ZWdvcmllcyB0byBhc3NpZ24gdG8gdGhpcyBjb25maWcgaXRlbSBjbGFzcy4nfSA9ICfQktC40LHQtdGA0ZbRgtGMINC60LDRgtC10LPQvtGA0ZbRlywg0Y/QutGWINGB0LvRltC0INC/0YDQuNC30L3QsNGH0LjRgtC4INGG0YzQvtC80YMg0LrQu9Cw0YHRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2xvciBkZWZpbml0aW9ucyBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbiBjb25maWcgaXRlbSBmaWx0ZXJzIGZvciBDb25maWdJdGVtIE92ZXJ2aWV3Lid9ID0gJ9Ck0ZbQu9GM0YLRgNC4INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YHRgtC+0LLQv9GG0Y8g0LTQu9GPINCe0LPQu9GP0LTRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb2x1bW5zIHRoYXQgY2FuIGJlIGZpbHRlcmVkIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBOb3RlOiBPbmx5IENvbmZpZyBJdGVtIGF0dHJpYnV0ZXMgYW5kIER5bmFtaWMgRmllbGRzIChEeW5hbWljRmllbGRfTmFtZVgpIGFyZSBhbGxvd2VkLid9ID0KICAgICAgICAn0KHRgtC+0LLQv9GG0ZYsINGP0LrRliDQvNC+0LbQvdCwINCy0ZbQtNGE0ZbQu9GM0YLRgNGD0LLQsNGC0Lgg0LIg0L7Qs9C70Y/QtNGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLiDQn9GA0LjQvNGW0YLQutCwOiDQlNC+0L/Rg9GB0LrQsNGO0YLRjNGB0Y8g0LvQuNGI0LUg0LDRgtGA0LjQsdGD0YLQuCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGC0LAg0LTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPIChEeW5hbWljRmllbGRfTmFtZVgpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbXMnfSA9ICfQldC70LXQvNC10L3RgtC4INC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBhZGQuJ30gPSAn0JTQvtC00LDRgtC4INC10LvQtdC80LXQvdGCINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICfQoNC10LTQsNCz0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgYWNjb3VudGluZyBsaWNlbnNlcyBmb3IgYSBnaXZlbiBjb25maWcgaXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSBldmVudCBtb2R1bGUgdGhhdCBlbmFibGVzIGxvZ2dpbmcgdG8gaGlzdG9yeSBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPINC80L7QtNGD0LvRjyDQv9C+0LTRltC5LCDRj9C60LjQuSDQtNC+0LfQstC+0LvRj9GUINC30LDQv9C40YHRg9Cy0LDRgtC4INGW0YHRgtC+0YDRltGOINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAn0JzQvtC00YPQu9GMINC/0L7QtNGW0Lkg0LTQu9GPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcsINGP0LrQuNC5INC+0L3QvtCy0LvRjtGUINC10LvQtdC80LXQvdGC0Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC00L4g0ZfRhSDQv9C+0YLQvtGH0L3QvtCz0L4g0LLQuNC30L3QsNGH0LXQvdC90Y8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAn0IbRgdGC0L7RgNGW0Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gcHJpbnQuJ30gPSAn0JTRgNGD0Log0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHpvb20uJ30gPSAn0JzQsNGB0YjRgtCw0LEg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVHJlZSBWaWV3J30gPSAn0JTQtdGA0LXQstC+INC10LvQtdC80LXQvdGC0LAg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gVmVyc2lvbid9ID0gJ0NvbmZpZ0l0ZW0g0JLQtdGA0YHRltGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIG9mIHRoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJ0NvbmZpZ0l0ZW1zINC90LDRgdGC0YPQv9C90LjRhSDQutC70LDRgdGW0LIg0L3QtSDQsdGD0LTRg9GC0Ywg0LfQsdC10YDRltCz0LDRgtC40YHRjyDQvdCwINGB0LXRgNCy0LXRgNGWIEVsYXN0aWNzZWFyY2guINCp0L7QsSDQt9Cw0YHRgtC+0YHRg9Cy0LDRgtC4INGG0LUg0LTQviDRltGB0L3Rg9GO0YfQuNGFIENJLCDQvNGW0LPRgNCw0YbRltGPIENJINC/0L7QstC40L3QvdCwINCx0YPRgtC4INC30LDQv9GD0YnQtdC90LAg0YfQtdGA0LXQtyDQutC+0L3RgdC+0LvRjCDQv9GW0YHQu9GPINC30LzRltC90Lgg0YbRltGU0Zcg0L7Qv9GG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgd2l0aCB0aGUgZm9sbG93aW5nIGRlcGxveW1lbnQgc3RhdGVzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnQ29uZmlnSXRlbXMg0Lcg0L3QsNGB0YLRg9C/0L3QuNC80Lgg0YHRgtCw0L3QsNC80Lgg0YDQvtC30LPQvtGA0YLQsNC90L3RjyDQvdC1INCx0YPQtNGD0YLRjCDQt9Cx0LXRgNGW0LPQsNGC0LjRgdGPINC90LAg0YHQtdGA0LLQtdGA0ZYgRWxhc3RpY3NlYXJjaC4g0KnQvtCxINC30LDRgdGC0L7RgdGD0LLQsNGC0Lgg0YbQtSDQtNC+INGW0YHQvdGD0Y7Rh9C40YUgQ0ksINC80ZbQs9GA0LDRhtGW0Y8gQ0kg0L/QvtCy0LjQvdC90LAg0LHRg9GC0Lgg0LfQsNC/0YPRidC10L3QsCDRh9C10YDQtdC3INC60L7QvdGB0L7Qu9GMINC/0ZbRgdC70Y8g0LfQvNGW0L3QuCDRhtGW0ZTRlyDQvtC/0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICfQntCx0LzQtdC20LXQvdC90Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIGxpbWl0IHBlciBwYWdlLid9ID0gJ9Ca0L7QvdGE0ZbQs9GD0YDQsNGG0ZbRjyDQntCx0LzQtdC20LXQvdC90Y8g0LrRltC70YzQutC+0YHRgtGWINC10LvQtdC80LXQvdGC0ZbQsiDQvdCwINGB0YLQvtGA0ZbQvdGG0ZYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gTWFuYWdlbWVudCBEYXRhYmFzZS4nfSA9ICfQkdCw0LfQsCDQtNCw0L3QuNGFINGD0L/RgNCw0LLQu9GW0L3QvdGPINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlNGOLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAn0JXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC80LDRgdC+0LLQvtCz0L4g0LzQvtC00YPQu9GPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIGJhY2tlbmQgcm91dGVyIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtC+0L3RhNGW0LPRg9GA0LDRhtGW0Y8g0LXQu9C10LzQtdC90YLQsCDQv9C+0YjRg9C60YMg0LHQtdC60LXQvdC0LdC80LDRgNGI0YDRg9GC0LjQt9Cw0YLQvtGA0LAg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICfQodGC0LLQvtGA0Y7QudGC0LUg0YLQsCDQutC10YDRg9C50YLQtSDQstC40LfQvdCw0YfQtdC90L3Rj9C80Lgg0LTQu9GPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn0KHRgtCy0L7RgNGO0ZQg0LrQstC40YLQutC4INC00LvRjyBDb25maWdJdGVtcyDRgyDQv9C10LLQvdGWINC80L7QvNC10L3RgtC4INGH0LDRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICfQmtC70ZbRlNC90YLQuCDQvNC+0LbRg9GC0Ywg0L/QtdGA0LXQs9C70Y/QtNCw0YLQuCDRltGB0YLQvtGA0LjRh9C90ZYg0LLQtdGA0YHRltGXIENJLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICfQmtC70ZbRlNC90YLQuCDQvNCw0Y7RgtGMINC80L7QttC70LjQstGW0YHRgtGMINCy0YDRg9GH0L3RgyDQv9C10YDQtdC80LjQutCw0YLQuNGB0Y8g0LzRltC2INGW0YHRgtC+0YDQuNGH0L3QuNC80Lgg0LLQtdGA0YHRltGP0LzQuCBDSS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyIuJ30gPQogICAgICAgICfQlNCw0L3RliDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LIg0LDRgtGA0LjQsdGD0YLRliDQvdCwINC10LrRgNCw0L3RliDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuINCf0YDQuNC60LvQsNC0OiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ9CU0LDQvdGWINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQsiDQsNGC0YDQuNCx0YPRgtGWINC90LAg0LXQutGA0LDQvdGWINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0J/RgNC40LrQu9Cw0LQ6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9GC0LUg0LTRltGXLCDQtNC70Y8g0Y/QutC40YUg0LrQvdC+0L/QutCwINC90LDQu9Cw0YjRgtGD0LLQsNC90Ywg0LTQvtGB0YLRg9C/0L3QsCDRgyDQstGW0LTQttC10YLRliDQv9C+0LJcJ9GP0LfQsNC90LjRhSDQvtCxXCfRlNC60YLRltCyIChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuINCX0LLQtdGA0L3RltGC0Ywg0YPQstCw0LPRgywg0YnQviDQsiDRhtC40YUg0LTRltGP0YUg0L/QvtCy0LjQvdC90ZYg0LHRg9GC0Lgg0LfQsNGA0LXRlNGB0YLRgNC+0LLQsNC90ZYg0L3QsNGB0YLRg9C/0L3RliBKUyDRliBDU1Mg0YTQsNC50LvQuDogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMg0ZYgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDRgdGF0LXQvNGDIFRlbXBsYXRlOjpUb29sa2l0INC00LvRjyDRgNGP0LTQutGW0LIg0LLQtdGA0YHRltC5LiDQktC40LrQvtGA0LjRgdGC0L7QstGD0ZTRgtGM0YHRjyDQu9C40YjQtSDRgyDQstC40L/QsNC00LrRgywg0Y/QutGJ0L4g0LzQvtC00YPQu9GMINGA0Y/QtNC60ZbQsiDQstC10YDRgdGW0Lkg0LzQsNGUINC30L3QsNGH0LXQvdC90Y8gVGVtcGxhdGVUb29sa2l0Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGNvbmZpZyBpdGVtIGNhbiBiZSBwdWJsaWNseSBzZWVuLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY3VzdG9tZXIgaXMgYWxsb3dlZCB0byBzZWUgYSBjb25maWcgaXRlbS4gQ29uZGl0aW9ucyBjYW4gb3B0aW9uYWxseSBiZSByZXN0cmljdGVkIHRvIGNlcnRhaW4gY3VzdG9tZXIgZ3JvdXBzLiBOYW1lIGlzIHRoZSBvbmx5IG1hbmRhdG9yeSBhdHRyaWJ1dGUuIElmIG5vIG90aGVyIG9wdGlvbnMgYXJlIGdpdmVuLCBhbGwgY29uZmlnIGl0ZW1zIHdpbGwgYmUgdmlzaWJsZSB1bmRlciB0aGF0IGNhdGVnb3J5Lid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0YLQtSDQvdCw0LHRltGAINGD0LzQvtCyLCDQt9CwINGP0LrQuNGFINC60L7RgNC40YHRgtGD0LLQsNGH0LXQstGWINC00L7Qt9Cy0L7Qu9C10L3QviDQsdCw0YfQuNGC0Lgg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLiDQl9CwINCx0LDQttCw0L3QvdGP0LwsINGD0LzQvtCy0Lgg0LzQvtC20YPRgtGMINCx0YPRgtC4INC+0LHQvNC10LbQtdC90ZYg0L/QtdCy0L3QuNC80Lgg0LPRgNGD0L/QsNC80Lgg0LrQvtGA0LjRgdGC0YPQstCw0YfRltCyLiDQhNC00LjQvdC40Lwg0L7QsdC+0LJcJ9GP0LfQutC+0LLQuNC8INCw0YLRgNC40LHRg9GC0L7QvCDRlCDQvdCw0LfQstCwLiDQr9C60YnQviDQvdC1INCy0LrQsNC30LDQvdC+INC20L7QtNC90LjRhSDRltC90YjQuNGFINC/0LDRgNCw0LzQtdGC0YDRltCyLCDQstGB0ZYg0LXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LHRg9C00YPRgtGMINCy0LjQtNC40LzQuNC80Lgg0YMg0YbRltC5INC60LDRgtC10LPQvtGA0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LTQsNC70LXQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC30LDQs9Cw0LvRjNC90L7Qs9C+INGW0L3RgtC10YDRhNC10LnRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGdldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvdC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINC+0YLRgNC40LzQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LfQsNCz0LDQu9GM0L3QvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gc2VhcmNoIElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC90LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiDQt9Cw0LPQsNC70YzQvdC+0LPQviDRltC90YLQtdGA0YTQtdC50YHRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC30LDQs9Cw0LvRjNC90L7Qs9C+INGW0L3RgtC10YDRhNC10LnRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC80L7QtNGD0LvRjCDQvtCz0LvRj9C00YMg0LTQu9GPINCy0ZbQtNC+0LHRgNCw0LbQtdC90L3RjyDQvdC10LLQtdC70LjQutC+0LPQviDRgdC/0LjRgdC60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0YfQuCDQv9C+0YLRgNGW0LHQvdC+INC/0L7QutCw0LfRg9Cy0LDRgtC4INC80ZbRgtC60Lgg0YLQuNC/0YMg0LfQslwn0Y/Qt9C60YMg0YMg0LdcJ9GU0LTQvdCw0L3QvdGP0YUg0LLRg9C30LvRltCyLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHJlZ3VsYXIgZXhwcmVzc2lvbnMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIENvbmZpZ0l0ZW0gY2xhc3MgdG8gY2hlY2sgdGhlIENvbmZpZ0l0ZW0gbmFtZSBhbmQgdG8gc2hvdyBjb3JyZXNwb25kaW5nIGVycm9yIG1lc3NhZ2VzLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNC10LbRgyDQv9C+0YjRg9C60YMg0LTQu9GPINC10LrRgNCw0L3QsCBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LTQvtGB0YLRg9C/0L3RliDRgdGC0L7QstC/0YbRliBDSSDQsiDQvtCz0LvRj9C00ZYg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQt9Cw0LvQtdC20L3QviDQstGW0LQg0LrQu9Cw0YHRgyBDSS4g0JrQvtC20LXQvSDQt9Cw0L/QuNGBINC80LDRlCDRgdC60LvQsNC00LDRgtC40YHRjyDQtyDQvdCw0LfQstC4INC60LvQsNGB0YMg0YLQsCDQvNCw0YHQuNCy0YMg0LTQvtGB0YLRg9C/0L3QuNGFINC/0L7Qu9GW0LIg0LTQu9GPINCy0ZbQtNC/0L7QstGW0LTQvdC+0LPQviDQutC70LDRgdGDLiDQl9Cw0L/QuNGB0Lgg0LTQuNC90LDQvNGW0YfQvdC40YUg0L/QvtC70ZbQsiDQv9C+0LLQuNC90L3RliDQstGW0LTQv9C+0LLRltC00LDRgtC4INGB0YXQtdC80ZYgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LDRgtGA0LjQsdGD0YIg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0YHQvtGA0YLRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LDRgtGA0LjQsdGD0YIg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDQtNC70Y8g0YHQvtGA0YLRg9Cy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDRgNC10LfRg9C70YzRgtCw0YLQsNGFINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINC60LvRltGU0L3RgtGB0YzQutC+0LzRgyDRltC90YLQtdGA0YTQtdC50YHRli4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINCw0YLRgNC40LHRg9GCINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LTQu9GPINGB0L7RgNGC0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQt9CwINGG0ZbRlNGOINC+0L/QtdGA0LDRhtGW0ZTRji4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L/QvtGA0Y/QtNC+0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INGDINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLiDQktCz0L7RgNGDOiDQvdCw0LnRgdGC0LDRgNGW0YjRliDQt9Cy0LXRgNGF0YMuINCS0L3QuNC3OiDQvdCw0LnQvdC+0LLRltGI0ZYg0LfQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQv9C+0YDRj9C00L7QuiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0YMg0YDQtdC30YPQu9GM0YLQsNGC0LDRhSDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQutC70ZbRlNC90YLRgdGM0LrQvtC80YMg0ZbQvdGC0LXRgNGE0LXQudGB0ZYuINCS0LPQvtGA0YM6INC90LDQudGB0YLQsNGA0ZbRiNGWINC30LLQtdGA0YXRgy4g0JLQvdC40Lc6INC90LDQudC90L7QstGW0YjRliDQt9Cy0LXRgNGF0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L/QvtGA0Y/QtNC+0Log0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INGDINGA0LXQt9GD0LvRjNGC0LDRgtCw0YUg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LTQu9GPINGG0ZbRlNGXINC+0L/QtdGA0LDRhtGW0ZcuINCS0LPQvtGA0YM6INC90LDQudGB0YLQsNGA0ZbRiNC40Lkg0LfQstC10YDRhdGDLiDQktC90LjQtzog0L3QsNC50L3QvtCy0ZbRiNC40Lkg0LfQstC10YDRhdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGRpc3BsYXllZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDRgdGC0L7QstC/0YbRliBDSSwg0YnQviDQstGW0LTQvtCx0YDQsNC20LDRjtGC0YzRgdGPINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0Lwg0LIg0L7Qs9C70Y/QtNGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LfQsNC70LXQttC90L4g0LLRltC0INC60LvQsNGB0YMgQ0kuINCa0L7QttC10L0g0LfQsNC/0LjRgSDQvNCw0ZQg0YHQutC70LDQtNCw0YLQuNGB0Y8g0Lcg0L3QsNC30LLQuCDQutC70LDRgdGDINGC0LAg0LzQsNGB0LjQstGDINC00L7RgdGC0YPQv9C90LjRhSDQv9C+0LvRltCyINC00LvRjyDQstGW0LTQv9C+0LLRltC00L3QvtCz0L4g0LrQu9Cw0YHRgy4g0JfQsNC/0LjRgdC4INC00LjQvdCw0LzRltGH0L3QuNGFINC/0L7Qu9GW0LIg0LzQsNGO0YLRjCDQstGW0LTQv9C+0LLRltC00LDRgtC4INGB0YXQtdC80ZYgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCByZWxhdGlvbnMgZGVwdGggdG8gYmUgc2hvd24uJ30gPSAn0JLQuNC30L3QsNGH0LDRlCDQs9C70LjQsdC40L3RgyDQt9CyXCfRj9C30LrRltCyINC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0LwsINGP0LrRgyDQsdGD0LTQtSDQv9C+0LrQsNC30LDQvdC+Lic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHNob3duIGNvbmZpZyBpdGVtIHNlYXJjaCBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINCw0YLRgNC40LHRg9GCINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0Y/QutC40Lkg0LHRg9C00LUg0L/QvtC60LDQt9Cw0L3QviDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC90LAg0LXQutGA0LDQvdGWINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiS2V5IiBtdXN0IGhhdmUgdGhlIG5hbWUgb2YgdGhlIER5bmFtaWMgRmllbGQgaW4gdGhpcyBjYXNlIFwnWFwnLCAiQ29udGVudCIgbXVzdCBoYXZlIHRoZSB2YWx1ZSBvZiB0aGUgRHluYW1pYyBGaWVsZCBkZXBlbmRpbmcgb24gdGhlIER5bmFtaWMgRmllbGQgdHlwZSwgIFRleHQ6IFwnYSB0ZXh0XCcsIERyb3Bkb3duOiBcJzFcJywgRGF0ZS9UaW1lOiBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRZZWFyPTE5NzQ7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydEhvdXI9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRNaW51dGU9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRTZWNvbmQ9MDA7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFllYXI9MjAxMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcERheT0yNjsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wSG91cj0yMzsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wTWludXRlPTU5OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BTZWNvbmQ9NTk7XCcgYW5kIG9yIFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50Rm9ybWF0PXdlZWs7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFN0YXJ0PUJlZm9yZTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVBvaW50VmFsdWU9N1wnOy4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0YLQuNC/0L7QstC40Lkg0LDRgtGA0LjQsdGD0YIg0L/QvtGI0YPQutGDINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60LjQuSDQsdGD0LTQtSDQv9C+0LrQsNC30LDQvdC+INC90LAg0LXQutGA0LDQvdGWINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRly4g0J/RgNC40LrQu9Cw0LQ6ICLQmtC70Y7RhyIg0LzQsNGUINC80ZbRgdGC0LjRgtC4INC90LDQt9Cy0YMg0LTQuNC90LDQvNGW0YfQvdC+0LPQviDQv9C+0LvRjywg0YMg0YbRjNC+0LzRgyDQstC40L/QsNC00LrRgyBcJ1hcJywgItCX0LzRltGB0YIiINC80LDRlCDQvNGW0YHRgtC40YLQuCDQt9C90LDRh9C10L3QvdGPINC00LjQvdCw0LzRltGH0L3QvtCz0L4g0L/QvtC70Y8g0LfQsNC70LXQttC90L4g0LLRltC0INGC0LjQv9GDINC00LjQvdCw0LzRltGH0L3QvtCz0L4g0L/QvtC70Y8sINCi0LXQutGB0YI6IFwn0YLQtdC60YHRglwnLCDQktC40L/QsNC00LDRjtGH0LjQuSDRgdC/0LjRgdC+0Lo6IFwnMVwnLCDQlNCw0YLQsC/Qp9Cw0YE6IFwnU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFllYXI9MTk3NDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0RGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0SG91cj0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydE1pbnV0ZT0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdGFydFNlY29uZD0wMDsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wWWVhcj0yMDEzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNb250aD0wMTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wRGF5PTI2OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BIb3VyPTIzOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BNaW51dGU9NTk7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcFNlY29uZD01OTtcJyDRgtCwINCw0LHQviBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc3Vib2JqZWN0IG9mIHRoZSBjbGFzcyBcJ0lUU01Db25maWdJdGVtXCcuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC/0ZbQtNC+0LFcJ9GU0LrRgiDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8INC60LvQsNGB0YMgXCdJVFNNQ29uZmlnSXRlbVwnLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQtNC+0YHRgtGD0L/QvdGWINGB0YLQvtCy0L/RhtGWIENJINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC30LDQu9C10LbQvdC+INCy0ZbQtCDQutC70LDRgdGDIENJLiDQmtC+0LbQtdC9INC30LDQv9C40YEg0LzQsNGUINGB0LrQu9Cw0LTQsNGC0LjRgdGPINC3INC90LDQt9Cy0Lgg0LrQu9Cw0YHRgyDRgtCwINC80LDRgdC40LLRgyDQtNC+0YHRgtGD0L/QvdC40YUg0L/QvtC70ZbQsiDQtNC70Y8g0LLRltC00L/QvtCy0ZbQtNC90L7Qs9C+INC60LvQsNGB0YMuINCX0LDQv9C40YHQuCDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyINC/0L7QstC40L3QvdGWINCy0ZbQtNC/0L7QstGW0LTQsNGC0Lgg0YHRhdC10LzRliBEeW5hbWljRmllbGRfRmllbGROYW1lLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBoZWlnaHQgZm9yIHRoZSByaWNoIHRleHQgZWRpdG9yIGNvbXBvbmVudCBmb3IgdGhpcyBzY3JlZW4uIEVudGVyIG51bWJlciAocGl4ZWxzKSBvciBwZXJjZW50IHZhbHVlIChyZWxhdGl2ZSkuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINCy0LjRgdC+0YLRgyDQutC+0LzQv9C+0L3QtdC90YLQsCDRgNC10LTQsNC60YLQvtGA0LAg0YDQvtC30YjQuNGA0LXQvdC+0LPQviDRgtC10LrRgdGC0YMg0LTQu9GPINGG0YzQvtCz0L4g0LXQutGA0LDQvdCwLiDQktCy0LXQtNGW0YLRjCDRh9C40YHQu9C+ICjQv9GW0LrRgdC10LvRlikg0LDQsdC+INC30L3QsNGH0LXQvdC90Y8g0YMg0LLRltC00YHQvtGC0LrQsNGFICjQstGW0LTQvdC+0YHQvdC1KS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgbnVtYmVyIG9mIHJvd3MgZm9yIHRoZSBDSSBkZWZpbml0aW9uIGVkaXRvciBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQutGW0LvRjNC60ZbRgdGC0Ywg0YDRj9C00LrRltCyINC00LvRjyDRgNC10LTQsNC60YLQvtGA0LAg0LLQuNC30L3QsNGH0LXQvdGMIENJINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LTQvNGW0L3RltGB0YLRgNCw0YLQvtGA0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIG9yZGVyIG9mIGluY2lkZW50IHN0YXRlcyBmcm9tIGhpZ2ggKGUuZy4gY3JpY2l0YWwpIHRvIGxvdyAoZS5nLiBmdW5jdGlvbmFsKS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0L/QvtGA0Y/QtNC+0Log0YHRgtCw0L3RltCyINGW0L3RhtC40LTQtdC90YLRgyDQstGW0LQg0LLQuNGB0L7QutC+0LPQviAo0L3QsNC/0YDQuNC60LvQsNC0LCDQutGA0LjRgtC40YfQvdC+0LPQvikg0LTQviDQvdC40LfRjNC60L7Qs9C+ICjQvdCw0L/RgNC40LrQu9Cw0LQsINGE0YPQvdC60YbRltC+0L3QsNC70YzQvdC+0LPQvikuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQstGW0LTQv9C+0LLRltC00L3RliDRgdGC0LDQvdC4INGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8sINCyINGP0LrQuNGFINC/0L7Qslwn0Y/Qt9Cw0L3RliDRgtGW0LrQtdGC0Lgg0LzQvtC20YPRgtGMINCy0L/Qu9C40LLQsNGC0Lgg0L3QsCDRgdGC0LDRgtGD0YEgQ0kuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNC10LbRgyDQv9C+0YjRg9C60YMg0LTQu9GPINC10LrRgNCw0L3QsCBBZ2VudElUU01Db25maWdJdGVtLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQg0LzQtdC20YMg0L/QvtGI0YPQutGDINC00LvRjyDQtdC60YDQsNC90LAgQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2VhcmNoIGxpbWl0IGZvciB0aGUgQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbSBzY3JlZW4uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINC80LXQttGDINC/0L7RiNGD0LrRgyDQtNC70Y8g0LXQutGA0LDQvdCwIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCDQvNC10LbRgyDQv9C+0YjRg9C60YMg0LTQu9GPINC10LrRgNCw0L3QsCBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzZWFyY2ggbGltaXQgZm9yIHRoZSBQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaCBzY3JlZW4uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3IGZvciBhbGwgQ0kgY2xhc3Nlcy4gSWYgdGhlcmUgaXMgbm8gZW50cnksIHRoZW4gdGhlIGRlZmF1bHQgY29sdW1ucyBhcmUgc2hvd24uJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGUINGB0YLQvtCy0L/RhtGWINCa0IYsINGJ0L4g0LLRltC00L7QsdGA0LDQttCw0Y7RgtGM0YHRjyDQsiDQutC+0LzQv9C70LXQutGB0L3QvtC80YMg0L/QvtC00LDQvdC90ZYg0YLQsNCx0LvQuNGG0ZYg0L/QvtGB0LjQu9Cw0L3RjCDQtNC70Y8g0LLRgdGW0YUg0LrQu9Cw0YHRltCyINCa0IYuINCv0LrRidC+INC30LDQv9C40YEg0LLRltC00YHRg9GC0L3RltC5LCDRgtC+INC/0L7QutCw0LfRg9GO0YLRjNGB0Y8g0YHRgtC+0LLQv9GG0ZYg0LfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgc2hvd24gY29sdW1ucyBvZiBDSXMgaW4gdGhlIGxpbmsgdGFibGUgY29tcGxleCB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgYmUgcHJlZml4ZWQgd2l0aCB0aGUgY2xhc3MgbmFtZSBhbmQgZG91YmxlIGNvbG9ucyAoaS5lLiBDb21wdXRlcjo6KS4gVGhlcmUgYXJlIGEgZmV3IENJLUF0dHJpYnV0ZXMgdGhhdCBjb21tb24gdG8gYWxsIENJcyAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyOiBDb21wdXRlcjo6TmFtZSwgQ29tcHV0ZXI6OkN1ckRlcGxTdGF0ZSwgQ29tcHV0ZXI6OkNyZWF0ZVRpbWUpLiBUbyBzaG93IGluZGl2aWR1YWwgQ0ktQXR0cmlidXRlcyBhcyBkZWZpbmVkIGluIHRoZSBDSS1EZWZpbml0aW9uLCB0aGUgZm9sbG93aW5nIHNjaGVtZSBtdXN0IGJlIHVzZWQgKGV4YW1wbGUgZm9yIHRoZSBjbGFzcyBDb21wdXRlcik6IENvbXB1dGVyOjpIYXJkRGlzazo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoxOjpDYXBhY2l0eTo6MSwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyLCBDb21wdXRlcjo6SGFyZERpc2s6OjI6OkNhcGFjaXR5OjoxLiBJZiB0aGVyZSBpcyBubyBlbnRyeSBmb3IgYSBDSSBjbGFzcywgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGP0LrRliDRgdGC0L7QstC/0YbRliDQmtCGINCy0ZbQtNC+0LHRgNCw0LbQsNGC0LjQvNGD0YLRjNGB0Y8g0YMg0LrQvtC80L/Qu9C10LrRgdC90L7QvNGDINC/0L7QtNCw0L3QvdGWINGC0LDQsdC70LjRhtGWINC/0L7RgdC40LvQsNC90YwsINC30LDQu9C10LbQvdC+INCy0ZbQtCDQutC70LDRgdGDINCa0IYuINCa0L7QttC10L0g0LfQsNC/0LjRgSDQvNCw0ZQg0L/QvtGH0LjQvdCw0YLQuNGB0Y8g0Lcg0L3QsNC30LLQuCDQutC70LDRgdGDINGC0LAg0L/QvtC00LLRltC50L3QvtCz0L4g0LTQstC+0LrRgNCw0L/QutC4ICjQvdCw0L/RgNC40LrQu9Cw0LQsIENvbXB1dGVyOjopLiDQhtGB0L3Rg9GUINC00LXQutGW0LvRjNC60LAg0LDRgtGA0LjQsdGD0YLRltCyINCa0IYsINGP0LrRliDRlCDRgdC/0ZbQu9GM0L3QuNC80Lgg0LTQu9GPINCy0YHRltGFINCa0IYgKNC90LDQv9GA0LjQutC70LDQtCwg0LTQu9GPINC60LvQsNGB0YMgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuINCU0LvRjyDQstGW0LTQvtCx0YDQsNC20LXQvdC90Y8g0L7QutGA0LXQvNC40YUgQ0kt0LDRgtGA0LjQsdGD0YLRltCyLCDQstC40LfQvdCw0YfQtdC90LjRhSDRgyBDSS3QstC40LfQvdCw0YfQtdC90L3Rliwg0YHQu9GW0LQg0LLQuNC60L7RgNC40YHRgtC+0LLRg9Cy0LDRgtC4INC90LDRgdGC0YPQv9C90YMg0YHRhdC10LzRgyAo0L/RgNC40LrQu9Cw0LQg0LTQu9GPINC60LvQsNGB0YMgQ29tcHV0ZXIpOiBDb21wdXRlcjo6SGFyZERpc2s6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MTo6Q2FwYWNpdHk6OjEsIENvbXB1dGVyOjpIYXJkRGlzazo6MiwgQ29tcHV0ZXI6OkhhcmREaXNrOjoyOjpDYXBhY2l0eTo6MS4g0K/QutGJ0L4g0LTQu9GPINC60LvQsNGB0YMgQ0kg0L3QtdC80LDRlCDQttC+0LTQvdC+0LPQviDQt9Cw0L/QuNGB0YMsINCx0YPQtNC1INC/0L7QutCw0LfQsNC90L4g0YHRgtC+0LLQv9GH0LjQutC4INC30LAg0LfQsNC80L7QstGH0YPQstCw0L3QvdGP0LwuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0Y/QutGWINC10LvQtdC80LXQvdGC0Lgg0LTQvtGB0YLRg9C/0L3RliDQtNC70Y8gItCU0ZbRlyIg0L3QsCDRgtGA0LXRgtGM0L7QvNGDINGA0ZbQstC90ZYg0YHRgtGA0YPQutGC0YPRgNC4IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIGl0ZW1zIGFyZSBhdmFpbGFibGUgaW4gZmlyc3QgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJ9CS0LjQt9C90LDRh9Cw0ZQsINGP0LrRliDQtdC70LXQvNC10L3RgtC4INC00L7RgdGC0YPQv9C90ZYg0L3QsCDQv9C10YDRiNC+0LzRgyDRgNGW0LLQvdGWINGB0YLRgNGD0LrRgtGD0YDQuCBJVFNNIENvbmZpZyBJdGVtIEFDTC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCBpdGVtcyBhcmUgYXZhaWxhYmxlIGluIHNlY29uZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAn0JLQuNC30L3QsNGH0LDRlCwg0Y/QutGWINC10LvQtdC80LXQvdGC0Lgg0LTQvtGB0YLRg9C/0L3RliDQvdCwINC00YDRg9Cz0L7QvNGDINGA0ZbQstC90ZYg0YHRgtGA0YPQutGC0YPRgNC4IElUU00gQ29uZmlnIEl0ZW0gQUNMLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRj9C60LjQuSDRgtC40L8g0LfQslwn0Y/Qt9C60YMgKNC90LDQt9Cy0LDQvdC40Lkg0Lcg0YLQvtGH0LrQuCDQt9C+0YDRgyDQutCy0LjRgtC60LApINC80L7QttC1INCy0L/Qu9C40LLQsNGC0Lgg0L3QsCDRgdGC0LDRgtGD0YEg0LfQslwn0Y/Qt9Cw0L3QvtCz0L4g0JrQhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICfQktC40LfQvdCw0YfQsNGULCDRj9C60LjQuSDRgtC40L8g0LrQstC40YLQutCwINC80L7QttC1INCy0L/Qu9C40LLQsNGC0Lgg0L3QsCDRgdGC0LDRgtGD0YEg0L/QvtCyXCfRj9C30LDQvdC+0Zcg0JrQhi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICfQntC90L7QstC70LXQvdC90Y8g0LLQuNC30L3QsNGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ9CS0LjQtNCw0LvQuNGC0Lgg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxTdGF0ZSd9ID0gJ0RlcGxTdGF0ZSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIENvbG9yJ30gPSAn0JrQvtC70ZbRgCDRgdGC0LDQvdGDINGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnRGVwbG95bWVudFN0YXRlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ9CU0YPQsdC70ZbQutCw0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZCBldmVudCBtb2R1bGUgdGhhdCBtYXJrcyBjb25maWcgaXRlbSBkZWZpbml0aW9ucyBhcyBvdXQgb2Ygc3luYywgaWYgY29udGFpbmluZyBkeW5hbWljIGZpZWxkcyBjaGFuZ2UuJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0L/QvtC00ZbQuSDQtNC40L3QsNC80ZbRh9C90LjRhSDQv9C+0LvRltCyLCDRj9C60LjQuSDQv9C+0LfQvdCw0YfQsNGUINCy0LjQt9C90LDRh9C10L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0Y/QuiDQvdC10YHQuNC90YXRgNC+0L3RltC30L7QstCw0L3Rliwg0Y/QutGJ0L4g0LfQvNGW0L3RjtGO0YLRjNGB0Y8g0LTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgYWRkaXRpb25hbCBJVFNNIGZpZWxkIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPLCDQv9C+0LrQsNC30LDQvdGWINC90LAg0LTQvtC00LDRgtC60L7QstC+0LzRgyDQtdC60YDQsNC90ZYg0L/QvtC70ZbQsiBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JTQuNC90LDQvNGW0YfQvdGWINC/0L7Qu9GPLCDRidC+INCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0L3QsCDQtdC60YDQsNC90ZYg0L7Qs9C70Y/QtNGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LrQu9GW0ZTQvdGC0YHRjNC60L7Qs9C+INGW0L3RgtC10YDRhNC10LnRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEeW5hbWljIGZpZWxkcyBzaG93biBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgc2NyZWVuIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQlNC40L3QsNC80ZbRh9C90ZYg0L/QvtC70Y8sINGJ0L4g0LLRltC00L7QsdGA0LDQttCw0Y7RgtGM0YHRjyDQvdCwINC10LrRgNCw0L3RliDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgYWN0aW9uIGZlYXR1cmUgZm9yIHRoZSBhZ2VudCBmcm9udGVuZCB0byB3b3JrIG9uIG1vcmUgdGhhbiBvbmUgY29uZmlndXJhdGlvbiBpdGVtIGF0IGEgdGltZS4nfSA9CiAgICAgICAgJ9CS0LzQuNC60LDRlCDRhNGD0L3QutGG0ZbRjiDQvNCw0YHQvtCy0LjRhSDQtNGW0Lkg0Lcg0LXQu9C10LzQtdC90YLQsNC80Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC00LvRjyDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAsINGJ0L4g0LTQvtC30LLQvtC70Y/RlCDQv9GA0LDRhtGO0LLQsNGC0Lgg0Lcg0LTQtdC60ZbQu9GM0LrQvtC80LAg0LXQu9C10LzQtdC90YLQsNC80Lgg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC+0LTQvdC+0YfQsNGB0L3Qvi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJ9CS0LzQuNC60LDRlCDRhNGD0L3QutGG0ZbRjiDQvNCw0YHQvtCy0LjRhSDQtNGW0Lkg0LTQu9GPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LvQuNGI0LUg0LTQu9GPINC/0LXRgNC10LvRltGH0LXQvdC40YUg0LPRgNGD0L8uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VuYWJsZXMvZGlzYWJsZXMgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gY2hlY2sgSVRTTSBvbmZpZ3VyYXRpb24gaXRlbXMgZm9yIHVuaXF1ZSBuYW1lcy4gQmVmb3JlIGVuYWJsaW5nIHRoaXMgb3B0aW9uIHlvdSBzaG91bGQgY2hlY2sgeW91ciBzeXN0ZW0gZm9yIGFscmVhZHkgZXhpc3RpbmcgY29uZmlnIGl0ZW1zIHdpdGggZHVwbGljYXRlIG5hbWVzLiBZb3UgY2FuIGRvIHRoaXMgd2l0aCB0aGUgY29uc29sZSBjb21tYW5kIEFkbWluOjpJVFNNOjpDb25maWdJdGVtOjpMaXN0RHVwbGljYXRlcy4nfSA9CiAgICAgICAgJ9CU0L7Qt9Cy0L7Qu9GP0ZQg0LLQstGW0LzQutC90YPRgtC4L9Cy0LjQvNC60L3Rg9GC0Lgg0YTRg9C90LrRhtGW0Y4g0L/QtdGA0LXQstGW0YDQutC4INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQvdCwINC90LDRj9Cy0L3RltGB0YLRjCDRg9C90ZbQutCw0LvRjNC90LjRhSDRltC80LXQvS4g0J/QtdGA0Ygg0L3RltC2INGD0LLRltC80LrQvdGD0YLQuCDRhtGOINC+0L/RhtGW0Y4sINCy0LDQvCDRgdC70ZbQtCDQv9C10YDQtdCy0ZbRgNC40YLQuCDRgdC40YHRgtC10LzRgyDQvdCwINC90LDRj9Cy0L3RltGB0YLRjCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INC/0L7QstGC0L7RgNGO0LLQsNC90LjQvNC4INGW0LzQtdC90LDQvNC4LiDQptC1INC80L7QttC90LAg0LfRgNC+0LHQuNGC0Lgg0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LrQvtC90YHQvtC70YzQvdC+0Zcg0LrQvtC80LDQvdC00LggQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLic7CiAgICAkU2VsZi0+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+eydGb3IgZXZlcnkgd2Vic2VydmljZSAoa2V5KSBhbiBhcnJheSBvZiBjbGFzc2VzICh2YWx1ZSkgY2FuIGJlIGRlZmluZWQgb24gd2hpY2ggdGhlIGltcG9ydCBpcyByZXN0cmljdGVkLiBGb3IgYWxsIGNob3NlbiBjbGFzc2VzLCBvciBhbGwgZXhpc3RpbmcgY2xhc3NlcyB0aGUgaWRlbnRpZnlpbmcgYXR0cmlidXRlcyB3aWxsIGhhdmUgdG8gYmUgY2hvc2VuIGluIHRoZSBpbnZva2VyIGNvbmZpZy4nfSA9CiAgICAgICAgJ9CU0LvRjyDQutC+0LbQvdC+0LPQviDQstC10LEt0YHQtdGA0LLRltGB0YMgKNC60LvRjtGHKSDQvNC+0LbQvdCwINCy0LjQt9C90LDRh9C40YLQuCDQvNCw0YHQuNCyINC60LvQsNGB0ZbQsiAo0LfQvdCw0YfQtdC90L3RjyksINC00LvRjyDRj9C60LjRhSDRltC80L/QvtGA0YIg0L7QsdC80LXQttC10L3Qvi4g0JTQu9GPINCy0YHRltGFINCy0LjQsdGA0LDQvdC40YUg0LrQu9Cw0YHRltCyINCw0LHQviDQstGB0ZbRhSDRltGB0L3Rg9GO0YfQuNGFINC60LvQsNGB0ZbQsiDQv9C+0YLRgNGW0LHQvdC+INCx0YPQtNC1INCy0LjQsdGA0LDRgtC4INGW0LTQtdC90YLQuNGE0ZbQutCw0YbRltC50L3RliDQsNGC0YDQuNCx0YPRgtC4INGDINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRltC90LLQvtC60LXRgNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfQoNC10ZTRgdGC0YDQsNGG0ZbRjyDQvNC+0LTRg9C70Y8gR2VuZXJpY0ludGVyZmFjZSDQtNC70Y8g0YjQsNGA0YMg0LLQuNC60LvQuNC60YMgQ29uZmlnSXRlbUZldGNoLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXRlNGB0YLRgNCw0YbRltGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRiNCw0YDRgyDQstC40LrQu9C40LrRgyBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ9Cg0LXRlNGB0YLRgNCw0YbRltGPINC80L7QtNGD0LvRjyBHZW5lcmljSW50ZXJmYWNlINC00LvRjyDRiNCw0YDRgyDQstC40LrQu9C40LrRgyBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00gQ29uZmlnSXRlbSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ9Ce0LPQu9GP0LQg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpU3RhdGUnfSA9ICdJbmNpU3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaWRlbnRTdGF0ZSd9ID0gJ0luY2lkZW50U3RhdGUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9CS0LrQu9GO0YfQsNGUINGB0YLQsNC90Lgg0YDQvtC30LPQvtGA0YLQsNC90L3RjyDQtNC+INC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINC60LvRltGU0L3RgtGB0YzQutC+0LzRgyDRltC90YLQtdGA0YTQtdC50YHRli4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLQutC70Y7Rh9Cw0ZQg0YHRgtCw0L3QuCDRltC90YbQuNC00LXQvdGC0ZbQsiDRgyDQv9C+0YjRg9C6INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LrQu9GW0ZTQvdGC0YHRjNC60L7Qs9C+INGW0L3RgtC10YDRhNC10LnRgdGDLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICfQnNCw0LrRgdC40LzQsNC70YzQvdCwINC60ZbQu9GM0LrRltGB0YLRjCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60ZYg0LHRg9C00LUg0LLRltC00L7QsdGA0LDQttC10L3QviDQsiDRgNC10LfRg9C70YzRgtCw0YLRliDRhtGW0ZTRlyDQvtC/0LXRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gY2hlY2sgdGhlIGdyb3VwIHJlc3BvbnNpYmxlIGZvciBhIGNsYXNzLid9ID0gJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0L/QtdGA0LXQstGW0YDQutC4INCz0YDRg9C/0LgsINCy0ZbQtNC/0L7QstGW0LTQsNC70YzQvdC+0Zcg0LfQsCDQutC70LDRgS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICfQnNC+0LTRg9C70Ywg0LTQu9GPINC/0LXRgNC10LLRltGA0LrQuCDQs9GA0YPQv9C4LCDQstGW0LTQv9C+0LLRltC00LDQu9GM0L3QvtGXINC30LAg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2R1bGUgdG8gZ2VuZXJhdGUgSVRTTSBjb25maWcgaXRlbSBzdGF0aXN0aWNzLid9ID0gJ9Cc0L7QtNGD0LvRjCDQtNC70Y8g0LPQtdC90LXRgNCw0YbRltGXINGB0YLQsNGC0LjRgdGC0LjQutC4INC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTS4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICfQnNC+0LTRg9C70Ywg0ZbQvNC10L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJ9Cc0L7QtNGD0LvRjCDRh9C40YHQu9CwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLCDRj9C60ZYg0LHRg9C00YPRgtGMINCy0ZbQtNC+0LHRgNCw0LbQsNGC0LjRgdGPINC90LAg0LrQvtC20L3RltC5INGB0YLQvtGA0ZbQvdGG0ZYg0YDQtdC30YPQu9GM0YLQsNGC0ZbQsiDQv9C+0YjRg9C60YMg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQmtGW0LvRjNC60ZbRgdGC0Ywg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0Y/QutGWINCx0YPQtNGD0YLRjCDQstGW0LTQvtCx0YDQsNC20LDRgtC40YHRjyDQvdCwINC60L7QttC90ZbQuSDRgdGC0L7RgNGW0L3RhtGWINGA0LXQt9GD0LvRjNGC0LDRgtGW0LIg0L/QvtGI0YPQutGDINCyINGW0L3RgtC10YDRhNC10LnRgdGWINC60LvRltGU0L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfQntCxXCfRlNC60YLQuCDQtNC70Y8g0L/QvtGI0YPQutGDLCDQutGW0LvRjNC60ZbRgdGC0Ywg0LfQsNC/0LjRgdGW0LIg0ZYg0Y/QutGWINCw0YLRgNC40LHRg9GC0Lgg0L/QvtC60LDQt9GD0LLQsNGC0LguINCQ0YLRgNC40LHRg9GC0LggQ29uZmlnSXRlbSDQvNCw0Y7RgtGMINCx0YPRgtC4INGP0LLQvdC+INC30LHQtdGA0LXQttC10L3RliDRh9C10YDQtdC3IEVsYXN0aWNzZWFyY2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ9Ce0LPQu9GP0LQuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LrQsNGC0LXQs9C+0YDRltC5INC00LvRjyDQutC70LDRgdGW0LIg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQstGW0LrQvdGWINC90LDQu9Cw0YjRgtGD0LLQsNC90Ywg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY29sdW1uIGZpbHRlcnMgb2YgdGhlIHNtYWxsIGNvbmZpZyBpdGVtIG92ZXJ2aWV3LiBQbGVhc2Ugbm90ZTogc2V0dGluZyBcJ0FjdGl2ZVwnIHRvIDAgd2lsbCBvbmx5IHByZXZlbnQgYWdlbnRzIGZyb20gZWRpdGluZyBzZXR0aW5ncyBvZiB0aGlzIGdyb3VwIGluIHRoZWlyIHBlcnNvbmFsIHByZWZlcmVuY2VzLCBidXQgd2lsbCBzdGlsbCBhbGxvdyBhZG1pbmlzdHJhdG9ycyB0byBlZGl0IHRoZSBzZXR0aW5ncyBvZiBhbm90aGVyIHVzZXJcJ3MgYmVoYWxmLiBVc2UgXCdQcmVmZXJlbmNlR3JvdXBcJyB0byBjb250cm9sIGluIHdoaWNoIGFyZWEgdGhlc2Ugc2V0dGluZ3Mgc2hvdWxkIGJlIHNob3duIGluIHRoZSB1c2VyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0YTRltC70YzRgtGA0ZbQsiDRgdGC0L7QstC/0YbRltCyINCyINC+0LPQu9GP0LTRliDQvNCw0LvQuNGFINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuINCX0LLQtdGA0L3RltGC0Ywg0YPQstCw0LPRgzog0LLRgdGC0LDQvdC+0LLQu9C10L3QvdGPINC30L3QsNGH0LXQvdC90Y8gItCQ0LrRgtC40LLQvdC40LkiINC90LAgMCDQu9C40YjQtSDQt9Cw0LHQvtGA0L7QvdC40YLRjCDQsNCz0LXQvdGC0LDQvCDRgNC10LTQsNCz0YPQstCw0YLQuCDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0YbRltGU0Zcg0LPRgNGD0L/QuCDRgyDRgdCy0L7Rl9GFINC+0YHQvtCx0LjRgdGC0LjRhSDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y/RhSwg0LDQu9C1INC00L7Qt9Cy0L7Qu9C40YLRjCDQsNC00LzRltC90ZbRgdGC0YDQsNGC0L7RgNCw0Lwg0YDQtdC00LDQs9GD0LLQsNGC0Lgg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPINCy0ZbQtCDRltC80LXQvdGWINGW0L3RiNC+0LPQviDQutC+0YDQuNGB0YLRg9Cy0LDRh9CwLiDQktC40LrQvtGA0LjRgdGC0L7QstGD0LnRgtC1ICJQcmVmZXJlbmNlR3JvdXAiLCDRidC+0LEg0LrQvtC90YLRgNC+0LvRjtCy0LDRgtC4LCDQsiDRj9C60ZbQuSDQvtCx0LvQsNGB0YLRliDQutC+0YDQuNGB0YLRg9Cy0LDRhtGM0LrQvtCz0L4g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LLRltC00L7QsdGA0LDQttCw0YLQuCDRhtGWINC90LDQu9Cw0YjRgtGD0LLQsNC90L3Rjy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMgY29sb3IgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0YHRgtCw0L3RltCyINGA0L7Qt9Cz0L7RgNGC0LDQvdC90Y8g0L/QvtC30L3QsNGH0LDRjtGC0YzRgdGPINC60L7Qu9GM0L7RgNC+0Lwg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINGB0YLQsNC90ZbQsiDRgNC+0LfQs9C+0YDRgtCw0L3QvdGPINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBleGFtcGxlIHBlcm1pc3Npb24gZ3JvdXBzIG9mIHRoZSBnZW5lcmFsIGNhdGFsb2cgYXR0cmlidXRlcy4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQtNC70Y8g0L/RgNC40LrQu9Cw0LTRgyDQtNC+0LfQstC+0LvRgyDQs9GA0YPQvyDQt9Cw0LPQsNC70YzQvdC40YUg0LDRgtGA0LjQsdGD0YLRltCyINC60LDRgtCw0LvQvtCz0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC80L7QtNGD0LvRjyDRltC80LXQvSDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIG51bWJlciBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0LDRgNCw0LzQtdGC0YDQuCDQvNC+0LTRg9C70Y8g0YfQuNGB0LvQsCDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRgdGC0L7RgNGW0L3QvtC6ICjQvdCwINGP0LrQuNGFINCy0ZbQtNC+0LHRgNCw0LbQsNGO0YLRjNGB0Y8g0LXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcpLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINC80L7QtNGD0LvRjyDRgNGP0LTQutCwINCy0LXRgNGB0ZbRlyDQtNC70Y8g0LrQu9Cw0YHRltCyINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9Cw0YDQsNC80LXRgtGA0Lgg0LTQu9GPINC80L7QtNGD0LvRjyDRiNCw0LHQu9C+0L3RgyDRgNGP0LTQutCwINCy0LXRgNGB0ZbRlyDRltC90YHRgtGA0YPQvNC10L3RgtCw0YDRltGOINC00LvRjyDQutC70LDRgdGW0LIg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQv9C+0LTQsNC90L3RliDQvdCw0LvQsNGI0YLRg9Cy0LDQvdGMINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QsNGA0LDQvNC10YLRgNC4INC00LvRjyDRgtGA0LjQs9C10YDQsCDQstC10YDRgdGW0Zcg0LTQu9GPINC60LvQsNGB0ZbQsiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0L3QsNC70LDRiNGC0YPQstCw0L3RjCDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn0JLQuNC60L7QvdGD0ZQg0L3QsNC70LDRiNGC0L7QstCw0L3RgyDQtNGW0Y4g0LTQu9GPINC60L7QttC90L7RlyDQv9C+0LTRltGXICjRj9C6INGW0L3QstC+0LrQtdGAKSDQtNC70Y8g0LrQvtC20L3QvtCz0L4g0L3QsNC70LDRiNGC0L7QstCw0L3QvtCz0L4g0LLQtdCx0YHQtdGA0LLRltGB0YMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfQk9GA0YPQv9CwINC00L7Qt9Cy0L7Qu9GW0LInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtNGW0Zcg0L/RgNC40LrRgNGW0L/Qu9C10L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LXQutGA0LDQvdCwINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J3QtdC+0LHRhdGW0LTQvdGWINC00L7Qt9Cy0L7Qu9C4INC00LvRjyDQstC40LrQvtGA0LjRgdGC0LDQvdC90Y8g0LXQutGA0LDQvdCwINC/0L7RiNGD0LrRgyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNlYXJjaCBzY3JlZW4gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQv9C+0YjRg9C60YMg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINC60LvRltGU0L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHRyZWUgdmlldyBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQv9C10YDQtdCz0LvRj9C00YMg0LTQtdGA0LXQstCwINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQvNCw0YHRiNGC0LDQsdGD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQtNC+0LTQsNCy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQvNCw0YHQvtCy0LjRhSDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0YDQtdC00LDQs9GD0LLQsNC90L3RjyDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXIElUU00g0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGhpc3RvcnkgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQndC10L7QsdGF0ZbQtNC90ZYg0LTQvtC30LLQvtC70Lgg0LTQu9GPINCy0LjQutC+0YDQuNGB0YLQsNC90L3RjyDQtdC60YDQsNC90LAg0LXQu9C10LzQtdC90YLRltCyINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRltGB0YLQvtGA0ZbRlyBJVFNNINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cd0LXQvtCx0YXRltC00L3RliDQtNC+0LfQstC+0LvQuCDQtNC70Y8g0LLQuNC60L7RgNC40YHRgtCw0L3QvdGPINC10LrRgNCw0L3QsCDQtNGA0YPQutGDINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgSVRTTSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICfQndC10L7QsdGF0ZbQtNC90ZYg0L/RgNC40LLRltC70LXRlyDQtNC70Y8g0LLQuNC00LDQu9C10L3QvdGPINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBjb25maWcgaXRlbXMuJ30gPSAn0J/QvtGI0YPQuiDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn0JDQstGC0L7QvNCw0YLQuNGH0L3QviDQstGB0YLQsNC90L7QstC70Y7QstCw0YLQuCDRgdGC0LDQvSDRltC90YbQuNC00LXQvdGC0YMg0LTQu9GPINCa0IYsINC60L7Qu9C4INCi0ZbQutC10YIg0L/RgNC40LJcJ9GP0LfQsNC90LjQuSDQtNC+INCa0IYuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0JLRgdGC0LDQvdC+0LLQu9GO0ZQg0YHRgtCw0L0g0YDQvtC30LPQvtGA0YLQsNC90L3RjyDQvdCwINC+0YHQvdC+0LLQvdC+0LzRgyDQtdC60YDQsNC90ZYg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQktGB0YLQsNC90L7QstC70Y7RlCDRgdGC0LDQvSDRltC90YbQuNC00LXQvdGC0YMg0L3QsCDQvtGB0L3QvtCy0L3QvtC80YMg0LXQutGA0LDQvdGWINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4sINGP0LrQtSDQtNC+0LfQstC+0LvRj9GUINC30LJcJ9GP0LfQsNGC0Lgg0LXQu9C10LzQtdC90YIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINC3INGW0L3RiNC40Lwg0L7QsVwn0ZTQutGC0L7QvCDRgyDQstGW0LrQvdGWINC80LDRgdGI0YLQsNCx0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00L7RgdGC0YPQv9GDINC00L4g0ZbRgdGC0L7RgNGW0Zcg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0L7Qs9C70Y/QtNGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00L7RgdGC0YPQv9GDINC00L4g0ZbRgdGC0L7RgNGW0Zcg0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLRltC60L3RliDQvNCw0YHRiNGC0LDQsdGD0LLQsNC90L3RjyDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQstC40LTQsNC70LXQvdC90Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LfQsdGW0LvRjNGI0LXQvdC+0LzRgyDQstC40LPQu9GP0LTRliDRltC90YLQtdGA0YTQtdC50YHRgyDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINCy0ZbQtNC+0LHRgNCw0LbQtdC90L3RjyDQv9C+0YHQuNC70LDQvdGMINC90LAg0LXQu9C10LzQtdC90YLQuCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0YMg0LLQuNCz0LvRj9C00ZYg0LTQtdGA0LXQstCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0LTRg9Cx0LvRjtCy0LDQvdC90Y8g0LXQu9C10LzQtdC90YLQsCDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0L7Qs9C70Y/QtNGWINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0Zcg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC00YPQsdC70Y7QstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINC50L7Qs9C+INC30LHRltC70YzRiNC10L3QvtC80YMg0LLQuNCz0LvRj9C00ZYg0LIg0ZbQvdGC0LXRgNGE0LXQudGB0ZYg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDRgNC10LTQsNCz0YPQstCw0L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINGDINCy0ZbQutC90ZYg0LzQsNGB0YjRgtCw0LHRg9Cy0LDQvdC90Y8g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn0J/QvtC60LDQt9GD0ZQg0L/QvtGB0LjQu9Cw0L3QvdGPINCyINC80LXQvdGOINC00LvRjyDQv9C+0LLQtdGA0L3QtdC90L3RjyDQtNC+INC/0YPQvdC60YLRgyDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0LzQsNGB0YjRgtCw0LHRg9Cy0LDQvdC90Y8g0ZbQvdGC0LXRgNGE0LXQudGB0YMg0LDQs9C10L3RgtCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gcHJpbnQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINC/0L7RgdC40LvQsNC90L3RjyDQsiDQvNC10L3RjiDQtNC70Y8g0LTRgNGD0LrRgyDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlyDRgyDQt9Cx0ZbQu9GM0YjQtdC90L7QvNGDINCy0LjQs9C70Y/QtNGWINGW0L3RgtC10YDRhNC10LnRgdGDINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfQn9C+0LrQsNC30YPRlCDQv9C+0YHQuNC70LDQvdC90Y8g0LIg0LzQtdC90Y4g0LTQu9GPINC30LHRltC70YzRiNC10L3QvdGPINC10LvQtdC80LXQvdGC0LAg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINC+0LPQu9GP0LTRliDQtdC70LXQvNC10L3RgtGW0LIg0LrQvtC90YTRltCz0YPRgNCw0YbRltGXINCyINGW0L3RgtC10YDRhNC10LnRgdGWINCw0LPQtdC90YLQsC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ9Cf0L7QutCw0LfRg9GUINGW0YHRgtC+0YDRltGOINC10LvQtdC80LXQvdGC0ZbQsiDQutC+0L3RhNGW0LPRg9GA0LDRhtGW0ZcgKNGDINC30LLQvtGA0L7RgtC90L7QvNGDINC/0L7RgNGP0LTQutGDKSDQsiDRltC90YLQtdGA0YTQtdC50YHRliDQsNCz0LXQvdGC0LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZWZhdWx0IGNhdGVnb3J5IHdoaWNoIGlzIHNob3duLCBpZiBub25lIGlzIHNlbGVjdGVkLid9ID0gJ9Ca0LDRgtC10LPQvtGA0ZbRjyDQt9CwINC30LDQvNC+0LLRh9GD0LLQsNC90L3Rj9C8LCDRj9C60LAg0LLRltC00L7QsdGA0LDQttCw0ZTRgtGM0YHRjywg0Y/QutGJ0L4g0L3QtSDQstC40LHRgNCw0L3QviDQttC+0LTQvdC+0ZcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfQhtC00LXQvdGC0LjRhNGW0LrQsNGC0L7RgCDQtdC70LXQvNC10L3RgtCwINC60L7QvdGE0ZbQs9GD0YDQsNGG0ZbRlywg0L3QsNC/0YDQuNC60LvQsNC0LCBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4g0JfQsCDQt9Cw0LzQvtCy0YfRg9Cy0LDQvdC90Y/QvCDRhtC1IENvbmZpZ0l0ZW0jLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn0JDQstGC0L7QvNCw0YLQuNGH0L3QviDQt9Cw0L/Rg9GB0LrQsNGUINCy0LjQutC70LjRh9C90LjQuiBDb25maWdJdGVtRmV0Y2guJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfQktC40YDQsNC3INGA0Y/QtNC60LAg0LLQtdGA0YHRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIE1vZHVsZSd9ID0gJ9Cc0L7QtNGD0LvRjCDRgNGP0LTQutCwINCy0LXRgNGB0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFRyaWdnZXInfSA9ICfQotGA0LjQs9C10YAg0LLQtdGA0YHRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIHRoZSBleGVjdXRpb24gb2YgQ29uZmlnSXRlbUFDTCBjYW4gYmUgYXZvaWRlZCBieSBjaGVja2luZyBjYWNoZWQgZmllbGQgZGVwZW5kZW5jaWVzLiBUaGlzIGNhbiBpbXByb3ZlIGxvYWRpbmcgdGltZXMgb2YgZm9ybXVsYXJzLCBidXQgaGFzIHRvIGJlIGRpc2FibGVkLCBpZiBBQ0xNb2R1bGVzIGFyZSB0byBiZSB1c2VkIGZvciBJVFNNQ29uZmlnSXRlbS0gYW5kIEZvcm0tUmV0dXJuVHlwZXMuJ30gPQogICAgICAgICfQp9C4INC80L7QttC90LAg0YPQvdC40LrQvdGD0YLQuCDQstC40LrQvtC90LDQvdC90Y8gQ29uZmlnSXRlbUFDTCDRiNC70Y/RhdC+0Lwg0L/QtdGA0LXQstGW0YDQutC4INC60LXRiNC+0LLQsNC90LjRhSDQt9Cw0LvQtdC20L3QvtGB0YLQtdC5INC/0L7Qu9GW0LIuINCm0LUg0LzQvtC20LUg0L/QvtC60YDQsNGJ0LjRgtC4INGH0LDRgSDQt9Cw0LLQsNC90YLQsNC20LXQvdC90Y8g0YTQvtGA0LzRg9C7LCDQsNC70LUg0LnQvtCz0L4g0YHQu9GW0LQg0LLQuNC80LrQvdGD0YLQuCwg0Y/QutGJ0L4gQUNMTS3QvNC+0LTRg9C70ZYg0LHRg9C00LUg0LLQuNC60L7RgNC40YHRgtCw0L3QviDQtNC70Y8gSVRTTUNvbmZpZ0l0ZW0tINGWIEZvcm0tUmV0dXJuVHlwZXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doaWNoIGdlbmVyYWwgaW5mb3JtYXRpb24gaXMgc2hvd24gaW4gdGhlIGhlYWRlci4nfSA9ICfQr9C60LAg0LfQsNCz0LDQu9GM0L3QsCDRltC90YTQvtGA0LzQsNGG0ZbRjyDQstGW0LTQvtCx0YDQsNC20LDRlNGC0YzRgdGPINCyINC30LDQs9C+0LvQvtCy0LrRgy4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnY2xhc3MnfSA9ICfQutC70LDRgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydnbG9iYWwnfSA9ICfQs9C70L7QsdCw0LvRjNC90LjQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ9C/0L7RgdGC0L/RgNC+0LTRg9C60YLQuNCy0L3QuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3ByZXByb2R1Y3RpdmUnfSA9ICfQv9GA0LXQv9GA0L7QtNGD0LrRgtC40LLQvdC40LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJvZHVjdGl2ZSd9ID0gJ9C/0YDQvtC00YPQutGC0LjQstC90LjQuSc7CgogICAgIyBSZWFkeSB0byBhZG9wdCBjbGFzc2VzOiBJVC1TZXJ2aWNlbWFuYWdlbWVudC0xMV8wXzMKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKSd9ID0gJzEwVTogMTcsNSDQtNGO0LnQvNGW0LIgKDQ0LDQ1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknfSA9ICcxMlU6IDIxINC00Y7QudC8ICg1MywzNCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJ30gPSAnMTVVOiAyNiwyNSDQtNGO0LnQvNCwICg2Niw2OCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknfSA9ICcxOFU6IDMxLDUg0LTRjtC50LzQsCAoODAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkt0LTRjtC50LzQvtCy0LAg0YHRgtGW0LnQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVTogMSw3NSDQtNGO0LnQvNCwICg0LDQ1INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIwVTogMzUgaW5jaGVzICg4OC45IGNtKSd9ID0gJzIwVTogMzUg0LTRjtC50LzRltCyICg4OCw5INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIxLWluY2ggUmFjayd9ID0gJzIxLdC00Y7QudC80L7QstCwINGB0YLRltC50LrQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknfSA9ICcyMlU6IDM4LDUg0LTRjtC50LzRltCyICg5Nyw3OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy1pbmNoIFJhY2snfSA9ICcyMy3QtNGO0LnQvNC+0LLQsCDRgdGC0ZbQudC60LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjMuNiBpbmNoZXMgKDYwMCBtbSknfSA9ICcyMyw2INC00Y7QudC80LAgKDYwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0VTogNDIg0LTRjtC50LzQuCAoMTA2LDY4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJ30gPSAnMjdVOiA0NywyNSDQtNGO0LnQvNGW0LIgKDEyMCwwMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyVTogMy41IGluY2hlcyAoOC44OSBjbSknfSA9ICcyVTogMyw1INC00Y7QudC80LAgKDgsODkg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKSd9ID0gJzMwVTogNTIsNSDQtNGO0LnQvNCwICgxMzMsMzUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMSw1INC00Y7QudC80LAgKDgwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKSd9ID0gJzMzVTogNTcsNzUg0LTRjtC50LzRltCyICgxNDYsNjgg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzUuNCBpbmNoZXMgKDkwMCBtbSknfSA9ICczNSw0INC00Y7QudC80LAgKDkwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKSd9ID0gJzM2VTogNjMg0LTRjtC50LzQuCAoMTYwLDAyINGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5LjQgaW5jaGVzICgxMDAwIG1tKSd9ID0gJzM5LDQg0LTRjtC50LzQsCAoMTAwMCDQvNC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKSd9ID0gJzM5VTogNjgsMjUg0LTRjtC50LzRltCyICgxNzMsMzUg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknfSA9ICczVTogNSwyNSDQtNGO0LnQvNCwICgxMywzNCDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJ30gPSAnNDJVOiA3Myw1INC00Y7QudC80LAgKDE4Niw2OSDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMsMyDQtNGO0LnQvNCwICgxMTAwINC80LwpOic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1VTogNzgsNzUg0LTRjtC50LzRltCyICgyMDAsMDIg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcsMiDQtNGO0LnQvNCwICgxMjAwINC80LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJ30gPSAnNDhVOiA4NCDQtNGO0LnQvNC4ICgyMTMsMzYg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0VTogNyDQtNGO0LnQvNGW0LIgKDE3LDc4INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVU6IDgsNzUg0LTRjtC50LzQsCAoMjIsMjMg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknfSA9ICc2VTogMTAsNSDQtNGO0LnQvNGW0LIgKDI2LDY3INGB0LwpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKSd9ID0gJzdVOiAxMiwyNSDQtNGO0LnQvNCwICgzMSwxMiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknfSA9ICc4VTogMTQg0LTRjtC50LzRltCyICgzNSw1NiDRgdC8KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICc5VTogMTUsNzUg0LTRjtC50LzQsCAoNDAsMDEg0YHQvCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfQkdGD0YXQs9Cw0LvRgtC10YDRgdGM0LrQuNC5INC+0LHQu9GW0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICfQn9GA0LjRgdCy0L7RlNC90L3RjyDQsNC00YDQtdGB0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ9CQ0LTQvNGW0L3RltGB0YLRgNCw0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuYWxvZyBQaG9uZSd9ID0gJ9CQ0L3QsNC70L7Qs9C+0LLQuNC5INGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAn0KLQuNC/INC/0YDQuNC70LDQtNGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAn0ITQvNC90ZbRgdGC0Ywg0LDQutGD0LzRg9C70Y/RgtC+0YDQsCAo0JDRhyknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn0KLQuNC/INCx0LDRgtCw0YDQtdGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn0LHRg9C00LjQvdC+0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQnVzIEludGVyZmFjZSd9ID0gJ9CG0L3RgtC10YDRhNC10LnRgSDRiNC40L3QuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDQzAgKENyZWF0aXZlIENvbW1vbnMgWmVybyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lEUid9ID0gJ0NJRFInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAn0J/QoNCe0KbQldCh0J7QoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICfQmtC70LDRgSDQv9GA0L7RhtC10YHQvtGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FwYWNpdHkgKEdCKSd9ID0gJ9CE0LzQvdGW0YHRgtGMICjQk9CRKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ9Cf0L7RgtGD0LbQvdGW0YHRgtGMINC90LAg0L7QtNC90YMg0LLRltC00LXQvtC60LDRgNGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FyZCBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC60LDRgNGC0LrQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ9CX0YfQuNGC0YPQstCw0Ycg0LrQsNGA0YLQvtC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJ9Ci0LjQvyDQutCw0YDRgtC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ9Ca0LvRltGU0L3RgtGB0YzQutGWINGB0LXRgNGC0LjRhNGW0LrQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IFNvZnR3YXJlJ30gPSAn0JrQu9GW0ZTQvdGC0YHRjNC60LUg0L/RgNC+0LPRgNCw0LzQvdC1INC30LDQsdC10LfQv9C10YfQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICfQmtCw0YLQtdCz0L7RgNGW0Y8g0LrQu9GW0ZTQvdGC0ZbQsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3JhdGUnfSA9ICfQotCw0LrRgtC+0LLQsCDRh9Cw0YHRgtC+0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn0KLQsNC60YLQvtCy0LAg0YfQsNGB0YLQvtGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ9Ch0LXRgNGC0LjRhNGW0LrQsNGC0Lgg0LrQvtC00L7QstC+0LPQviDQv9GW0LTQv9C40YHRgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAn0JrQvtC90YTQtdGA0LXQvdGGLdGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstGW0YAg0L/RgNC+INC90LDQtNCw0L3QvdGPINC60L7QvdGB0YPQu9GM0YLQsNGG0ZbQuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn0JrQvtC90YLQsNC60YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0IERpc3RyaWJ1dG9yJ30gPSAn0JfQslwn0Y/Qt9Cw0YLQuNGB0Y8g0Lcg0LTQuNGB0YLRgNC40LFcJ9GO0YLQvtGA0L7QvCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJ9Cj0L/RgNCw0LLQu9GW0L3QvdGPINC60L7QvdGC0LXQudC90LXRgNCw0LzQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJ9Ca0L7QvdGC0YDQsNC60YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ9Ci0LjQvyDQutC+0L3RgtGA0LDQutGC0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIGZyb20nfSA9ICfQn9C10YDRltC+0LQg0LTRltGXINC60L7QvdGC0YDQsNC60YLRgyDQstGW0LQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgcGVyaW9kIHVudGlsJ30gPSAn0KLQtdGA0LzRltC9INC00ZbRlyDQutC+0L3RgtGA0LDQutGC0YMg0LTQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICfQkdC10LfQtNGA0L7RgtC+0LLQuNC5INGC0LXQu9C10YTQvtC9IChERUNULdGC0LXQu9C10YTQvtC9KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3N0IHVuaXQnfSA9ICfQntC00LjQvdC40YbRjyDQstC40LzRltGA0YMg0LLQuNGC0YDQsNGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn0JrRltC70YzQutGW0YHRgtGMINC70ZbRhtC10L3Qt9GW0LknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpb24gRGF0ZSd9ID0gJ9CU0LDRgtCwINGB0YLQstC+0YDQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGl2ZSBDb21tb25zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbSBSYWNrJ30gPSAn0KHQv9C10YbRltCw0LvRjNC90LjQuSDRgdGC0LXQu9Cw0LYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCd9ID0gJ0RIQ1AnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnREhDUCBSZXNlcnZlZCd9ID0gJ0RIQ1Ag0LfQsNGA0LXQt9C10YDQstC+0LLQsNC90L4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUy3RgdC10YDQstC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ9CU0LDRgtCwINGW0L3QstC+0LnRgdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICfQlNCw0YLQsCDQt9Cw0LzQvtCy0LvQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIFdhcnJhbnR5J30gPSAn0JTQsNGC0LAg0L/QvtGH0LDRgtC60YMg0LTRltGXINCz0LDRgNCw0L3RgtGW0ZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn0JTQsNGC0LAg0LLQuNC/0YPRgdC60YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ9Cg0L7QsdC+0YfQuNC5INGB0YLRltC7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rpc3BsYXlQb3J0J30gPSAnRGlzcGxheVBvcnQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfQodC10YDRgtC40YTRltC60LDRgtC4INC/0ZbQtNC/0LjRgdCw0L3QvdGPINC00L7QutGD0LzQtdC90YLRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VQTCAoRWNsaXBzZSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRVRTSSBSYWNrJ30gPSAnRVRTSSBSYWNrJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfQodC10YDRgtC40YTRltC60LDRgtC4INC10LvQtdC60YLRgNC+0L3QvdC+0Zcg0L/QvtGI0YLQuCAoUy9NSU1FINGB0LXRgNGC0LjRhNGW0LrQsNGC0LgpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ9Ci0YDRg9C00L7QstC40Lkg0LTQvtCz0L7QstGW0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIElQIEFkZHJlc3MnfSA9ICfQmtGW0L3RhtC10LLQsCBJUC3QsNC00YDQtdGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfQmtGW0L3QtdGG0Ywg0L/RltC00YLRgNC40LzQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4cGlyeSBEYXRlJ30gPSAn0KLQtdGA0LzRltC9INC/0YDQuNC00LDRgtC90L7RgdGC0ZYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ9CX0L7QstC90ZbRiNC90ZbQuSDQttC+0YDRgdGC0LrQuNC5INC00LjRgdC6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAn0JHRgNCw0L3QtNC80LDRg9C10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlybXdhcmUnfSA9ICfQn9GA0L7RiNC40LLQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAn0J3QsNC60L7Qv9C40YfRg9Cy0LDRhyDQtdC90LXRgNCz0ZbRlyDQvNCw0YXQvtCy0LjQutCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAn0KTQvtGA0Lwt0YTQsNC60YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICfQlNC+0LPQvtCy0ZbRgCDRhNGA0LDQvdGH0LDQudC30LjQvdCz0YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICfQkdC10LfQutC+0YjRgtC+0LLQvdC1INC/0YDQvtCz0YDQsNC80L3QtSDQt9Cw0LHQtdC30L/QtdGH0LXQvdC90Y8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAn0JfQsNCz0LDQu9GM0L3QsCDRltC90YTQvtGA0LzQsNGG0ZbRjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ9CS0ZbQtNC10L7QutCw0YDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICfQktGW0LTQtdC+0LrQsNGA0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIRE1JJ30gPSAnSERNSSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJ9CQ0L/QsNGA0LDRgtC90LUg0LfQsNCx0LXQt9C/0LXRh9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn0JzQvtC00LXQu9GMINC+0LHQu9Cw0LTQvdCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ9CS0LDQs9CwINC+0LHQu9Cw0LTQvdCw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hlYWRzZXQnfSA9ICfQk9Cw0YDQvdGW0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVAgUHJvdG9jb2wnfSA9ICfQn9GA0L7RgtC+0LrQvtC7IElQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ9Cj0L/RgNCw0LLQu9GW0L3QvdGPINGW0LTQtdC90YLQuNGE0ZbQutCw0YbRltGU0Y4g0YLQsCDQtNC+0YHRgtGD0L/QvtC8IChJQU0pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVudG9yeSBOdW1iZXInfSA9ICfQhtC90LLQtdC90YLQsNGA0L3QuNC5INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZXJzdG1lbnQgY29zdHMnfSA9ICfQhtC90LLQtdGB0YLQuNGG0ZbQudC90ZYg0LLQuNGC0YDQsNGC0LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52b2ljZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINGA0LDRhdGD0L3QutGDLdGE0LDQutGC0YPRgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn0JrQu9Cw0LLRltCw0YLRg9GA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAn0KDQmi3QvNC+0L3RltGC0L7RgCAo0YDRltC00LrQvtC60YDQuNGB0YLQsNC70ZbRh9C90LjQuSDQtNC40YHQv9C70LXQuSknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ9Ch0LLRltGC0LvQvtC00ZbQvtC00L3QuNC5INC80L7QvdGW0YLQvtGAICjRgdCy0ZbRgtC70L7QtNGW0L7QtNC4KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFuZGxpbmUgUGhvbmUnfSA9ICfQodGC0LDRhtGW0L7QvdCw0YDQvdC40Lkg0YLQtdC70LXRhNC+0L0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFwdG9wJ30gPSAn0J3QvtGD0YLQsdGD0LonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF0aXR1ZGUnfSA9ICfQqNC40YDQvtGC0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgMTog0KTRltC30LjRh9C90LjQuSDRgNGW0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJ30gPSAn0KDRltCy0LXQvdGMIDI6INCa0LDQvdCw0LvRjNC90LjQuSDRgNGW0LLQtdC90Ywg0L/QtdGA0LXQtNCw0YfRliDQtNCw0L3QuNGFJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInfSA9ICfQoNGW0LLQtdC90YwgMzog0JzQtdGA0LXQttC10LLQuNC5INGA0ZbQstC10L3RjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfQoNGW0LLQtdC90YwgMzog0JzQtdGA0LXQttC10LLQuNC5INGA0ZbQstC10L3RjCAo0YHRg9C/0LXRgNC80LXRgNC10LbQsCknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn0KDRltCy0LXQvdGMIDQ6INCi0YDQsNC90YHQv9C+0YDRgtC90LjQuSDRgNGW0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCA1OiDQoNGW0LLQtdC90Ywg0YHQtdCw0L3RgdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDY6IFByZXNlbnRhdGlvbiBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCA2OiDQoNGW0LLQtdC90Ywg0L/RgNC10LfQtdC90YLQsNGG0ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA3OiBBcHBsaWNhdGlvbiBMYXllcid9ID0gJ9Cg0ZbQstC10L3RjCA3OiDQv9GA0LjQutC70LDQtNC90LjQuSDRgNGW0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstGW0YAg0L7RgNC10L3QtNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAn0JvRltGG0LXQvdC30ZbQudC90LAg0YPQs9C+0LTQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAn0JvRltGG0LXQvdC30ZbQudC90LjQuSDQutC70Y7Rhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIFR5cGUnfSA9ICfQotC40L8g0LvRltGG0LXQvdC30ZbRlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn0KLQtdGA0LzRltC9INC00ZbRlyDQu9GW0YbQtdC90LfRltGXINCy0ZbQtCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCB1bnRpbCd9ID0gJ9Ci0LXRgNC80ZbQvSDQtNGW0Zcg0LvRltGG0LXQvdC30ZbRlyDQtNC+JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfQm9GW0YLRltC5LdC30LDQu9GW0LfQvi3RhNC+0YHRhNCw0YLQvdC40LkgKExpRmVQTzQpINCw0LrRg9C80YPQu9GP0YLQvtGAJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfQm9GW0YLRltC5LdGW0L7QvdC90LjQuSAoTGktaW9uKSDQsNC60YPQvNGD0LvRj9GC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2FuIEFncmVlbWVudCd9ID0gJ9Ca0YDQtdC00LjRgtC90LjQuSDQtNC+0LPQvtCy0ZbRgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb2NhdGVkIGluJ30gPSAn0KDQvtC30YLQsNGI0L7QstCw0L3QuNC5INCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvbmdpdHVkZSd9ID0gJ9CU0L7QstCz0L7RgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAn0JLQuNGA0L7QsdC90LjQuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIExvYWQgQ2FwYWNpdHkgKFcpJ30gPSAn0JzQsNC60YHQuNC80LDQu9GM0L3QsCDQvdCw0LLQsNC90YLQsNC20YPQstCw0LvRjNC90LAg0LfQtNCw0YLQvdGW0YHRgtGMICjQktGCKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICfQn9Cw0LxcJ9GP0YLRjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnkgVHlwZSd9ID0gJ9Ci0LjQvyDQv9Cw0LxcJ9GP0YLRlic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaWNybyBTSU0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWluaS1SYWNrJ30gPSAn0JzRltC90ZYt0YHRgtC10LvQsNC2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC80L7QsdGW0LvRjNC90L7Qs9C+INGC0LXQu9C10YTQvtC90YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlL0VtYmVkZGVkJ30gPSAn0JzQvtCx0ZbQu9GM0L3QuNC5L9Cy0LHRg9C00L7QstCw0L3QuNC5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsJ30gPSAn0JzQvtC00LXQu9GMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZGVsIERlc2NyaXB0aW9uJ30gPSAn0J7Qv9C40YEg0LzQvtC00LXQu9GWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgUmVzb2x1dGlvbid9ID0gJ9Cg0L7Qt9C00ZbQu9GM0L3QsCDQt9C00LDRgtC90ZbRgdGC0Ywg0LzQvtC90ZbRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFNpemUnfSA9ICfQoNC+0LfQvNGW0YAg0LzQvtC90ZbRgtC+0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ9Cc0LjRiNCwLic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn0JzQtdGA0LXQttCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ9CG0L3RhNC+0YDQvNCw0YbRltGPINC/0YDQviDQvNC10YDQtdC20YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBJbmZvcm1hdGlvbid9ID0gJ9CG0L3RhNC+0YDQvNCw0YbRltGPINC/0YDQviDQvNC10YDQtdC20YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV0d29yayBMYXllcid9ID0gJ9Cc0LXRgNC10LbQtdCy0LjQuSDRgNGW0LLQtdC90YwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfQndGW0LrQtdC70Ywt0LrQsNC00LzRltGU0LLRliAoTmlDZCkg0LDQutGD0LzRg9C70Y/RgtC+0YDQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOaWNrZWwtTWV0YWwgSHlkcmlkZSAoTmlNSCkgQmF0dGVyeSd9ID0gJ9Cd0ZbQutC10LvRjC3QvNC10YLQsNC7LdCz0ZbQtNGA0LjQtNC90LjQuSAoTmlNSCkg0LDQutGD0LzRg9C70Y/RgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAn0KPQs9C+0LTQsCDQv9GA0L4g0L3QtdGA0L7Qt9Cz0L7Qu9C+0YjQtdC90L3RjyAoTkRBKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlYm9vayd9ID0gJ9CR0LvQvtC60L3QvtGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAn0JrRltC70YzQutGW0YHRgtGMINC/0YDQvtGG0LXRgdC+0YDRltCyJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQvNC+0LTRg9C70ZbQsiDQvtC/0LXRgNCw0YLQuNCy0L3QvtGXINC/0LDQvFwn0Y/RgtGWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBncmFwaGljcyBjYXJkcyd9ID0gJ9Ca0ZbQu9GM0LrRltGB0YLRjCDQstGW0LTQtdC+0LrQsNGA0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQt0LzQvtC90ZbRgtC+0YAgKNC+0YDQs9Cw0L3RltGH0L3QuNC5INGB0LLRltGC0LvQvtC00ZbQvtC0KSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICfQntC/0LXRgNCw0YbRltC50L3RliDQstC40YLRgNCw0YLQuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICfQndC+0LzQtdGAINC30LDQvNC+0LLQu9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAn0IbQvdGI0LUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ9Cg0LXQt9GD0LvRjNGC0LDRgtC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTid9ID0gJ9Cf0IbQnS3QmtCe0JQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICdQSU4t0JrQntCUIDInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLJ30gPSAn0JHQm9Cu0JLQntCi0JAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICfQn9Cw0YDRgtC90LXRgNGB0YzQutCwINGD0LPQvtC00LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICfQndC+0LzQtdGAINGC0LXQu9C10YTQvtC90YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ9Ci0LjQvyDRgtC10LvQtdGE0L7QvdGDJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BoeXNpY2FsIENvcmVzJ30gPSAn0KTRltC30LjRh9C90ZYg0Y/QtNGA0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUG93ZXIgRGVsaXZlcnknfSA9ICfQn9C+0YHRgtCw0YfQsNC90L3RjyDQtdC70LXQutGC0YDQvtC10L3QtdGA0LPRltGXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyBEb21haW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVyY2hhc2VkIGF0J30gPSAn0J/RgNC40LTQsdCw0L3QviDQt9CwINCw0LTRgNC10YHQvtGOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgRGVwdGgnfSA9ICfQk9C70LjQsdC40L3QsCDRgdGC0ZbQudC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmFjayBVbml0cyAoVSknfSA9ICfQodGC0LXQu9Cw0LbQvdGWINCx0LvQvtC60LggKFUpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICfQmtGW0LzQvdCw0YLQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTSU0gQ2FyZCd9ID0gJ1NJTS3QutCw0YDRgtCwJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NTTC9UTFMgQ2VydGlmaWNhdGVzJ30gPSAn0KHQtdGA0YLQuNGE0ZbQutCw0YLQuCBTU0wvVExTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAn0JTQvtCz0L7QstGW0YAg0LrRg9C/0ZbQstC70ZYt0L/RgNC+0LTQsNC20YMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAn0KHRg9C/0YPRgtC90LjQutC+0LLQuNC5INGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJ9CT0LXRgNC80LXRgtC40YfQvdC40Lkg0YHQstC40L3RhtC10LLQvi3QutC40YHQu9C+0YLQvdC40LkgKFNMQSkg0LDQutGD0LzRg9C70Y/RgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhdCBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJpYWxudW1iZXInfSA9ICfQodC10YDRltC50L3QuNC5INC90L7QvNC10YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmVyIFNvZnR3YXJlJ30gPSAn0KHQtdGA0LLQtdGA0L3QtSDQv9GA0L7Qs9GA0LDQvNC90LUg0LfQsNCx0LXQt9C/0LXRh9C10L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZpY2UgQWdyZWVtZW50J30gPSAn0JTQvtCz0L7QstGW0YAg0L/RgNC+INC90LDQtNCw0L3QvdGPINC/0L7RgdC70YPQsyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ9Ch0LXRgNCy0ZbRgdC90LjQuSDRgtC10LMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hhcmV3YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvY2tldCBUeXBlJ30gPSAn0KLQuNC/INGA0L7Qt9C10YLQutC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NvZnR3YXJlJ30gPSAn0J/RgNC+0LPRgNCw0LzQvdC1INC30LDQsdC10LfQv9C10YfQtdC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTcGVha2Vycyd9ID0gJ9Ch0L/RltC60LXRgNC4JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YW5kYXJkIFNJTSd9ID0gJ9Ch0YLQsNC90LTQsNGA0YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnQgSVAgQWRkcmVzcyd9ID0gJ9Cf0L7Rh9Cw0YLQutC+0LLQsCBJUC3QsNC00YDQtdGB0LAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSd9ID0gJ9CX0LHQtdGA0ZbQs9Cw0L3QvdGPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UgUGFydGl0aW9uJ30gPSAn0KDQvtC30LTRltC7INC00LvRjyDQt9Cx0LXRgNGW0LPQsNC90L3Rjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdWJzY3JpcHRpb24tYmFzZWQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2lkaWFyeSd9ID0gJ9CU0L7Rh9GW0YDQvdGUINC/0ZbQtNC/0YDQuNGU0LzRgdGC0LLQvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdW1tYXJ5J30gPSAn0J/RltC00YHRg9C80L7Quic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ9Ci0L7QvdC60LjQuSDQutC70ZbRlNC90YInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhyZWFkcyd9ID0gJ9Cd0LjRgtC60LgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGh1bmRlcmJvbHQnfSA9ICfQkdC70LjRgdC60LDQstC60LAuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfQl9Cw0LPQsNC70YzQvdC40Lkg0L7QsdGB0Y/QsyDQvtC/0LXRgNCw0YLQuNCy0L3QvtGXINC/0LDQvFwn0Y/RgtGWINCy0ZbQtNC10L7QutCw0YDRgtC4ICjQk9CRKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ9CX0LDQs9Cw0LvRjNC90LAg0L7Qv9C10YDQsNGC0LjQstC90LAg0L/QsNC8XCfRj9GC0YwgKNCT0JEpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfQodC10L3RgdC+0YDQvdC40Lkg0LzQvtC90ZbRgtC+0YAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICfQktC10LbQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnVVNCLdC60L7QvdGG0LXQvdGC0YDQsNGC0L7RgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0ItQyd9ID0gJ1VTQi1DJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJ1ZHQSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICdWUE4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJ1ZSLdCz0LDRgNC90ZbRgtGD0YDQsCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJ1ZpcnR1YWxMaW5rJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvSVAgUGhvbmUnfSA9ICdWb0lQLdGC0LXQu9C10YTQvtC9JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICfQktC10LEt0LrQsNC80LXRgNCwJzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+eydab29tIHZpZXcnfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1PdmVydmlld05hdkJhcgogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zIHBlciBwYWdlJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICcnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtVHJlZVZpZXcKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyZWVWaWV3IGZvciBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcHRoIExldmVsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1pvb20gSW4vT3V0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heCBsaW5rcyBsZXZlbCByZWFjaGVkIGZvciBDb25maWdJdGVtISd9ID0gJyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0PhuqV1IGgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAnVHLhuqFuZyB0aMOhaSBz4buxIGPhu5EgaGnhu4duIHRo4budaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQnfSA9ICdUaGF5IMSR4buVaSBs4bqnbiBjdeG7kWknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGFzdCBjaGFuZ2VkIGJ5J30gPSAnVGhheSDEkeG7lWkgbOG6p24gY3Xhu5FpJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3VyIENvbmZpZ0l0ZW1zJ30gPSAnJzsKCiAgICAjIFRlbXBsYXRlOiBDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFNlYXJjaCd9ID0gJyc7CgogICAgIyBKUyBUZW1wbGF0ZTogQ2xhc3NJbXBvcnRDb25maXJtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIGNsYXNzZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1CdWxrLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbURlbGV0ZS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gIiVzIiBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGhpc3RvcnksIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyBDb25maWdJdGVtIChJRD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgYWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZSAlcyB1cGRhdGVkIGZyb20gIiVzIiB0byAiJXMiJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gJXMgZGVsZXRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZWZlcmVuY2VkIGJ5J30gPSAnVGhhbSBjaGnhur91JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZhbGlkIENsYXNzSUQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW0gU2VhcmNoIFJlc3VsdHMnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1ab29tLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBpdGVtLCBubyBhY2Nlc3MgcmlnaHRzIGZvciBDb25maWdJdGVtIGFyZSBnaXZlbiEnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIG5vdCBmb3VuZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gdmVyc2lvbnMgZm91bmQhJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J29wZXJhdGlvbmFsJ30gPSAnSG/huqF0IMSR4buZbmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ0PhuqNuaCBiw6FvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICdUcuG6oW5nIHRow6FpIHRyaeG7g24ga2hhaSBj4bunYSDEkeG7kWkgdMaw4bujbmcgbsOgeSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgaW5jaWRlbnQgc3RhdGUgb2YgdGhpcyBjb25maWcgaXRlbSd9ID0gJ1Ry4bqhbmcgdGjDoWkgdHJp4buDbiBraGFpIGPhu6dhIMSR4buRaSB0xrDhu6NuZyBuw6B5JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAnS2jDtG5nIGPDsyBxdXnhu4FuISc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWx0ZXIgaW52YWxpZCEnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIHBhcmFtcyBpbnZhbGlkISd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0Rhc2hib2FyZC9JVFNNQ29uZmlnSXRlbUdlbmVyaWMucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3duIGNvbmZpZyBpdGVtcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IFN0YXRlIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBUeXBlJ30gPSAnVHLhuqFuZyB0aMOhaSBz4buxIGPhu5EgaGnhu4duIHRo4budaSc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICdHaeG7r2EnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhdGljIChWZXJzaW9uKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIFJlZmVyZW5jaW5nIFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgYXR0cmlidXRlIHdoaWNoIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHNlYXJjaGVkIGJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V4dGVybmFsLXNvdXJjZSBrZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtVmVyc2lvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWN0aXZhdGUgdGhpcyBvcHRpb24gdG8gZGlzcGxheSB2YWx1ZXMgYXMgYSB0cmVlLCBncm91cGVkIGJ5IGNvbmZpZyBpdGVtcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JVFNNQ29uZmlnSXRlbS9EZWZpbml0aW9uLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXNlIHN0cnVjdHVyZSBpcyBub3QgdmFsaWQuIFBsZWFzZSBwcm92aWRlIGEgaGFzaCB3aXRoIGRhdGEgaW4gWUFNTCBmb3JtYXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhcnRpbmcgdGhlIFlBTUwgc3RyaW5nIHdpdGggXCctLS1cJyBpcyByZXF1aXJlZC4nfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHJlbGV2YW50IGR5bmFtaWMgZmllbGRzIHdlcmUgZm91bmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IGluc2VydCBpbnRvIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5zZXJ0ZWQgMCByb3dzIGludG8gdGhlIHRhYmxlIGNvbmZpZ2l0ZW1fbGluayd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL1N5c3RlbS9JbXBvcnRFeHBvcnQvT2JqZWN0QmFja2VuZC9JVFNNQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2Ygb25lIGVsZW1lbnQgd2l0aGluIGEgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nJ30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbkR5bmFtaWNGaWVsZC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXJyb3Igc3luY2hyb25pemluZyB0aGUgZGVmaW5pdGlvbnMuIFBsZWFzZSBjaGVjayB0aGUgbG9nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydZb3UgaGF2ZSBJVFNNQ29uZmlnSXRlbSBkZWZpbml0aW9ucyB3aGljaCBhcmUgbm90IHN5bmNocm9uaXplZC4gUGxlYXNlIGRlcGxveSB5b3VyIElUU01Db25maWdJdGVtIGR5bmFtaWMgZmllbGQgY2hhbmdlcy4nfSA9CiAgICAgICAgJyc7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAnxJDDoyBo4bq/dCBo4bqhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ0LhuqNvIHRyw6wnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGlsb3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGxhbm5lZCd9ID0gJ1RoZW8ga+G6vyBob+G6oWNoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ1Phu61hIGNo4buvYSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAnS2jDtG5nIHPhu60gZOG7pW5nJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ1Ro4bqpbSDEkeG7i25oJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICdLaeG7g20gdHJhL0jhu49pIMSRw6FwJzsKCiAgICAjIEpTIEZpbGU6IElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAnJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQSBtYXBwaW5nIG9mIGlubmVyIGZpZWxkIG5hbWVzIHVzZWQgaW4gdGhlIFByb2Nlc3MgTWFuYWdlbWVudCBUcmFuc2l0aW9uQWN0aW9ucyBDb25maWdJdGVtQWRkIGFuZCAtVXBkYXRlLiBUaGUga2V5cyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBzZXQgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSB0aWNrZXQgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNyZWF0ZS91cGRhdGUgdGhlIENJLCBhbmQgdGhlIHZhbHVlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIElUU01Db25maWdJdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FsbG93cyBleHRlbmRlZCBzZWFyY2ggY29uZGl0aW9ucyBpbiBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGFnZW50IGludGVyZmFjZS4gV2l0aCB0aGlzIGZlYXR1cmUgeW91IGNhbiBzZWFyY2ggZS4gZy4gY29uZmlnIGl0ZW0gbmFtZSB3aXRoIHRoaXMga2luZCBvZiBjb25kaXRpb25zIGxpa2UgIigqa2V5MSomJiprZXkyKikiIG9yICIoKmtleTEqfHwqa2V5MiopIi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlcyBjb3VudGluZywgd2hlcmUgIlRvdGFsTGljZW5zZXNERiIsICJBdmFpbGFibGVMaWNlbnNlc0RGIiBhbmQgIkxpY2Vuc2VSZWZlcmVuY2VERiIgYXJlIHRoZSBuYW1lcyBvZiB0aGUgZHluYW1pYyBmaWVsZHMgdXNlZCB0byB0cmFjayB0aGUgcmVtYWluaW5nIGxpY2Vuc2VzLiBJZiB1c2VkLCBvbmx5IGRlcGxveW1lbnQgc3RhdGVzIGluICJWYWxpZERlcGxTdGF0ZXMiIGFyZSBjb25zaWRlcmVkLiBJZiBhIHRocmVzaG9sZCBpcyBkZWZpbmVkIGluICJNaW5pbXVtTGljZW5zZXMiLCBhIHRpY2tldCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgY3JlYXRlZCBpZiBsZXNzIGxpY2Vuc2VzIGFyZSBhdmFpbGFibGUuIEZvciB0aGlzLCB0aGUgY2hlY2tib3ggZHluYW1pYyBmaWVsZCAiVGlja2V0LT5EeW5hbWljRmllbGQiIG11c3QgZXhpc3QuIFRoZSB0YWdzIFw8T1RPQk9fQ09ORklHSVRFTV9YXD4gd2hlcmUgWCBjYW4gYmUgTkFNRSwgTlVNQkVSLCBMSUNFTlNFU19BVkFJTCBhbmQgTElDRU5TRVNfTUlOLCB3aWxsIGJlIHN1YnN0aXR1dGVkIHdpdGggdGhlIHJlc3BlY3RpdmUgdmFsdWVzIGluICJUaWNrZXQtPlRleHQiIGJ5IHRoZSBjb25maWcgaXRlbSBuYW1lLCBudW1iZXIsIGF2YWlsYWJsZSBsaWNlbnNlcywgYW5kIG1pbmltdW0gcmVxdWlyZWQgYXZhaWxhYmxlIGxpY2Vuc2VzLCByZXNwZWN0aXZlbHkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIGNvbXBhbnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0lzIGFzc2lnbmVkIHRvIGN1c3RvbWVyIHVzZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ01EQiBTZXR0aW5ncyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBvbmx5IHdpdGhpbiB0aGUgc2FtZSBDb25maWdJdGVtIGNsYXNzIChcJ2NsYXNzXCcpIG9yIGdsb2JhbGx5IChcJ2dsb2JhbFwnKSwgd2hpY2ggbWVhbnMgZXZlcnkgZXhpc3RpbmcgQ29uZmlnSXRlbSBpcyB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBsb29raW5nIGZvciBkdXBsaWNhdGVzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nob29zZSBhIG1vZHVsZSB0byBlbmZvcmNlIGEgbmFtaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGEgbW9kdWxlIHRvIGVuZm9yY2UgYSBudW1iZXIgc2NoZW1lLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDaG9vc2UgYSBtb2R1bGUgdG8gZW5mb3JjZSBhIHZlcnNpb24gc3RyaW5nIHNjaGVtZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGF0dHJpYnV0ZXMgdG8gdHJpZ2dlciB0aGUgY3JlYXRpb24gb2YgYSBuZXcgdmVyc2lvbi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2hvb3NlIGNhdGVnb3JpZXMgdG8gYXNzaWduIHRvIHRoaXMgY29uZmlnIGl0ZW0gY2xhc3MuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbG9yIGRlZmluaXRpb25zIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29sdW1uIGNvbmZpZyBpdGVtIGZpbHRlcnMgZm9yIENvbmZpZ0l0ZW0gT3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbHVtbnMgdGhhdCBjYW4gYmUgZmlsdGVyZWQgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIE5vdGU6IE9ubHkgQ29uZmlnIEl0ZW0gYXR0cmlidXRlcyBhbmQgRHluYW1pYyBGaWVsZHMgKER5bmFtaWNGaWVsZF9OYW1lWCkgYXJlIGFsbG93ZWQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIEl0ZW1zJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGFkZC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZWRpdC4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgZW5hYmxlcyBhY2NvdW50aW5nIGxpY2Vuc2VzIGZvciBhIGdpdmVuIGNvbmZpZyBpdGVtLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGV2ZW50IG1vZHVsZSB0aGF0IGVuYWJsZXMgbG9nZ2luZyB0byBoaXN0b3J5IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnIGl0ZW0gZXZlbnQgbW9kdWxlIHRoYXQgdXBkYXRlcyBjb25maWcgaXRlbXMgdG8gdGhlaXIgY3VycmVudCBkZWZpbml0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIGhpc3RvcnkuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtIHByaW50Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSB6b29tLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFRyZWUgVmlldyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIFZlcnNpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbXMgb2YgdGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgbm90IGJlIHN0b3JlZCBvbiB0aGUgRWxhc3RpY3NlYXJjaCBzZXJ2ZXIuIFRvIGFwcGx5IHRoaXMgdG8gZXhpc3RpbmcgQ0lzLCB0aGUgQ0kgbWlncmF0aW9uIGhhcyB0byBiZSBydW4gdmlhIGNvbnNvbGUsIGFmdGVyIGNoYW5naW5nIHRoaXMgb3B0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1zIHdpdGggdGhlIGZvbGxvd2luZyBkZXBsb3ltZW50IHN0YXRlcyB3aWxsIG5vdCBiZSBzdG9yZWQgb24gdGhlIEVsYXN0aWNzZWFyY2ggc2VydmVyLiBUbyBhcHBseSB0aGlzIHRvIGV4aXN0aW5nIENJcywgdGhlIENJIG1pZ3JhdGlvbiBoYXMgdG8gYmUgcnVuIHZpYSBjb25zb2xlLCBhZnRlciBjaGFuZ2luZyB0aGlzIG9wdGlvbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0gTGltaXQnfSA9ICdD4bqldSBoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gSXRlbSBsaW1pdCBwZXIgcGFnZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBNYW5hZ2VtZW50IERhdGFiYXNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIGl0ZW0gYnVsayBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggYmFja2VuZCByb3V0ZXIgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgQWN0aW9ucyB3aGVyZSBhIHNldHRpbmdzIGJ1dHRvbiBpcyBhdmFpbGFibGUgaW4gdGhlIGxpbmtlZCBvYmplY3RzIHdpZGdldCAoTGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCIpLiBQbGVhc2Ugbm90ZSB0aGF0IHRoZXNlIEFjdGlvbnMgbXVzdCBoYXZlIHJlZ2lzdGVyZWQgdGhlIGZvbGxvd2luZyBKUyBhbmQgQ1NTIGZpbGVzOiBDb3JlLkFsbG9jYXRpb25MaXN0LmNzcywgQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qcywgQ29yZS5VSS5UYWJsZS5Tb3J0LmpzLCBDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyBhbmQgQ29yZS5BZ2VudC5MaW5rT2JqZWN0LmpzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ8SQ4buLbmggbmdoxKlhIG3hu5l0IG3DtC3EkXVuIHThu5VuZyBxdcOhdCDEkeG7gyBoaeG7g24gdGjhu4sgbeG7mXQgZGFuaCBzw6FjaCBraOG6o28gc8OhdC4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgYXZhaWxhYmxlIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGFnZW50IGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSB0aGlzIG9wZXJhdGlvbi4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBkaXNwbGF5ZWQgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IHJlbGF0aW9ucyBkZXB0aCB0byBiZSBzaG93bi4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzaG93biBjb25maWcgaXRlbSBzZWFyY2ggYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgc2hvd24gY29uZmlnIGl0ZW0gc2VhcmNoIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIktleSIgbXVzdCBoYXZlIHRoZSBuYW1lIG9mIHRoZSBEeW5hbWljIEZpZWxkIGluIHRoaXMgY2FzZSBcJ1hcJywgIkNvbnRlbnQiIG11c3QgaGF2ZSB0aGUgdmFsdWUgb2YgdGhlIER5bmFtaWMgRmllbGQgZGVwZW5kaW5nIG9uIHRoZSBEeW5hbWljIEZpZWxkIHR5cGUsICBUZXh0OiBcJ2EgdGV4dFwnLCBEcm9wZG93bjogXCcxXCcsIERhdGUvVGltZTogXCdTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0WWVhcj0xOTc0OyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TW9udGg9MDE7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnREYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RhcnRIb3VyPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0TWludXRlPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0YXJ0U2Vjb25kPTAwOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BZZWFyPTIwMTM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1vbnRoPTAxOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lU2xvdFN0b3BEYXk9MjY7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcEhvdXI9MjM7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVTbG90U3RvcE1pbnV0ZT01OTsgU2VhcmNoX0R5bmFtaWNGaWVsZF9YVGltZVNsb3RTdG9wU2Vjb25kPTU5O1wnIGFuZCBvciBcJ1NlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludEZvcm1hdD13ZWVrOyBTZWFyY2hfRHluYW1pY0ZpZWxkX1hUaW1lUG9pbnRTdGFydD1CZWZvcmU7IFNlYXJjaF9EeW5hbWljRmllbGRfWFRpbWVQb2ludFZhbHVlPTdcJzsuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBzdWJvYmplY3Qgb2YgdGhlIGNsYXNzIFwnSVRTTUNvbmZpZ0l0ZW1cJy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkaXNhYmxlZCBjb2x1bW5zIG9mIENJcyBpbiB0aGUgY29uZmlnIGl0ZW0gb3ZlcnZpZXcgZGVwZW5kaW5nIG9uIHRoZSBDSSBjbGFzcy4gRWFjaCBlbnRyeSBtdXN0IGNvbnNpc3Qgb2YgYSBjbGFzcyBuYW1lIGFuZCBhbiBhcnJheSBvZiBhdmFpbGFibGUgZmllbGRzIGZvciB0aGUgY29ycmVzcG9uZGluZyBjbGFzcy4gRHluYW1pYyBmaWVsZCBlbnRyaWVzIGhhdmUgdG8gaG9ub3IgdGhlIHNjaGVtZSBEeW5hbWljRmllbGRfRmllbGROYW1lLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGhlaWdodCBmb3IgdGhlIHJpY2ggdGV4dCBlZGl0b3IgY29tcG9uZW50IGZvciB0aGlzIHNjcmVlbi4gRW50ZXIgbnVtYmVyIChwaXhlbHMpIG9yIHBlcmNlbnQgdmFsdWUgKHJlbGF0aXZlKS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBudW1iZXIgb2Ygcm93cyBmb3IgdGhlIENJIGRlZmluaXRpb24gZWRpdG9yIGluIHRoZSBhZG1pbiBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgb3JkZXIgb2YgaW5jaWRlbnQgc3RhdGVzIGZyb20gaGlnaCAoZS5nLiBjcmljaXRhbCkgdG8gbG93IChlLmcuIGZ1bmN0aW9uYWwpLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHJlbGV2YW50IGRlcGxveW1lbnQgc3RhdGVzIHdoZXJlIGxpbmtlZCB0aWNrZXRzIGNhbiBhZmZlY3QgdGhlIHN0YXR1cyBvZiBhIENJLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0gc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2ggc2NyZWVuLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIHNlYXJjaCBsaW1pdCBmb3IgdGhlIFB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIHNjcmVlbi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcgZm9yIGFsbCBDSSBjbGFzc2VzLiBJZiB0aGVyZSBpcyBubyBlbnRyeSwgdGhlbiB0aGUgZGVmYXVsdCBjb2x1bW5zIGFyZSBzaG93bi4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBzaG93biBjb2x1bW5zIG9mIENJcyBpbiB0aGUgbGluayB0YWJsZSBjb21wbGV4IHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBiZSBwcmVmaXhlZCB3aXRoIHRoZSBjbGFzcyBuYW1lIGFuZCBkb3VibGUgY29sb25zIChpLmUuIENvbXB1dGVyOjopLiBUaGVyZSBhcmUgYSBmZXcgQ0ktQXR0cmlidXRlcyB0aGF0IGNvbW1vbiB0byBhbGwgQ0lzIChleGFtcGxlIGZvciB0aGUgY2xhc3MgQ29tcHV0ZXI6IENvbXB1dGVyOjpOYW1lLCBDb21wdXRlcjo6Q3VyRGVwbFN0YXRlLCBDb21wdXRlcjo6Q3JlYXRlVGltZSkuIFRvIHNob3cgaW5kaXZpZHVhbCBDSS1BdHRyaWJ1dGVzIGFzIGRlZmluZWQgaW4gdGhlIENJLURlZmluaXRpb24sIHRoZSBmb2xsb3dpbmcgc2NoZW1lIG11c3QgYmUgdXNlZCAoZXhhbXBsZSBmb3IgdGhlIGNsYXNzIENvbXB1dGVyKTogQ29tcHV0ZXI6OkhhcmREaXNrOjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjE6OkNhcGFjaXR5OjoxLCBDb21wdXRlcjo6SGFyZERpc2s6OjIsIENvbXB1dGVyOjpIYXJkRGlzazo6Mjo6Q2FwYWNpdHk6OjEuIElmIHRoZXJlIGlzIG5vIGVudHJ5IGZvciBhIENJIGNsYXNzLCB0aGVuIHRoZSBkZWZhdWx0IGNvbHVtbnMgYXJlIHNob3duLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBmb3IgXCdBY3Rpb25cJyBpbiB0aGlyZCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBmaXJzdCBsZXZlbCBvZiB0aGUgSVRTTSBDb25maWcgSXRlbSBBQ0wgc3RydWN0dXJlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgd2hpY2ggaXRlbXMgYXJlIGF2YWlsYWJsZSBpbiBzZWNvbmQgbGV2ZWwgb2YgdGhlIElUU00gQ29uZmlnIEl0ZW0gQUNMIHN0cnVjdHVyZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHdoaWNoIHR5cGUgb2YgbGluayAobmFtZWQgZnJvbSB0aGUgdGlja2V0IHBlcnNwZWN0aXZlKSBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB3aGljaCB0eXBlIG9mIHRpY2tldCBjYW4gYWZmZWN0IHRoZSBzdGF0dXMgb2YgYSBsaW5rZWQgQ0kuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5pdGlvbiBVcGRhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVsZXRlIENvbmZpZ3VyYXRpb24gSXRlbSd9ID0gJ0PhuqV1IGgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgQ29sb3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudFN0YXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R1cGxpY2F0ZSd9ID0gJ05ow6JuIMSRw7RpJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGQgZXZlbnQgbW9kdWxlIHRoYXQgbWFya3MgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgYXMgb3V0IG9mIHN5bmMsIGlmIGNvbnRhaW5pbmcgZHluYW1pYyBmaWVsZHMgY2hhbmdlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBhZGRpdGlvbmFsIElUU00gZmllbGQgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNjcmVlbiBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0R5bmFtaWMgZmllbGRzIHNob3duIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBzY3JlZW4gb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyBmaWVsZHMgc2hvd24gaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIGFjdGlvbiBmZWF0dXJlIGZvciB0aGUgYWdlbnQgZnJvbnRlbmQgdG8gd29yayBvbiBtb3JlIHRoYW4gb25lIGNvbmZpZ3VyYXRpb24gaXRlbSBhdCBhIHRpbWUuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcyBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBhY3Rpb24gZmVhdHVyZSBvbmx5IGZvciB0aGUgbGlzdGVkIGdyb3Vwcy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmFibGVzL2Rpc2FibGVzIHRoZSBmdW5jdGlvbmFsaXR5IHRvIGNoZWNrIElUU00gb25maWd1cmF0aW9uIGl0ZW1zIGZvciB1bmlxdWUgbmFtZXMuIEJlZm9yZSBlbmFibGluZyB0aGlzIG9wdGlvbiB5b3Ugc2hvdWxkIGNoZWNrIHlvdXIgc3lzdGVtIGZvciBhbHJlYWR5IGV4aXN0aW5nIGNvbmZpZyBpdGVtcyB3aXRoIGR1cGxpY2F0ZSBuYW1lcy4gWW91IGNhbiBkbyB0aGlzIHdpdGggdGhlIGNvbnNvbGUgY29tbWFuZCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXZlbnQgbW9kdWxlIHRvIHNldCBjb25maWdpdGVtLXN0YXR1cyBvbiB0aWNrZXQtY29uZmlnaXRlbS1saW5rLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1DcmVhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSVRTTSBDb25maWdJdGVtJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lTdGF0ZSd9ID0gJ1Ry4bqhbmcgdGjDoWkgc+G7sSBj4buRJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICdUcuG6oW5nIHRow6FpIHPhu7EgY+G7kSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBjbGFzc2VzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgZGVwbG95bWVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBpbmNpZGVudCBzdGF0ZXMgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbmFtZSBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIHRoZSBudW1iZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIGFjY291bnRpbmcgY29uZmlndXJhdGlvbiBpdGVtIGV2ZW50IG1vZHVsZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hZGVyIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIHRoZSByZXN1bHQgb2YgdGhpcyBvcGVyYXRpb24uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjbGFzcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGNoZWNrIHRoZSBncm91cCByZXNwb25zaWJsZSBmb3IgYSBjb25maWd1cmF0aW9uIGl0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kdWxlIHRvIGdlbmVyYXRlIElUU00gY29uZmlnIGl0ZW0gc3RhdGlzdGljcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSBNb2R1bGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIE1vZHVsZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPYmplY3RzIHRvIHNlYXJjaCBmb3IsIGhvdyBtYW55IGVudHJpZXMgYW5kIHdoaWNoIGF0dHJpYnV0cyB0byBzaG93LiBDb25maWdJdGVtIGF0dHJpYnV0ZXMgaGF2ZSB0byBleHBsaWNpdGx5IGJlIHN0b3JlZCB2aWEgRWxhc3RpY3NlYXJjaC4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldy4nfSA9ICdU4buVbmcgcXVhbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAnVGhhbSBz4buRIGNobyBuaMOzbSBj4bqlcCBwaMOpcCBj4bunYSB0aHXhu5ljIHTDrW5oIGRhbmggbeG7pWMgY2h1bmcuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBuYW1lIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBudW1iZXIgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHBhZ2VzIChpbiB3aGljaCB0aGUgY29uZmlndXJhdGlvbiBpdGVtcyBhcmUgc2hvd24pLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgdGVtcGxhdGUgdG9vbGtpdCBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiB0cmlnZ2VyIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVyZm9ybXMgdGhlIGNvbmZpZ3VyZWQgYWN0aW9uIGZvciBlYWNoIGV2ZW50IChhcyBhbiBJbnZva2VyKSBmb3IgZWFjaCBjb25maWd1cmVkIFdlYnNlcnZpY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVybWlzc2lvbiBHcm91cCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgY2FuIHNlZSBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gYXR0YWNobWVudCBhY3Rpb24gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGFkZCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGJ1bGsgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBlZGl0IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIHByaW50IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHByaXZpbGVnZXMgdG8gZGVsZXRlIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VhcmNoIGNvbmZpZyBpdGVtcy4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0IHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBhIENJIGF1dG9tYXRpY2FsbHkgd2hlbiBhIFRpY2tldCBpcyBMaW5rZWQgdG8gYSBDSS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBkZXBsb3ltZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXRzIHRoZSBpbmNpZGVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRoYXQgYWxsb3dzIGxpbmtpbmcgYSBjb25maWd1cmF0aW9uIGl0ZW0gd2l0aCBhbm90aGVyIG9iamVjdCBpbiB0aGUgY29uZmlnIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGFjY2VzcyB0aGUgaGlzdG9yeSBvZiBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkZWxldGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gbGlua3MgYXMgYSBUcmVlIFZpZXcuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGR1cGxpY2F0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBlZGl0IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICdIaeG7g24gdGjhu4sgbGnDqm4ga+G6v3QgdHJvbmcgdHLDrG5oIMSRxqFuIMSR4buDIHPhu61hIGto4bqjbyBzw6F0IHRyb25nIGtoaSB4ZW0gY2hpIHRp4bq/dCBraOG6o28gc8OhdCDhu58gZ2lhbyBkaeG7h24gxJFp4buBdSBow6BuaCB2acOqbi4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGdvIGJhY2sgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ0hp4buDbiB0aOG7iyBsacOqbiBr4bq/dCB0cm9uZyB0csOsbmggxJHGoW4gxJHhu4MgcXVheSBs4bqhaSB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAnSGnhu4NuIHRo4buLIGxpw6puIGvhur90IHRyb25nIHRyw6xuaCDEkcahbiDEkeG7gyBz4butYSBraOG6o28gc8OhdCB0cm9uZyBraGkgeGVtIGNoaSB0aeG6v3Qga2jhuqNvIHPDoXQg4bufIGdpYW8gZGnhu4duIMSRaeG7gXUgaMOgbmggdmnDqm4uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJyc7CiAgICAkU2VsZi0+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+eyc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICdRdeG6o24gbMO9IHRo4budaSBnaWFuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcgSW5mb3JtYXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRkcmVzcyBBbGxvY2F0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FkbWluaXN0cmF0b3InfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW5hbG9nIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwYWNoZSBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FwcGxpYW5jZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZSBEaXN0cmlidXRpb24gTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBDYXBhY2l0eSAoQWgpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JhdHRlcnkgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdWlsZGluZyd9ID0gJ1Rvw6AgbmjDoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCdXMgSW50ZXJmYWNlJ30gPSAnR2lhbyBkaeG7h24nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ1BVJ30gPSAnQ1BVJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSBDbGFzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSAoR0IpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgUmVhZGVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcmQgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgQ2VydGlmaWNhdGVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NsaWVudCBTb2Z0d2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgY2F0ZWdvcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xvY2tyYXRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2Nrc3BlZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29kZSBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25mZXJlbmNlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnN1bHRpbmcgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFjdCBEaXN0cmlidXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWluZXIgTWFuYWdlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCBmcm9tJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRyYWN0IHBlcmlvZCB1bnRpbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb3JkbGVzcyBQaG9uZSAoREVDVCBQaG9uZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RIQ1AgUmVzZXJ2ZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEVkknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBJbnZvaWNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgT3JkZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiBXYXJyYW50eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIHJlbGVhc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVza3RvcCd9ID0gJ03DoXkgxJHhu4MgYsOgbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEaXNwbGF5UG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbWFpbCBDZXJ0aWZpY2F0ZXMgKFMvTUlNRSBDZXJ0aWZpY2F0ZXMpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgb2Ygc3VwcG9ydCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcnkgRGF0ZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbCBIYXJkIERyaXZlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpcmV3YWxsJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zpcm13YXJlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZseXdoZWVsIEVuZXJneSBTdG9yYWdlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Zvcm0gRmFjdG9yJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyYW5jaGlzZSBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRnJlZXdhcmUnfSA9ICdQaOG6p24gbeG7gW0gbWnhu4VuIHBow60nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmFsIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIENhcmRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dyYXBoaWNzIGNhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSERNSSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBNb2RlbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIYXJkd2FyZSBXZWlnaHQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJUCBQcm90b2NvbCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52ZW50b3J5IE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlcnN0bWVudCBjb3N0cyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZvaWNlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydLZXlib2FyZCd9ID0gJ0LDoG4gcGjDrW0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ03DoXkgeMOhY2ggdGF5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhdGl0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDE6IFBoeXNpY2FsIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDI6IERhdGEgTGluayBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNzogQXBwbGljYXRpb24gTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGVhc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgQ291bnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBLZXknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIGZyb20nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBwZXJpb2QgdW50aWwnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGl0aGl1bSBJcm9uIFBob3NwaGF0ZSAoTGlGZVBPNCkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYW4gQWdyZWVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvY2F0ZWQgaW4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9uZ2l0dWRlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01JVCBMaWNlbnNlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01QTCAoTW96aWxsYSBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWFudWZhY3R1cmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gTG9hZCBDYXBhY2l0eSAoVyknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01lbW9yeSBUeXBlJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pY3JvIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNaW5pLVJhY2snfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9iaWxlIE51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUvRW1iZWRkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICdDaOG7p25nIGxv4bqhaSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2RlbCBEZXNjcmlwdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb25pdG9yIFJlc29sdXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBTaXplJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vdXNlJ30gPSAnQ2h14buZdCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vdGVib29rJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBDUFVzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcGVyYXRpbmcgY29zdHMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3JkZXIgTnVtYmVyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J090aGVyJ30gPSAnS2jDoWMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ0vhur90IHF14bqjIHThu6snOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BJTiAyJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BVSyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsgMid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jvb20nfSA9ICdQaMOybmcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU0lNIENhcmQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU1NML1RMUyBDZXJ0aWZpY2F0ZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2FsZXMgQ29udHJhY3QnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2F0ZWxsaXRlIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYWxlZCBMZWFkLUFjaWQgKFNMQSkgQmF0dGVyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWF0IGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcmlhbG51bWJlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2ZXIgU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VydmljZSBBZ3JlZW1lbnQnfSA9ICdUaG/huqMgdGh14bqtbiBN4bupYyDEkeG7mSBE4buLY2ggduG7pSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAnVGnDqnUgY2h14bqpbic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTdGFydCBJUCBBZGRyZXNzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG90YWwgUkFNIChHQiknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG91Y2hzY3JlZW4gTW9uaXRvcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3dlcid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydVU0IgSHViJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1VTQi1DJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZHQSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWUE4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlIgSGVhZHNldCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsIENsaWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWaXJ0dWFsTGluayd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb0lQIFBob25lJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZvbHVtZSBsaWNlbnNlcyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXZWJjYW0nfSA9ICcnOwoKCiAgICBwdXNoIEB7ICRTZWxmLT57SmF2YVNjcmlwdFN0cmluZ3N9IC8vIFtdIH0sICgKICAgICdBbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgY2xhc3MgaW1wb3J0LicsCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNvbW11bmljYXRpb24uJywKICAgICdDb25maXJtJywKICAgICdEaXNtaXNzJywKICAgICdEbyB5b3Ugd2FudCB0byBwcm9jZWVkPycsCiAgICAnSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzJywKICAgICdObycsCiAgICAnTm90ZSB0aGF0IGFsc28gY29ycmVzcG9uZGluZyBkeW5hbWljIGZpZWxkcyBhbmQgR2VuZXJhbENhdGFsb2cgY2xhc3NlcyB3aWxsIGJlIGNyZWF0ZWQgYW5kIHRoZXJlIGlzIG5vIGF1dG9tYXRpYyByZW1vdmFsLicsCiAgICAnT2snLAogICAgJ092ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24nLAogICAgJ1BsZWFzZSBlbnRlciBhdCBsZWFzdCBvbmUgc2VhcmNoIHZhbHVlIG9yICogdG8gZmluZCBhbnl0aGluZy4nLAogICAgJ1NlYXJjaCcsCiAgICAnU2V0dGluZ3MnLAogICAgJ1N1Ym1pdCcsCiAgICAnVGhlIGZvbGxvd2luZyBjbGFzc2VzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCcsCiAgICAnWWVzJywKICAgICk7Cgp9CgoxOwo=</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+P6aG16YWN572u6aG55Liq5pWwJzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfmnKrmib7liLDphY3nva7pobnmlbDmja7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfpgInmi6nor6XphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn5ZCM5pe25pCc57Si5Lul5YmN55qE54mI5pys5ZCXPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+mFjee9rumhueagkeW9ouinhuWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+a3seW6puetiee6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+aUvuWkpy/nvKnlsI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbSDlt7Lovr7liLDmnIDlpKfpk77mjqXnuqfliKvvvIEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn6YWN572u6aG55L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+W9k+WJjeeahOmDqOe9sueKtuaAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn5b2T5YmN55qE5pWF6Zqc54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+acgOWQjuS/ruaUuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfmnIDlkI7kv67mlLnkuronOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICfmgqjnmoTphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn6YWN572u6aG55pCc57SiJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn5bCG5a+85YWl5Lul5LiL57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+WwhuWvvOWFpeS7peS4i+inkuiJsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICfor7fms6jmhI/vvIzkuZ/kvJrliJvlu7rnm7jlupTnmoTliqjmgIHlrZfmrrXlkowgR2VuZXJhbENhdGFsb2cg57G777yM6ICM5LiU5LiN5Lya6Ieq5Yqo5Yig6Zmk44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn5oKo6KaB57un57ut6L+b6KGM5ZCX77yfJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ+mcgOimgeekuuS+i+exu++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICflrprkuYnmsqHmnInmnInmlYjnmoQgWUFNTCDlk4jluIzlgLzjgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNN6YWN572u6aG55qaC6KeIJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtQnVsay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+WumumFjee9rumhuUlE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn5oKo6Iez5bCR6ZyA6KaB5LiA5Liq6YCJ5a6a55qE6YWN572u6aG577yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn5L2g5rKh5pyJ5q2k6YWN572u6aG555qE5YaZ5p2D6ZmQ77yaJXPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJ30gPSAn5rKh5pyJ57G7ICVz55qE5a6a5LmJ77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRGVsZXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgaXRlbSAiJXMiIG5vdCBmb3VuZCBpbiBkYXRhYmFzZSEnfSA9ICflnKjmlbDmja7lupPkuK3mib7kuI3liLDphY3nva7pobnigJwlc+KAne+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXYXMgbm90IGFibGUgdG8gZGVsZXRlIHRoZSBjb25maWdpdGVtIElEICVzISd9ID0gJ+aXoOazleWIoOmZpOmFjee9rumhuUlEICVz77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfmib7kuI3liLDphY3nva7poblJRCVz55qE54mI5pys77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtRWRpdC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlELCBEdXBsaWNhdGVJRCBvciBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+WumumFjee9rumhuUlE44CBRHVwbGljYXRlSUTmiJZDbGFzc0lE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfmsqHmnInorr/pl67mnYPpmZDvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5LiN6IO95pi+56S65Y6G5Y+y5L+h5oGv77yM5Zug5Li65rKh5pyJ5oyH5a6a6YWN572u6aG5SUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaGlzdG9yeSwgbm8gYWNjZXNzIHJpZ2h0cyBnaXZlbiEnfSA9ICfml6Dms5XmmL7npLrljoblj7LorrDlvZXvvIzlm6DkuLrmsqHmnInorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IENvbmZpZ0l0ZW0gKElEPSVzKSd9ID0gJ+aWsOW7uumFjee9rumhue+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldyB2ZXJzaW9uIChJRD0lcyknfSA9ICfmlrDlu7rniYjmnKzvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXBsb3ltZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+mDqOe9sueKtuaAgeW3suabtOaWsO+8iOaWsD0lc++8jOaXpz0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNpZGVudCBzdGF0ZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICfmlYXpmpznirbmgIHlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSAoSUQ9JXMpIGRlbGV0ZWQnfSA9ICfphY3nva7pobnvvIhJRD0lc++8ieW3suWIoOmZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaW5rIHRvICVzICh0eXBlPSVzKSBhZGRlZCd9ID0gJ+WIsCVz6ZO+5o6l55qE77yI57G75Z6LPSVz77yJ5bey5re75YqgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGRlbGV0ZWQnfSA9ICfliLAlc+mTvuaOpeeahO+8iOexu+Weiz0lc++8ieW3suWIoOmZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIGRlZmluaXRpb24gdXBkYXRlZCAoSUQ9JXMpJ30gPSAn6YWN572u6aG55a6a5LmJ5bey5pu05paw77yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmFtZSB1cGRhdGVkIChuZXc9JXMsIG9sZD0lcyknfSA9ICflkI3np7Dlt7Lmm7TmlrDvvIjmlrA9JXPvvIzml6c9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlICVzIHVwZGF0ZWQgZnJvbSAiJXMiIHRvICIlcyInfSA9ICflsZ7mgKclc+W3suS7juKAnCVz4oCd5pu05paw5Li64oCcJXPigJ0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn54mI5pysJXMg5bey5Yig6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbGUgIiVzIiB1cGxvYWRlZCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgcmVtb3ZlZCd9ID0gJyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVByaW50LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuISd9ID0gJ+ayoeacieaMh+WumumFjee9rumhuUlE5oiW54mI5pysSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5peg5rOV5pi+56S66YWN572u6aG577yM5Zug5Li65rKh5pyJ6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn5Zyo5pWw5o2u5bqT5Lit5om+5LiN5Yiw6YWN572u6aG5SUQgJXPvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSd9ID0gJ+mFjee9rumhuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmludGVkIGJ5ICVzIGF0ICVzJ30gPSAn5omT5Y2w5Lq677yaJXMg77yM5omT5Y2w5pel5pyf77yaJXMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVmZXJlbmNlZCBieSd9ID0gJ0FDTOiuvue9ruWPguiAgyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW52YWxpZCBDbGFzc0lEISd9ID0gJ+aXoOaViOeahOexu0lE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn5rKh5pyJ5oyH5a6a57G7SUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnfSA9ICfmsqHmnInov5nkuKrmjIflrprnsbvnmoTorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gUmVzdWx0ISd9ID0gJ+aXoOe7k+aenO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWcgSXRlbSBTZWFyY2ggUmVzdWx0cyd9ID0gJ+mFjee9rumhueaQnOe0oue7k+aenCc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhblwndCBzaG93IGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZm9yIENvbmZpZ0l0ZW0gYXJlIGdpdmVuISd9ID0KICAgICAgICAn5peg5rOV5pi+56S66YWN572u6aG577yM5Zug5Li65rKh5pyJ57uZ5a6a6YWN572u6aG555qE6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gbm90IGZvdW5kISd9ID0gJ+acquaJvuWIsOmFjee9rumhue+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyB2ZXJzaW9ucyBmb3VuZCEnfSA9ICfmnKrmib7liLDku7vkvZXniYjmnKzvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnb3BlcmF0aW9uYWwnfSA9ICfmraPluLgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnd2FybmluZyd9ID0gJ+itpuWRiic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydpbmNpZGVudCd9ID0gJ+aVhemanCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVwbG95bWVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aG56YOo572y54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGlzIGNvbmZpZyBpdGVtJ30gPSAn6YWN572u6aG55pWF6Zqc54q25oCBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBwZXJtaXNzaW9uJ30gPSAn5rKh5pyJ5p2D6ZmQJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpbHRlciBpbnZhbGlkISd9ID0gJ+i/h+a7pOWZqOaXoOaViO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggcGFyYW1zIGludmFsaWQhJ30gPSAn5pCc57Si5Y+C5pWw5peg5pWI77yBJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvT3V0cHV0L0hUTUwvRGFzaGJvYXJkL0lUU01Db25maWdJdGVtR2VuZXJpYy5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd24gY29uZmlnIGl0ZW1zJ30gPSAn5bey5pi+56S655qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgU3RhdGUgVHlwZSd9ID0gJ+mDqOe9sueKtuaAgeexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnfSA9ICflvZPliY3nmoTmlYXpmpznirbmgIHnsbvlnosnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9JVFNNQ29uZmlnSXRlbS9MYXlvdXREYXRlLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCZXR3ZWVuJ30gPSAn5pe26Ze05Yy66Ze0JzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xhc3MgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7pobnnmoTnsbvliKvpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGNsYXNzZXMgdG8gcmVzdHJpY3Qgc2VsZWN0YWJsZSBjb25maWcgaXRlbXMnfSA9CiAgICAgICAgJ+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+WNleS4quWFg+e0oOeahOacgOWkp+aVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgU2V0IGR5bmFtaWMgZmllbGQgZWxlbWVudCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYXhpbXVtIG51bWJlciBvZiBvbmUgZWxlbWVudCB3aXRoaW4gYSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcnfSA9ICfniYjmnKzlrZfnrKbkuLInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FkbWluRHluYW1pY0ZpZWxkLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFcnJvciBzeW5jaHJvbml6aW5nIHRoZSBkZWZpbml0aW9ucy4gUGxlYXNlIGNoZWNrIHRoZSBsb2cuJ30gPSAn5ZCM5q2l5a6a5LmJ5pe25Ye66ZSZ44CC6K+35p+l55yL5pel5b+X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBoYXZlIElUU01Db25maWdJdGVtIGRlZmluaXRpb25zIHdoaWNoIGFyZSBub3Qgc3luY2hyb25pemVkLiBQbGVhc2UgZGVwbG95IHlvdXIgSVRTTUNvbmZpZ0l0ZW0gZHluYW1pYyBmaWVsZCBjaGFuZ2VzLid9ID0KICAgICAgICAn5oKo55qEIElUU01Db25maWdJdGVtIOWumuS5ieacquWQjOatpeOAguivt+mDqOe9suaCqOeahCBJVFNNQ29uZmlnSXRlbSDliqjmgIHlrZfmrrXmm7TmlLnjgIInOwoKICAgICMgRGF0YWJhc2UgWE1MIC8gU09QTSBEZWZpbml0aW9uOiBJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQuc29wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJlZCd9ID0gJ+W3sui/h+acnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYWludGVuYW5jZSd9ID0gJ+e7tOaKpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaWxvdCd9ID0gJ+ivlemqjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQbGFubmVkJ30gPSAn5bey6K6h5YiSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcGFpcid9ID0gJ+S/ruWkjSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXRpcmVkJ30gPSAn5oql5bqfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Jldmlldyd9ID0gJ+WkjeWuoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUZXN0L1FBJ30gPSAn5rWL6K+VL+WTgei0qOS/neivgSc7CgogICAgIyBKUyBGaWxlOiBJVFNNLkFkbWluLklUU01Db25maWdJdGVtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJ30gPSAn5qaC6L+w5ZKM56Gu6K6kJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcyd9ID0gJ+WvvOWFpeexuy/op5LoibLlj4rlhbbnm7jlhbPlrZfmrrUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nfSA9ICfnsbvlr7zlhaXml7blj5HnlJ/plJnor6/jgIInOwoKICAgICMgU3lzQ29uZmlnCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycwIC0gSGlkZGVuJ30gPSAnMCAtIOmakOiXjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxIC0gU2hvd24nfSA9ICcxIC0g5pi+56S6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0EgbWFwcGluZyBvZiBpbm5lciBmaWVsZCBuYW1lcyB1c2VkIGluIHRoZSBQcm9jZXNzIE1hbmFnZW1lbnQgVHJhbnNpdGlvbkFjdGlvbnMgQ29uZmlnSXRlbUFkZCBhbmQgLVVwZGF0ZS4gVGhlIGtleXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgc2V0IGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgdGlja2V0IHdoaWNoIHdpbGwgYmUgdXNlZCB0byBjcmVhdGUvdXBkYXRlIHRoZSBDSSwgYW5kIHRoZSB2YWx1ZXMgYXJlIHRoZSBuYW1lcyBvZiB0aGUgaW5uZXIgZmllbGRzIG9mIHRoZSBzZXQgd2l0aCBvYmplY3QgdHlwZSBJVFNNQ29uZmlnSXRlbS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICflhYHorrjlnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnmkJzntKLkuK3kvb/nlKjmianlsZXmkJzntKLmnaHku7bjgILliKnnlKjor6Xlip/og73vvIzmgqjlj6/ku6Xkvb/nlKgiKCprZXkxKiYmKmtleTIqKSAi5oiWIigqa2V5MSp8fCprZXkyKikgIuetieadoeS7tuaQnOe0oumFjee9rumhueWQjeensOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbGxvd3MgZXh0ZW5kZWQgc2VhcmNoIGNvbmRpdGlvbnMgaW4gY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFdpdGggdGhpcyBmZWF0dXJlIHlvdSBjYW4gc2VhcmNoIGUuIGcuIGNvbmZpZyBpdGVtIG5hbWUgd2l0aCB0aGlzIGtpbmQgb2YgY29uZGl0aW9ucyBsaWtlICIoKmtleTEqJiYqa2V5MiopIiBvciAiKCprZXkxKnx8KmtleTIqKSIuJ30gPQogICAgICAgICflhYHorrjlnKjlrqLmiLfnlYzpnaLnmoTphY3nva7pobnmkJzntKLkuK3kvb/nlKjmianlsZXmkJzntKLmnaHku7bjgILliKnnlKjor6Xlip/og73vvIzmgqjlj6/ku6Xkvb/nlKgiKCprZXkxKiYmKmtleTIqKSAi5oiWIigqa2V5MSp8fCprZXkyKikgIuetieadoeS7tuaQnOe0oumFjee9rumhueWQjeensOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBc3NpZ25lZCBDSXMnfSA9ICflt7LliIbphY3nmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWRUb0VudGl0eSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdCBhIHNwZWNpZmljIHRpbWUgcG9pbnQgY3JlYXRlIGEgdGlja2V0IGZvciBjb25maWcgaXRlbXMsIGlmIHRoZSBjb25maWd1cmVkIHJlcXVpcmVtZW50cyBhcmUgbWV0LiBUaGUgdGltZSBwb2ludCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgZHluYW1pYyBmaWVsZCBvZiB0eXBlIGRhdGUgY29uZmlndXJlZCB1bmRlciAiVGltZUNJS2V5IiBvZiB0aGUgQ29uZmlnSXRlbSwgYW5kIG1vZGlmaWVkIGJ5ICJUaW1lTW9kaWZpZXIiLiBJZiB0aGUgbGF0dGVyIGNhbiBiZSBlaXRoZXIganVzdCBhIG51bWJlciwgb3IgYSBzaWduICgrLy0pLCBhIG51bWJlciwgYW5kIGFuIHVuaXQgKGQvaC9tKTogIjciIGlzIGVxdWl2YWxlbnQgdG8gIis3ZCIuIFRoZSBEeW5hbWljRmllbGQgIlRpY2tldC0+RHluYW1pY0ZpZWxkIiB3aWxsIGJlIHVzZWQgdG8gbWFyayBjcmVhdGVkIHRpY2tldHMgLSBpdCBoYXMgdG8gZXhpc3QuIFRoZSBmbGFncyBcPE9UT0JPX0NPTkZJR0lURU1fWFw+IHdoZXJlIFggY2FuIGJlIE5BTUUsIE5VTUJFUiBhbmQgREFURSwgd2lsbCBiZSBzdWJzdGl0dXRlZCB3aXRoIHRoZSByZXNwZWN0aXZlIHZhbHVlcyBpbiAiVGlja2V0LT5UZXh0Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGVzIGZvciBsaWNlbnNlIGFjY291bnRpbmcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0F0dHJpYnV0ZXMgZm9yIGxpY2Vuc2VzIGNvdW50aW5nLCB3aGVyZSAiVG90YWxMaWNlbnNlc0RGIiwgIkF2YWlsYWJsZUxpY2Vuc2VzREYiIGFuZCAiTGljZW5zZVJlZmVyZW5jZURGIiBhcmUgdGhlIG5hbWVzIG9mIHRoZSBkeW5hbWljIGZpZWxkcyB1c2VkIHRvIHRyYWNrIHRoZSByZW1haW5pbmcgbGljZW5zZXMuIElmIHVzZWQsIG9ubHkgZGVwbG95bWVudCBzdGF0ZXMgaW4gIlZhbGlkRGVwbFN0YXRlcyIgYXJlIGNvbnNpZGVyZWQuIElmIGEgdGhyZXNob2xkIGlzIGRlZmluZWQgaW4gIk1pbmltdW1MaWNlbnNlcyIsIGEgdGlja2V0IHdpbGwgYXV0b21hdGljYWxseSBiZSBjcmVhdGVkIGlmIGxlc3MgbGljZW5zZXMgYXJlIGF2YWlsYWJsZS4gRm9yIHRoaXMsIHRoZSBjaGVja2JveCBkeW5hbWljIGZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgbXVzdCBleGlzdC4gVGhlIHRhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIsIExJQ0VOU0VTX0FWQUlMIGFuZCBMSUNFTlNFU19NSU4sIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+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+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSB3aGVuIHZpZXdpbmcgdGhlIGNvcnJlc3BvbmRpbmcgUGVybWlzc2lvbiBDb25kaXRpb24gaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDcmVhdGUgYW5kIG1hbmFnZSB0aGUgZGVmaW5pdGlvbnMgZm9yIENvbmZpZ3VyYXRpb24gSXRlbXMuJ30gPSAn5Yib5bu65ZKM566h55CG6YWN572u6aG55a6a5LmJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZXMgVGlja2V0cyBmb3IgQ29uZmlnSXRlbXMgYXQgc3BlY2lmaWMgdGltZSBwb2ludHMuJ30gPSAn5Zyo54m55a6a5pe26Ze054K55Li6IENvbmZpZ0l0ZW1zIOWIm+W7uiBUaWNrZXRz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1c3RvbWVycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJ+WuouaIt+WPr+S7peafpeeci+WOhuWPsiBDSSDniYjmnKzjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGhhdmUgdGhlIHBvc3NpYmlsaXR5IHRvIG1hbnVhbGx5IHN3aXRjaCBiZXR3ZWVuIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0KICAgICAgICAn5a6i5oi35Y+v5Lul5omL5Yqo5YiH5o2i5Y6G5Y+yIENJIOeJiOacrOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7Ii4nfSA9CiAgICAgICAgJ+WcqOmFjee9rumhueaQnOe0ouWxj+W5leeahOWxnuaAp+S4iuS9v+eUqOeahOm7mOiupOaVsOaNruOAguS+i+Wmgu+8miJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludEZvcm1hdD15ZWFyO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50U3RhcnQ9TGFzdDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludD0yOyLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmYXVsdCBkYXRhIHRvIHVzZSBvbiBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNlYXJjaCBzY3JlZW4uIEV4YW1wbGU6ICJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyIuJ30gPQogICAgICAgICflnKjphY3nva7pobnmkJzntKLlsY/luZXnmoTlsZ7mgKfkuIrkvb/nlKjnmoTpu5jorqTmlbDmja7jgILkvovlpoLvvJoiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnRNb250aD0xMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydERheT00O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BZZWFyPTIwMTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcE1vbnRoPTExO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BEYXk9Mzsi44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBBY3Rpb25zIHdoZXJlIGEgc2V0dGluZ3MgYnV0dG9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgbGlua2VkIG9iamVjdHMgd2lkZ2V0IChMaW5rT2JqZWN0OjpWaWV3TW9kZSA9ICJjb21wbGV4IikuIFBsZWFzZSBub3RlIHRoYXQgdGhlc2UgQWN0aW9ucyBtdXN0IGhhdmUgcmVnaXN0ZXJlZCB0aGUgZm9sbG93aW5nIEpTIGFuZCBDU1MgZmlsZXM6IENvcmUuQWxsb2NhdGlvbkxpc3QuY3NzLCBDb3JlLlVJLkFsbG9jYXRpb25MaXN0LmpzLCBDb3JlLlVJLlRhYmxlLlNvcnQuanMsIENvcmUuQWdlbnQuVGFibGVGaWx0ZXJzLmpzIGFuZCBDb3JlLkFnZW50LkxpbmtPYmplY3QuanMuJ30gPQogICAgICAgICflrprkuYnpk77mjqXlr7nosaHlsI/pg6jku7YoTGlua09iamVjdDo6Vmlld01vZGUgPSBcImNvbXBsZXhcIinorr7nva7mjInpkq7kuK3nmoTmk43kvZzjgILor7fms6jmhI/vvIzov5nkupvmk43kvZzlv4Xpobvlt7Lnu4/lnKjku6XkuItKU+WSjENTU+aWh+S7tuS4reazqOWGjO+8mkNvcmUuQWxsb2NhdGlvbkxpc3QuY3Nz44CBQ29yZS5VSS5BbGxvY2F0aW9uTGlzdC5qc+OAgSBDb3JlLlVJLlRhYmxlLlNvcnQuanPjgIFDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qc+WSjENvcmUuQWdlbnQuTGlua09iamVjdC5qc+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBUZW1wbGF0ZTo6VG9vbGtpdCBzY2hlbWUgZm9yIHZlcnNpb24gc3RyaW5ncy4gT25seSB1c2VkIGlmIFZlcnNpb24gU3RyaW5nIE1vZHVsZSBpcyBzZXQgdG8gVGVtcGxhdGVUb29sa2l0Lid9ID0KICAgICAgICAn5Li654mI5pys5a2X56ym5Liy5a6a5LmJ5LiA5LiqIFRlbXBsYXRlOjpUb29sa2l0IOaWueahiOOAguS7heWcqOeJiOacrOWtl+espuS4suaooeWdl+iuvue9ruS4uiBUZW1wbGF0ZVRvb2xraXQg5pe25L2/55So44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIHNldCBvZiBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGEgY29uZmlnIGl0ZW0gY2FuIGJlIHB1YmxpY2x5IHNlZW4uIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjdXN0b21lciBpcyBhbGxvd2VkIHRvIHNlZSBhIGNvbmZpZyBpdGVtLiBDb25kaXRpb25zIGNhbiBvcHRpb25hbGx5IGJlIHJlc3RyaWN0ZWQgdG8gY2VydGFpbiBjdXN0b21lciBncm91cHMuIE5hbWUgaXMgdGhlIG9ubHkgbWFuZGF0b3J5IGF0dHJpYnV0ZS4gSWYgbm8gb3RoZXIgb3B0aW9ucyBhcmUgZ2l2ZW4sIGFsbCBjb25maWcgaXRlbXMgd2lsbCBiZSB2aXNpYmxlIHVuZGVyIHRoYXQgY2F0ZWdvcnkuJ30gPQogICAgICAgICflrprkuYnkuIDnu4TlhYHorrjlrqLmiLfmn6XnnIvphY3nva7pobnnmoTmnaHku7bjgILlj6/pgInmi6nlsIbmnaHku7bpmZDliLbkuLrmn5DkupvlrqLmiLfnu4TjgILlkI3np7DmmK/llK/kuIDnmoTlvLrliLblsZ7mgKfjgILlpoLmnpzmsqHmnInnu5nlh7rlhbbku5bpgInpobnvvIzliJnor6XnsbvliKvkuIvnmoTmiYDmnInphY3nva7pobnpg73lsIblj6/op4HjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBkZWxldGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+WIoOmZpElUU03phY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBnZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+iOt+WPlklUU03phY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+aQnOe0oklUU03phY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+iuvue9riBJVFNNIOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGFuIG92ZXJ2aWV3IG1vZHVsZSB0byBzaG93IHRoZSBzbWFsbCB2aWV3IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGxpc3QuJ30gPQogICAgICAgICflrprkuYnmmL7npLrphY3nva7pobnliJfooajnroDmtIHop4blm77nmoTmpoLop4jmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBpZiB0aGUgbGluayB0eXBlIGxhYmVscyBtdXN0IGJlIHNob3duIGluIHRoZSBub2RlIGNvbm5lY3Rpb25zLid9ID0KICAgICAgICAn5a6a5LmJ5piv5ZCm5b+F6aG75Zyo6IqC54K56L+e5o6l5Lit5pi+56S66ZO+5o6l57G75Z6L5qCH562+44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgcmVndWxhciBleHByZXNzaW9ucyBpbmRpdmlkdWFsbHkgZm9yIGVhY2ggQ29uZmlnSXRlbSBjbGFzcyB0byBjaGVjayB0aGUgQ29uZmlnSXRlbSBuYW1lIGFuZCB0byBzaG93IGNvcnJlc3BvbmRpbmcgZXJyb3IgbWVzc2FnZXMuJ30gPQogICAgICAgICfkuLrmr4/kuKrphY3nva7pobnnsbvlrprkuYnni6znq4vnmoTmraPliJnooajovr7lvI/vvIzku6Xmo4Dmn6XphY3nva7pobnlkI3np7DlubbmmL7npLrnm7jlupTnmoTplJnor6/mtojmga/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+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5a6i5oi355WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit55qE6buY6K6k6YWN572u6aG56aG65bqP44CC5LiK77ya5pyA5pen55qE5Zyo5pyA5YmN6Z2i44CC5LiL77ya5pyA5paw55qE5Zyo5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIHRoaXMgb3BlcmF0aW9uLiBVcDogb2xkZXN0IG9uIHRvcC4gRG93bjogbGF0ZXN0IG9uIHRvcC4nfSA9CiAgICAgICAgJ+WumuS5ieatpOaTjeS9nOeahOmFjee9rumhueaQnOe0oue7k+aenOS4reeahOm7mOiupOmFjee9rumhuemhuuW6j+OAguS4iu+8muacgOaXp+eahOWcqOacgOWJjemdouOAguS4i++8muacgOaWsOeahOWcqOS4iuOAgic7CiAgICAkU2VsZi0+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/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICflrprkuYnlhbPogZTnmoTpg6jnvbLnirbmgIHvvIzljbPpk77mjqXnmoTlt6XljZXlj6/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/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAn5ZCv55SoL+emgeeUqOajgOafpSBJVFNNIOmFjee9rumhueaYr+WQpuWFt+acieWUr+S4gOWQjeensOeahOWKn+iDveOAguWQr+eUqOatpOmAiemhueWJje+8jOW6lOajgOafpeezu+e7n+S4reaYr+WQpuWtmOWcqOWQjeensOmHjeWkjeeahOmFjee9rumhueOAguaCqOWPr+S7peS9v+eUqOaOp+WItuWPsOWRveS7pCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMg6L+b6KGM5qOA5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ+WcqOW3peWNlS3phY3nva7pobnnmoTpk77mjqXkuK3orr7nva7phY3nva7pobkt54q25oCB55qE5LqL5Lu25qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBvZiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGluZGV4LCB1c2VkIGZvciB0aGUgZnVsbHRleHQgc2VhcmNoLiBGaWVsZHMgYXJlIGFsc28gc3RvcmVkLCBidXQgYXJlIG5vdCBtYW5kYXRvcnkgZm9yIHRoZSBvdmVyYWxsIGZ1bmN0aW9uYWxpdHkuIEluY2x1c2lvbiBvZiBhdHRhY2htZW50cyBjYW4gYmUgZGlzYWJsZWQgYnkgc2V0dGluZyB0aGUgZW50cnkgdG8gMCBvciBkZWxldGluZyBpdC4nfSA9CiAgICAgICAgJ+mFjee9rumhuee0ouW8leWtl+aute+8jOeUqOS6juWFqOaWh+aQnOe0ouOAguWtl+auteS5n+S8muiiq+WtmOWCqO+8jOS9huWvueS6juaVtOS9k+WKn+iDveadpeivtOW5tumdnuW/hemhu+OAguWPr+mAmui/h+Wwhuadoeebruiuvue9ruS4uiAwIOaIluWIoOmZpOadpeemgeeUqOmZhOS7tueahOWMheWQq+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWVsZHMgc3RvcmVkIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXggd2hpY2ggYXJlIHVzZWQgZm9yIG90aGVyIHRoaW5ncyBiZXNpZGVzIGZ1bGx0ZXh0IHNlYXJjaGVzLiBGb3IgdGhlIGNvbXBsZXRlIGZ1bmN0aW9uYWxpdHkgYWxsIGZpZWxkcyBhcmUgbWFuZGF0b3J5Lid9ID0KICAgICAgICAn5a2Y5YKo5Zyo6YWN572u6aG557Si5byV5Lit55qE5a2X5q6177yM6Zmk55So5LqO5YWo5paH5qOA57Si5aSW77yM6L+Y5Y+v55So5LqO5YW25LuW55So6YCU44CC5Li65LqG5a6e546w5a6M5pW055qE5Yqf6IO977yM5omA5pyJ5a2X5q616YO95piv5b+F5aGr5a2X5q6144CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZvciBldmVyeSB3ZWJzZXJ2aWNlIChrZXkpIGFuIGFycmF5IG9mIGNsYXNzZXMgKHZhbHVlKSBjYW4gYmUgZGVmaW5lZCBvbiB3aGljaCB0aGUgaW1wb3J0IGlzIHJlc3RyaWN0ZWQuIEZvciBhbGwgY2hvc2VuIGNsYXNzZXMsIG9yIGFsbCBleGlzdGluZyBjbGFzc2VzIHRoZSBpZGVudGlmeWluZyBhdHRyaWJ1dGVzIHdpbGwgaGF2ZSB0byBiZSBjaG9zZW4gaW4gdGhlIGludm9rZXIgY29uZmlnLid9ID0KICAgICAgICAn5Y+v5Lul5Li65q+P5LiqIHdlYnNlcnZpY2XvvIjplK7vvInlrprkuYnkuIDkuKrnsbvvvIjlgLzvvInmlbDnu4TvvIzlnKjmraTln7rnoYDkuIrpmZDliLblr7zlhaXjgILlr7nkuo7miYDmnInpgInlrprnmoTnsbvmiJbmiYDmnInnjrDmnInnmoTnsbvvvIzlv4XpobvlnKjosIPnlKjogIXphY3nva7kuK3pgInmi6nor4bliKvlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUNyZWF0ZSBpbnZva2VyIGxheWVyLid9ID0KICAgICAgICAn55So5LqOIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlsYLnmoQgR2VuZXJpY0ludGVyZmFjZSDmqKHlnZfms6jlhozjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJpY0ludGVyZmFjZSBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgQ29uZmlnSXRlbUZldGNoIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfnlKjkuo4gQ29uZmlnSXRlbUZldGNoIOiwg+eUqOWxgueahCBHZW5lcmljSW50ZXJmYWNlIOaooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtVXBkYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfnlKjkuo4gQ29uZmlnSXRlbUZldGNoIOiwg+eUqOWxgueahCBHZW5lcmljSW50ZXJmYWNlIOaooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIENvbmZpZ0l0ZW0nfSA9ICdJVFNNIOmFjee9rumhueebric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJVFNNIGNvbmZpZyBpdGVtIG92ZXJ2aWV3Lid9ID0gJ0lUU03phY3nva7pobnmpoLop4jjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAn54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfkuovku7bnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdoueahOmFjee9rumhueaQnOe0ouS4reWMheWQq+mDqOe9sueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLnmoTphY3nva7pobnnm67mkJzntKLkuK3ljIXlkKvkuovku7bnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn5Zyo5q2k5pON5L2c57uT5p6c5Lit5pi+56S655qE6YWN572u6aG555qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn55So5LqO5qOA5p+l6YWN572u6aG557G755qE57uE5p2D6ZmQ55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn55So5LqO5qOA5p+l6YWN572u6aG555qE57uE5p2D6ZmQ55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn55So5LqO55Sf5oiQSVRTTemFjee9rumhuee7n+iuoeeahOaooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIE1vZHVsZSd9ID0gJ+WQjeensOaooeWdlyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgTW9kdWxlJ30gPSAn57yW5Y+35qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouaQnOe0oue7k+aenOeahOavj+S4gOmhteS4reaYvuekuueahOmFjee9rumhueaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgYSBzZWFyY2ggcmVzdWx0IGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrqLmiLfnlYzpnaLmkJzntKLnu5Pmnpzmr4/pobXmmL7npLrnmoTphY3nva7pobnmlbDph4/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09iamVjdHMgdG8gc2VhcmNoIGZvciwgaG93IG1hbnkgZW50cmllcyBhbmQgd2hpY2ggYXR0cmlidXRzIHRvIHNob3cuIENvbmZpZ0l0ZW0gYXR0cmlidXRlcyBoYXZlIHRvIGV4cGxpY2l0bHkgYmUgc3RvcmVkIHZpYSBFbGFzdGljc2VhcmNoLid9ID0KICAgICAgICAn6KaB5pCc57Si55qE5a+56LGh44CB5p2h55uu5pWw6YeP5Lul5Y+K6KaB5pi+56S655qE5bGe5oCn44CC6YWN572u6aG55bGe5oCn5b+F6aG76YCa6L+HIEVsYXN0aWNzZWFyY2gg5piO56Gu5a2Y5YKo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3Lid9ID0gJ+amguiniOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgY2F0ZWdvcmllcyBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G75Yir55qE5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjb2x1bW4gZmlsdGVycyBvZiB0aGUgc21hbGwgY29uZmlnIGl0ZW0gb3ZlcnZpZXcuIFBsZWFzZSBub3RlOiBzZXR0aW5nIFwnQWN0aXZlXCcgdG8gMCB3aWxsIG9ubHkgcHJldmVudCBhZ2VudHMgZnJvbSBlZGl0aW5nIHNldHRpbmdzIG9mIHRoaXMgZ3JvdXAgaW4gdGhlaXIgcGVyc29uYWwgcHJlZmVyZW5jZXMsIGJ1dCB3aWxsIHN0aWxsIGFsbG93IGFkbWluaXN0cmF0b3JzIHRvIGVkaXQgdGhlIHNldHRpbmdzIG9mIGFub3RoZXIgdXNlclwncyBiZWhhbGYuIFVzZSBcJ1ByZWZlcmVuY2VHcm91cFwnIHRvIGNvbnRyb2wgaW4gd2hpY2ggYXJlYSB0aGVzZSBzZXR0aW5ncyBzaG91bGQgYmUgc2hvd24gaW4gdGhlIHVzZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5bCP6YWN572u6aG555uu5qaC6KeI55qE5YiX6L+H5ruk5Zmo5Y+C5pWw44CC6K+35rOo5oSP77ya5bCGICJBY3RpdmXvvIjmtLvliqjvvIki6K6+572u5Li6IDAg5Y+q5Lya6Zi75q2i5Luj55CG5Zyo5YW25Liq5Lq65YGP5aW96K6+572u5Lit57yW6L6R6K+l57uE55qE6K6+572u77yM5L2G5LuN5YWB6K64566h55CG5ZGY57yW6L6R5YW25LuW55So5oi355qE6K6+572u44CC5L2/55SoICJQcmVmZXJlbmNlR3JvdXDvvIjlgY/lpb3nu4TvvIki5Y+v5o6n5Yi26L+Z5Lqb6K6+572u5bqU5pi+56S65Zyo55So5oi355WM6Z2i55qE5ZOq5Liq5Yy65Z+f44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93IGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHNob3duIGJ5IGRlZmF1bHQuICJHcm91cCIgaXMgdXNlZCB0byByZXN0cmljdCB0aGUgYWNjZXNzIHRvIHRoZSBwbHVnaW4gKGUuIGcuIEdyb3VwOiBhZG1pbjtncm91cDE7Z3JvdXAyOykuICJEZWZhdWx0IiBkZXRlcm1pbmVzIGlmIHRoZSBwbHVnaW4gaXMgZW5hYmxlZCBieSBkZWZhdWx0IG9yIGlmIHRoZSB1c2VyIG5lZWRzIHRvIGVuYWJsZSBpdCBtYW51YWxseS4gIkNhY2hlVFRMTG9jYWwiIGlzIHRoZSBjYWNoZSB0aW1lIGluIG1pbnV0ZXMgZm9yIHRoZSBwbHVnaW4uICJDb25maWdJdGVtS2V5IiBpcyB0byBzcGVjaWZ5IHdoaWNoIGN1c3RvbWVyIGNvbXBhbnkgcmVmZXJlbmNlIGR5bmFtaWMgZmllbGQgaXMgdXNlZCB0byBmaWx0ZXIgZm9yIHRoZSBzZWxlY3RlZCBjdXN0b21lciBjb21wYW55LiAiU2hvd25DbGFzc2VzIiBpcyBhIGxpc3QgdG8gb3B0aW9uYWxseSByZXN0cmljdCBjbGFzc2VzIG9mIHRoZSBzaG93biBjb25maWcgaXRlbXMuIExlYXZpbmcgdGhpcyBsaXN0IGVtcHR5IGRlZmF1bHRzIHRvIGFsbCBjbGFzc2VzIHdoaWNoIG1hdGNoIHRoZSBjdXN0b21lciBjb21wYW55IGluIHRoZSBkeW5hbWljIGZpZWxkIGNvbmZpZ3VyZWQgaW4gIkNvbmZpZ0l0ZW1LZXkiLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBkYXNoYm9hcmQgYmFja2VuZCBvZiB0aGUgY3VzdG9tZXIgY29tcGFueSBjb25maWcgaXRlbSBvdmVydmlldyBzaG93biBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLiAiTGltaXQiIGlzIHRoZSBudW1iZXIgb2YgZW50cmllcyBwZXIgY29uZmlnIGl0ZW0gY2xhc3Mgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgdXNlciByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIHVzZXIuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIHVzZXIgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGNvbG9yIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlgY/lpb3orr7nva7op4blm77kuK3nlKjkuo7pg6jnvbLnirbmgIHpopzoibLnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLlgY/lpb3orr7nva7op4blm77kuK3nlKjkuo7pg6jnvbLnirbmgIHnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGV4YW1wbGUgcGVybWlzc2lvbiBncm91cHMgb2YgdGhlIGdlbmVyYWwgY2F0YWxvZyBhdHRyaWJ1dGVzLid9ID0KICAgICAgICAn55uu5b2V5bGe5oCn5qC35L6LLeadg+mZkOe7hOeahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbmFtZSBtb2R1bGUgZm9yIGNvbmZpZyBpdGVtIGNsYXNzZXMgaW4gdGhlIHByZWZlcmVuY2VzIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+S7o+eQhueVjOmdoummlumAiemhueinhuWbvuS4remFjee9rumhueexu+WQjeensOaooeWdl+eahOWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgbnVtYmVyIG1vZHVsZSBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G75Yir55qE57yW5Y+35qih5Z2X5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBwYWdlcyAoaW4gd2hpY2ggdGhlIGNvbmZpZ3VyYXRpb24gaXRlbXMgYXJlIHNob3duKS4nfSA9CiAgICAgICAgJ+aYvuekuumFjee9rumhueeahOmhtemdouWPguaVsOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJhbWV0ZXJzIGZvciB0aGUgdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvnmoTniYjmnKzlrZfnrKbkuLLmqKHlnZflj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gc3RyaW5nIHRlbXBsYXRlIHRvb2xraXQgbW9kdWxlIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfnlKjkuo7ku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvnmoTniYjmnKzlrZfnrKbkuLLmqKHmnb/lt6XlhbfljIXmqKHlnZflj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIHZlcnNpb24gdHJpZ2dlciBmb3IgY29uZmlnIGl0ZW0gY2xhc3NlcyBpbiB0aGUgcHJlZmVyZW5jZXMgdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Luj55CG55WM6Z2i6aaW6YCJ6aG56KeG5Zu+5Lit6YWN572u6aG557G755qE54mI5pys6Kem5Y+R5Zmo5Y+C5pWw44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BlcmZvcm1zIHRoZSBjb25maWd1cmVkIGFjdGlvbiBmb3IgZWFjaCBldmVudCAoYXMgYW4gSW52b2tlcikgZm9yIGVhY2ggY29uZmlndXJlZCBXZWJzZXJ2aWNlLid9ID0KICAgICAgICAn5Li65q+P5Liq6YWN572u55qEV0VC5pyN5Yqh55qE5q+P5Liq5LqL5Lu25omn6KGM6YWN572u5aW955qE5pON5L2c77yI5Lul6LCD55So56iL5bqP6KeS6Imy77yJ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Blcm1pc3Npb24gR3JvdXAnfSA9ICfmnYPpmZDnu4QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUHVibGljIHVzZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBoYXZlIHRoZSBwb3NzaWJpbGl0eSB0byBtYW51YWxseSBzd2l0Y2ggYmV0d2VlbiBoaXN0b3JpYyBDSSB2ZXJzaW9ucy4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIElUU00gY29uZmlndXJhdGlvbiBpdGVtIGF0dGFjaG1lbnQgYWN0aW9uIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKggSVRTTSDphY3nva7pobnnm67pmYTku7bmk43kvZzmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKhJVFNN6YWN572u6aG55pCc57Si56qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2VhcmNoIHNjcmVlbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5a6i5oi355WM6Z2i5L2/55SoIElUU00g6YWN572u6aG555uu5pCc57Si5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gdHJlZSB2aWV3IHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu5qCR6KeG5Zu+5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnor6bmg4Xnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBhZGQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKjmt7vliqBJVFNN6YWN572u6aG556qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqOaJuemHjyBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfmnI3liqHkurrlkZjnlYzpnaLkvb/nlKjnvJbovpFJVFNN6YWN572u6aG556qX5Y+j6ZyA6KaB55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgaGlzdG9yeSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnljoblj7Lnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBwcmludCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+acjeWKoeS6uuWRmOeVjOmdouS9v+eUqElUU03phY3nva7pobnmiZPljbDnqpflj6PpnIDopoHnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ+WIoOmZpOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ+aQnOe0oumFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn5b2T5LiA5Liq5bel5Y2V6ZO+5o6l5Yiw5LiA5Liq6YWN572u6aG55pe26Ieq5Yqo6K6+572u6L+Z5Liq6YWN572u6aG555qE5pWF6Zqc54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGRlcGxveW1lbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG55om56YeP5pON5L2c56qX5Y+j6K6+572u6YOo572y54q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NldHMgdGhlIGluY2lkZW50IHN0YXRlIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gYnVsayBzY3JlZW4gb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueaJuemHj+aTjeS9nOeql+WPo+iuvue9ruS6i+S7tueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdGhhdCBhbGxvd3MgbGlua2luZyBhIGNvbmZpZ3VyYXRpb24gaXRlbSB3aXRoIGFub3RoZXIgb2JqZWN0IGluIHRoZSBjb25maWcgaXRlbSB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quWFgeiuuOmTvuaOpemFjee9rumhueWIsOWPpuS4gOWvueixoeeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueamguiniOinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quWFgeiuuOiuv+mXrumFjee9rumhueWOhuWPsueahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gYWNjZXNzIHRoZSBoaXN0b3J5IG9mIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlhYHorrjorr/pl67phY3nva7pobnljoblj7LnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRlbGV0ZSBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrliKDpmaTphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGRpc3BsYXkgdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBsaW5rcyBhcyBhIFRyZWUgVmlldy4nfSA9CiAgICAgICAgJ+WcqOiPnOWNleS4reaYvuekuuS4gOS4qumTvuaOpe+8jOS7peagkeW9ouinhuWbvuaYvuekuumFjee9rumhuemTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gb3ZlcnZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueamguiniOinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4quWkjeWItumFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZHVwbGljYXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLphY3nva7pobnor6bmg4Xop4blm77kuK3vvIzlnKjoj5zljZXkuK3mmL7npLrkuIDkuKrlpI3liLbphY3nva7pobnnmoTpk77mjqXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIGVkaXQgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOacjeWKoeS6uuWRmOeVjOmdoumFjee9rumhueivpuaDheinhuWbvuS4re+8jOWcqOiPnOWNleS4reaYvuekuuS4gOS4que8lui+kemFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZ28gYmFjayBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6L+U5Zue6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBwcmludCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG56K+m5oOF6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5omT5Y2w6YWN572u6aG555qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byB6b29tIGludG8gYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5pyN5Yqh5Lq65ZGY55WM6Z2i6YWN572u6aG55qaC6KeI6KeG5Zu+5Lit77yM5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq5p+l55yL6YWN572u6aG56K+m5oOF55qE6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIHRoZSBjb25maWcgaXRlbSBoaXN0b3J5IChyZXZlcnNlIG9yZGVyZWQpIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjmnI3liqHkurrlkZjnlYzpnaLmmL7npLrphY3nva7pobnljoblj7LvvIjlgJLluo/vvInjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGRlZmF1bHQgY2F0ZWdvcnkgd2hpY2ggaXMgc2hvd24sIGlmIG5vbmUgaXMgc2VsZWN0ZWQuJ30gPSAn5aaC5p6c5pyq6YCJ5oup5Lu75L2V57G75Yir77yM5YiZ5pi+56S66buY6K6k57G75Yir44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBpZGVudGlmaWVyIGZvciBhIGNvbmZpZ3VyYXRpb24gaXRlbSwgZS5nLiBDb25maWdJdGVtIywgTXlDb25maWdJdGVtIy4gVGhlIGRlZmF1bHQgaXMgQ29uZmlnSXRlbSMuJ30gPQogICAgICAgICfphY3nva7pobnmoIfor4bnrKbvvIzlpoJDb25maWdJdGVtI+OAgU15Q29uZmlnSXRlbSPvvIzpu5jorqTmmK9Db25maWdJdGVtI+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugb3ZlcnZpZXcuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RpdGxlIGZvciB0aGUgcHVibGljIGludGVyZmFjZSBzZWFyY2guJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RyaWdnZXJzIENvbmZpZ0l0ZW1GZXRjaCBpbnZva2VyIGF1dG9tYXRpY2FsbHkuJ30gPSAn6Ieq5Yqo6Kem5Y+RIENvbmZpZ0l0ZW1GZXRjaCDosIPnlKjlmajjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgRXhwcmVzc2lvbid9ID0gJ+eJiOacrOWtl+espuS4suihqOi+vuW8jyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyBNb2R1bGUnfSA9ICfniYjmnKzlrZfnrKbkuLLmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBUcmlnZ2VyJ30gPSAn54mI5pys6Kem5Y+R5ZmoJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgZmllbGRzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGZpbGxlZCAoMSksIGFuZCBpbiB0aGF0IGNhc2UgYWxzbyBiZSBoaWRkZW4gZnJvbSB0aWNrZXQgZm9ybXVsYXJzICgyKS4nfSA9CiAgICAgICAgJ+Wtl+auteaYr+WQpuiHquWKqOWhq+WFhSgxKe+8jCDpgqPnp43mg4XlhrXkuIvlsIbkvJrlnKjlt6XljZXooajkuK3pmpDol4/otbfmnaUoMinjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn5piv5ZCm5Y+v5Lul6YCa6L+H5qOA5p+l57yT5a2Y55qE5a2X5q615L6d6LWW5YWz57O75p2l6YG/5YWN5omn6KGMIENvbmZpZ0l0ZW1BQ0zjgILov5nlj6/ku6XnvKnnn63ooajmoLznmoTliqDovb3ml7bpl7TvvIzkvYblpoLmnpzopoHlnKggSVRTTUNvbmZpZ0l0ZW0g5ZKMIEZvcm0tUmV0dXJuVHlwZSDkuK3kvb/nlKggQUNMIOaooeWdl++8jOWImeW/hemhu+emgeeUqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn5qCH6aKY5Lit5pi+56S65LqG5ZOq5Lqb5LiA6Iis5L+h5oGv44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn57G7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ+WFqOWxgCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ+mXsue9ric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn5YeG5aSH5oqV5LqnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfmipXkuqcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFXvvJoxNy41IOiLseWvuO+8iDQ0LjQ1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJV77yaMjEg6Iux5a+477yINTMuMzQg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVXvvJoyNi4yNSDoi7Hlr7jvvIg2Ni42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThV77yaMzEuNSDoi7Hlr7jvvIg4MC4wMSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkg6Iux5a+45py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVe+8mjEuNzUg6Iux5a+477yINC40NSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBV77yaMzUg6Iux5a+477yIODguOSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEg6Iux5a+45pSv5p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVe+8mjM4LjUg6Iux5a+477yIOTcuNzkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzIOiLseWvuOacuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjYg6Iux5a+477yINjAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0Ve+8mjQyIOiLseWvuO+8iDEwNi42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1XvvJo0Ny4yNSDoi7Hlr7jvvIgxMjAuMDIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJV77yaMy41IOiLseWvuO+8iDguODkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFXvvJo1Mi41IOiLseWvuO+8iDEzMy4zNSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMS41IOiLseWvuO+8iDgwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1XvvJo1Ny43NSDoi7Hlr7jvvIgxNDYuNjgg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNCDoi7Hlr7jvvIg5MDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZV77yaNjMg6Iux5a+477yIMTYwLjAyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS40IOiLseWvuO+8iDEwMDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlV77yaNjguMjUg6Iux5a+477yIMTczLjM1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNV77yaNS4yNSDoi7Hlr7jvvIgxMy4zNCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVe+8mjczLjUg6Iux5a+477yIMTg2LjY5IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuMyDoi7Hlr7jvvIgxMTAwIOavq+exs++8ie+8mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1Ve+8mjc4Ljc1IOiLseWvuO+8iDIwMC4wMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMiDoi7Hlr7jvvIgxMjAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4Ve+8mjg0IOiLseWvuO+8iDIxMy4zNiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0Ve+8mjcg6Iux5a+477yIMTcuNzgg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVXvvJo4Ljc1IOiLseWvuO+8iDIyLjIzIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZV77yaMTAuNSDoi7Hlr7jvvIgyNi42NyDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1XvvJoxMi4yNSDoi7Hlr7jvvIgzMS4xMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFXvvJoxNCDoi7Hlr7jvvIgzNS41NiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVXvvJoxNS43NSDoi7Hlr7jvvIg0MC4wMSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfkvJrorqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICflnLDlnYDliIbphY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ+euoeeQhuWRmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfmqKHmi5/nlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICforr7lpIfnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfnlLXmsaDlrrnph4/vvIjlronml7bvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn55S15rGg57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn5aSn5Y6mJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfmgLvnur/mjqXlj6MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUg562J57qnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICflrrnph4/vvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ+avj+S4quWbvuW9ouWNoeeahOWuuemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ+WNoeWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ+ivu+WNoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfljaHniYfnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ+WuouaIt+ivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICflrqLmiLfnq6/ova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn5a6i5oi357G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ+aXtumSn+mikeeOhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn5pe26ZKf6YCf5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfku6PnoIHnrb7lkI3or4HkuaYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ+S8muiurueUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ+WSqOivouWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn6IGU57O75pa55byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfogZTns7vnu4/plIDllYYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfpm4boo4XnrrHnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICflkIjlkIwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ+WQiOWQjOexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ+WQiOWQjOacn+S7jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICflkIjlkIzmnJ/oh7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn5peg57uz55S16K+d77yIREVDVCDnlLXor53vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn5oiQ5pys5Y2V5L2NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn6K645Y+v6K+B5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfliJvlu7rml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ+WumuWItuacuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDkv53nlZknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUyDmnI3liqHlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ+WPkeelqOaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn6K6i6LSt5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfmjojmnYPml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn5Y+R5biD5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICflj7DlvI/nlLXohJEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+aWh+S7tuetvuWQjeivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kg5py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfnlLXlrZDpgq7ku7bor4HkuabvvIhTL01JTUUg6K+B5Lmm77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ+mbh+S9o+WQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ+e7iOerryBJUCDlnLDlnYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfmlK/mjIHnu5PmnZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfmnInmlYjmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ+Wklue9ruehrOebmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ+mYsueBq+WimSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ+WbuuS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ+mjnui9ruWCqOiDvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ+WkluW9ouWwuuWvuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn54m56K6457uP6JCl5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn5YWN6LS56L2v5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ+S4gOiIrOS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ+WbvuW9ouWNoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAn5Zu+5b2i5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn56Gs5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn56Gs5Lu25Z6L5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ+ehrOS7tumHjemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAn6ICz5py6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAg5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ+i6q+S7veWSjOiuv+mXrueuoeeQhu+8iElBTe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAn5bqT5a2Y57yW5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAn6L2s5o2i5oiQ5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn5Y+R56Wo5Y+356CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn6ZSu55uYJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCDmmL7npLrlmajvvIjmtrLmmbbmmL7npLrlmajvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCDmmL7npLrlmajvvIjlj5HlhYnkuozmnoHnrqHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn5Zu65a6a55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ+eslOiusOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ+e6rOW6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ+esrCAxIOWxgu+8mueJqeeQhuWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfnrKwgMiDlsYLvvJrmlbDmja7pk77ot6/lsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ+esrCAzIOWxgu+8mue9kee7nOWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfnrKwgMyDlsYLvvJrnvZHnu5zlsYLvvIjotoXnuqfnvZHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn56ysIDQg5bGC77ya5Lyg6L6T5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfnrKwgNSDlsYLvvJrkvJror53lsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAn56ysIDYg5bGC77ya5pi+56S65bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn56ysIDcg5bGC77ya5bqU55So5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ+enn+i1geWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ+iuuOWPr+WNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAn6K645Y+v6K+B5a+G6ZKlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ+iuuOWPr+ivgeexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn6K645Y+v6K+B5pyJ5pWI5pyf5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAn6K645Y+v6K+B5pyJ5pWI5pyf6IezJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfno7fphbjpk4HplILvvIhMaUZlUE8077yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfplILnprvlrZDvvIhMaS1Jb27vvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICfotLfmrL7ljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ+S9jeS6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfnu4/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICfliLbpgKDllYYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ+acgOWkp+i0n+i9veiDveWKm++8iOeTpu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICflhoXlrZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICflhoXlrZjnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ+i/t+S9oOacuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn5omL5py65Y+356CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ+enu+WKqC/ltYzlhaXlvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICflnovlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICflnovlj7for7TmmI4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn5pi+56S65Zmo5YiG6L6o546HJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ+aYvuekuuWZqOWwuuWvuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ+m8oOaghyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn572R57ucJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ+e9kee7nOS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn572R57uc5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfnvZHnu5zlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfplY3plYnvvIhOaUNk77yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAn6ZWN5rCi77yITmlNSO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfkv53lr4bljY/orq7vvIhOREHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfnrJTorrDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdDUFUg5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ+WGheWtmOaooeWdl+aVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICflm77lvaLljaHmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQg5pi+56S65Zmo77yI5pyJ5py65Y+R5YWJ5LqM5p6B566h77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ+i/kOiQpeaIkOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICforqLljZXlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICflhbblroMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ+i+k+WHuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICflr4bnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICflr4bnoIEgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICflkIjkvJnljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICfnlLXor53lj7fnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ+eUteivneexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ+eJqeeQhuejgeiKryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ+eUteWKm+i+k+mAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ+WcqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn5py65p625rex5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn5py65p625Y2V5YWDIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn5oi/6Ze0JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIOWNoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMg6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAn6ZSA5ZSu5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ+WNq+aYn+eUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICflr4blsIHpk4XphbggKFNMQSkg55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn5bqP5YiX5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ+acjeWKoeWZqOi9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ+acjeWKoeWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ+acjeWKoeagh+etvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfmj5LluqfnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICflj5HoqIDkuronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn5qCH5YeGJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICflkK/liqggSVAg5Zyw5Z2AJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICflrZjlgqgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICflrZjlgqjliIbljLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfpmYTlsZ7mnLrmnoQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ+aRmOimgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ+eYpuWuouaIt+acuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn57q/56iLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn6Zu355S1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfmmL7ljaHmgLvlhoXlrZjvvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ+aAu+WGheWtmO+8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfop6bmkbjlsY/mmL7npLrlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICfloZTmpbwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiDpm4bnur/lmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICdWR0EnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAn6Jma5ouf5LiT55So572RJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiDlpLTnm5QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICfomZrmi5/pk77mjqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ+e9kee7nOeUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn572R57uc5pGE5YOP5aS0JzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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+P6aCB6YWN572u6aCF5YCL5pW4JzsKCiAgICAjIFRlbXBsYXRlOiBBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdTbWFsbAogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gY29uZmlnIGl0ZW0gZGF0YSBmb3VuZC4nfSA9ICfmnKrmib7liLDphY3nva7pobnmlbDmja7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfpgInmi6nor6XphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1J1biBTZWFyY2gnfSA9ICfmkJzntKInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/J30gPSAn5ZCM5pmC5pCc57Si5Lul5YmN55qE54mI5pysPyc7CgogICAgIyBUZW1wbGF0ZTogQWdlbnRJVFNNQ29uZmlnSXRlbVRyZWVWaWV3CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmVlVmlldyBmb3IgQ29uZmlnSXRlbSd9ID0gJ+mFjee9rumhueagkeW9ouinhuWbvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZXB0aCBMZXZlbCd9ID0gJ+a3seW6puetiee6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydab29tIEluL091dCd9ID0gJ+aUvuWkpy/nvKnlsI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4IGxpbmtzIGxldmVsIHJlYWNoZWQgZm9yIENvbmZpZ0l0ZW0hJ30gPSAnQ29uZmlnSXRlbSDlt7Lovr7liLDmnIDlpKfpk77mjqXnuqfliKvvvIEnOwoKICAgICMgVGVtcGxhdGU6IEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWd1cmF0aW9uIEl0ZW0nfSA9ICfphY3nva7poIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlndXJhdGlvbiBJdGVtIEluZm9ybWF0aW9uJ30gPSAn6YWN572u6aCF5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZSd9ID0gJ+eVtuWJjeeahOmDqOe9sueLgOaFiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXJyZW50IEluY2lkZW50IFN0YXRlJ30gPSAn55W25YmN55qE5pWF6Zqc54uA5oWLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhc3QgY2hhbmdlZCd9ID0gJ+acgOW+jOS/ruaUuSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXN0IGNoYW5nZWQgYnknfSA9ICfmnIDlvozkv67mlLnmlrwnOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdXIgQ29uZmlnSXRlbXMnfSA9ICfmgqjnmoTphY3nva7pobknOwoKICAgICMgVGVtcGxhdGU6IEN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gU2VhcmNoJ30gPSAn6YWN572u6aG55pCc57SiJzsKCiAgICAjIEpTIFRlbXBsYXRlOiBDbGFzc0ltcG9ydENvbmZpcm0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJ30gPSAn5bCG5a+85YWl5Lul5LiL57G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBmb2xsb3dpbmcgcm9sZXMgd2lsbCBiZSBpbXBvcnRlZCd9ID0gJ+WwhuWvvOWFpeS7peS4i+inkuiJsic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb3RlIHRoYXQgYWxzbyBjb3JyZXNwb25kaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBHZW5lcmFsQ2F0YWxvZyBjbGFzc2VzIHdpbGwgYmUgY3JlYXRlZCBhbmQgdGhlcmUgaXMgbm8gYXV0b21hdGljIHJlbW92YWwuJ30gPQogICAgICAgICfor7fms6jmhI/vvIzkuZ/kvJrliJvlu7rnm7jlupTnmoTliqjmgIHlrZfmrrXlkowgR2VuZXJhbENhdGFsb2cg57G777yM6ICM5LiU5LiN5Lya6Ieq5Yqo5Yig6Zmk44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RvIHlvdSB3YW50IHRvIHByb2NlZWQ/J30gPSAn5L2g5oOz57un57ut5ZCX77yfJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZG1pbklUU01Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZWVkIEV4YW1wbGVDbGFzc2VzISd9ID0gJ+mcgOimgeekuuS+i+exu++8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbml0aW9uIGlzIG5vIHZhbGlkIFlBTUwgaGFzaC4nfSA9ICflrprkuYnmsqHmnInmnInmlYjnmoQgWUFNTCDlk4jluIzlgLzjgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J092ZXJ2aWV3OiBJVFNNIENvbmZpZ0l0ZW0nfSA9ICfmpoLov7DvvJpJVFNNIOmFjee9rumhueebric7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWdlbnRJVFNNQ29uZmlnSXRlbUJ1bGsucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiEnfSA9ICfmnKrnu5nlh7ogQ29uZmlnSXRlbUlE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBuZWVkIGF0IGxlYXN0IG9uZSBzZWxlY3RlZCBDb25maWd1cmF0aW9uIEl0ZW0hJ30gPSAn5oKo6ZyA6KaB6Iez5bCR5LiA5Liq6YCJ5a6a55qE6YWN572u6aG577yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1lvdSBkb25cJ3QgaGF2ZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBjb25maWd1cmF0aW9uIGl0ZW06ICVzLid9ID0KICAgICAgICAn5oKo5rKh5pyJ5YaZ5YWl5q2k6YWN572u6aG555qE5p2D6ZmQ77yaJXMuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGRlZmluaXRpb24gd2FzIGRlZmluZWQgZm9yIGNsYXNzICVzISd9ID0gJ+acquWumuS5iSAlcyDnsbvnmoTlrprkuYnvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1EZWxldGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBpdGVtICIlcyIgbm90IGZvdW5kIGluIGRhdGFiYXNlISd9ID0gJ+aVsOaNruW6k+S4reacquWPkeeOsOmFjee9rumhuSAiJXMi77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1dhcyBub3QgYWJsZSB0byBkZWxldGUgdGhlIGNvbmZpZ2l0ZW0gSUQgJXMhJ30gPSAn5peg5rOV5Yig6Zmk6YWN572u6aG5IElEICVz77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb24gZm91bmQgZm9yIENvbmZpZ0l0ZW1JRCAlcyEnfSA9ICfmt7vliqDphY3nva7pobnnm67jgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDb25maWdJdGVtSUQsIER1cGxpY2F0ZUlEIG9yIENsYXNzSUQgaXMgZ2l2ZW4hJ30gPSAn5pyq57uZ5Ye6IENvbmZpZ0l0ZW1JROOAgUR1cGxpY2F0ZUlEIOaIliBDbGFzc0lE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyBpcyBnaXZlbiEnfSA9ICfmnKrmj5Dkvpvorr/pl67mnYPpmZDvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1IaXN0b3J5LnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJ30gPSAn5peg5rOV5pi+56S65Y6G5Y+y6K6w5b2V77yM5Zug5Li65rKh5pyJ57uZ5Ye6IENvbmZpZ0l0ZW1JRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYW5cJ3Qgc2hvdyBoaXN0b3J5LCBubyBhY2Nlc3MgcmlnaHRzIGdpdmVuISd9ID0gJ+aXoOazleaYvuekuuWOhuWPsuiusOW9le+8jOayoeacieiuv+mXruadg+mZkO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXcgQ29uZmlnSXRlbSAoSUQ9JXMpJ30gPSAn5paw6YWN572u6aG577yISUQ9JXPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmV3IHZlcnNpb24gKElEPSVzKSd9ID0gJ+aWsOeJiOacrO+8iElEPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgdXBkYXRlZCAobmV3PSVzLCBvbGQ9JXMpJ30gPSAn6YOo572y54q25oCB5bey5pu05paw77yI5pawPSVz77yM5penPSVz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50IHN0YXRlIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+S6i+S7tueKtuaAgeW3suabtOaWsO+8iOaWsD0lc++8jOaXpz0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25maWdJdGVtIChJRD0lcykgZGVsZXRlZCd9ID0gJ+mFjee9rumhueebru+8iElEPSVz77yJ5bey5Yig6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpbmsgdG8gJXMgKHR5cGU9JXMpIGFkZGVkJ30gPSAn5bey5re75YqgICVzICh0eXBlPSVzKSDpk77mjqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayB0byAlcyAodHlwZT0lcykgZGVsZXRlZCd9ID0gJ+aMh+WQkSAlcyAodHlwZT0lcykg55qE6ZO+5o6l5bey5Yig6ZmkJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0gZGVmaW5pdGlvbiB1cGRhdGVkIChJRD0lcyknfSA9ICfphY3nva7pobnlrprkuYnlt7Lmm7TmlrDvvIhJRD0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW1lIHVwZGF0ZWQgKG5ldz0lcywgb2xkPSVzKSd9ID0gJ+WQjeensOW3suabtOaWsO+8iOaWsD0lc++8jOaXpz0lc++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBdHRyaWJ1dGUgJXMgdXBkYXRlZCBmcm9tICIlcyIgdG8gIiVzIid9ID0gJ+WxnuaApyAlcyDku44iJXMgIuabtOaWsOS4uiIlcyInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiAlcyBkZWxldGVkJ30gPSAn54mI5pysICVzIOW3suWIoOmZpCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaWxlICIlcyIgdXBsb2FkZWQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsZSAiJXMiIHJlbW92ZWQnfSA9ICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1QcmludC5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm8gQ29uZmlnSXRlbUlEIG9yIFZlcnNpb25JRCBpcyBnaXZlbiEnfSA9ICfmnKrnu5nlh7ogQ29uZmlnSXRlbUlEIOaIliBWZXJzaW9uSUTvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJ30gPSAn5peg5rOV5pi+56S66YWN572u6aG577yM5pyq6LWL5LqI6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJ30gPSAn5pWw5o2u5bqT5Lit5om+5LiN5Yiw6YWN572u6aG555uu57yW5Y+3ICVz77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ0l0ZW0nfSA9ICfphY3nva7poIUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsncHJpbnRlZCBieSAlcyBhdCAlcyd9ID0gJ+eUsSAlcyDlnKggJXMg5omT5Y2wJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlZmVyZW5jZWQgYnknfSA9ICfnm7jpl5zlj4LogIMnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmFsaWQgQ2xhc3NJRCEnfSA9ICfml6DmlYggQ2xhc3NJRO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyBDbGFzc0lEIGlzIGdpdmVuISd9ID0gJ+acque7meWHuiBDbGFzc0lE77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIGFjY2VzcyByaWdodHMgZm9yIHRoaXMgY2xhc3MgZ2l2ZW4hJ30gPSAn6K+l57G75rKh5pyJ6K6/6Zeu5p2D6ZmQ77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIFJlc3VsdCEnfSA9ICfmspLmnInntZDmnpwhJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJ30gPSAn6YWN572u6aCF55uu5pCc5bCL57WQ5p6cJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvTW9kdWxlcy9BZ2VudElUU01Db25maWdJdGVtWm9vbS5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2FuXCd0IHNob3cgaXRlbSwgbm8gYWNjZXNzIHJpZ2h0cyBmb3IgQ29uZmlnSXRlbSBhcmUgZ2l2ZW4hJ30gPQogICAgICAgICfml6Dms5XmmL7npLrpobnnm67vvIzmsqHmnInnu5nlrpogQ29uZmlnSXRlbSDnmoTorr/pl67mnYPpmZDvvIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmlnSXRlbSBub3QgZm91bmQhJ30gPSAn5pyq5om+5Yiw6YWN572u6aG577yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHZlcnNpb25zIGZvdW5kISd9ID0gJ+acquaJvuWIsOS7u+S9leeJiOacrO+8gSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydvcGVyYXRpb25hbCd9ID0gJ+S4muWKoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyd3YXJuaW5nJ30gPSAn6K2m5ZGKJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2luY2lkZW50J30gPSAn5LqL5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RoZSBkZXBsb3ltZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7poIXpg6jnvbLni4DmhYsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7poIXmlYXpmpzni4DmhYsnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9Nb2R1bGVzL0N1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05vIHBlcm1pc3Npb24nfSA9ICfmspLmnInmrIrpmZAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmlsdGVyIGludmFsaWQhJ30gPSAn6L+H5ruk5Zmo5peg5pWI77yBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXJjaCBwYXJhbXMgaW52YWxpZCEnfSA9ICfmkJzntKLlj4LmlbDml6DmlYjvvIEnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9PdXRwdXQvSFRNTC9EYXNoYm9hcmQvSVRTTUNvbmZpZ0l0ZW1HZW5lcmljLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93biBjb25maWcgaXRlbXMnfSA9ICfmmL7npLrnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVwbG95bWVudCBTdGF0ZSBUeXBlJ30gPSAn6YOo572y54uA5oWL6aGe5Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZSd9ID0gJ+eVtuWJjeeahOaVhemanOeLgOaFi+mhnuWeiyc7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL091dHB1dC9IVE1ML0lUU01Db25maWdJdGVtL0xheW91dERhdGUucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0JldHdlZW4nfSA9ICfkuYvpl7QnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vRHluYW1pY0ZpZWxkL0RyaXZlci9Db25maWdJdGVtLnBtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGFzcyByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbSd9ID0gJ+mFjee9rumhueeahOexu+WIq+mZkOWItic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcyd9ID0KICAgICAgICAn6YCJ5oup5LiA5Liq5oiW5aSa5Liq57G75Yir5p2l6ZmQ5Yi25Y+v6YCJ5oup55qE6YWN572u6aG5JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlcGxveW1lbnQgc3RhdGUgcmVzdHJpY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0nfSA9ICfphY3nva7pobnnmoTnsbvliKvpmZDliLYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJ30gPQogICAgICAgICfpgInmi6nkuIDkuKrmiJblpJrkuKrnsbvliKvmnaXpmZDliLblj6/pgInmi6nnmoTphY3nva7pobknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRHluYW1pYyAoQ29uZmlnSXRlbSknfSA9ICfliqjmgIHvvIhDb25maWdJdGVt77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXRpYyAoVmVyc2lvbiknfSA9ICfpnZnmgIHvvIjniYjmnKzvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGluayBSZWZlcmVuY2luZyBUeXBlJ30gPSAn6ZO+5o6l5byV55So57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1doZXRoZXIgdGhpcyBsaW5rIGFwcGxpZXMgdG8gdGhlIENvbmZpZ0l0ZW0gb3IgdGhlIHN0YXRpYyB2ZXJzaW9uIG9mIHRoZSByZWZlcmVuY2luZyBvYmplY3QuIEN1cnJlbnQgSW5jaWRlbnQgU3RhdGUgY2FsY3VsYXRpb24gb25seSBpcyBwZXJmb3JtZWQgb24gZHluYW1pYyBsaW5rcy4nfSA9CiAgICAgICAgJ+atpOmTvuaOpemAgueUqOS6juW8leeUqOWvueixoeeahOmFjee9rumhuei/mOaYr+mdmeaAgeeJiOacrOOAguW9k+WJjeS6i+S7tueKtuaAgeiuoeeul+S7heWcqOWKqOaAgemTvuaOpeS4iuaJp+ihjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWxlY3QgdGhlIGF0dHJpYnV0ZSB3aGljaCBjb25maWcgaXRlbXMgd2lsbCBiZSBzZWFyY2hlZCBieSd9ID0gJ+mAieaLqeaQnOe0oumFjee9rumhueeahOWxnuaApyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHRlcm5hbC1zb3VyY2Uga2V5J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlbGVjdCB0aGUgdHlwZSBvZiBkaXNwbGF5J30gPSAnJzsKCiAgICAjIFBlcmwgTW9kdWxlOiBLZXJuZWwvU3lzdGVtL0R5bmFtaWNGaWVsZC9Ecml2ZXIvQ29uZmlnSXRlbVZlcnNpb24ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjdGl2YXRlIHRoaXMgb3B0aW9uIHRvIGRpc3BsYXkgdmFsdWVzIGFzIGEgdHJlZSwgZ3JvdXBlZCBieSBjb25maWcgaXRlbXMuJ30gPQogICAgICAgICcnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vRGVmaW5pdGlvbi5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmFzZSBzdHJ1Y3R1cmUgaXMgbm90IHZhbGlkLiBQbGVhc2UgcHJvdmlkZSBhIGhhc2ggd2l0aCBkYXRhIGluIFlBTUwgZm9ybWF0Lid9ID0KICAgICAgICAn5Z+656GA57uT5p6E5peg5pWI44CC6K+35o+Q5L6b5YyF5ZCrIFlBTUwg5qC85byP5pWw5o2u55qE5ZOI5biM5YC844CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0aW5nIHRoZSBZQU1MIHN0cmluZyB3aXRoIFwnLS0tXCcgaXMgcmVxdWlyZWQuJ30gPSAn5b+F6aG75LulIi0tLSLlvIDlp4sgWUFNTCDlrZfnrKbkuLLjgIInOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0vTGluay5wbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ291bGQgbm90IHB1cmdlIHRoZSB0YWJsZSBjb25maWdpdGVtX2xpbmsuJ30gPSAn5peg5rOV5riF6Zmk6KGoIGNvbmZpZ2l0ZW1fbGlua+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydObyByZWxldmFudCBkeW5hbWljIGZpZWxkcyB3ZXJlIGZvdW5kJ30gPSAn5pyq5om+5Yiw55u45YWz5Yqo5oCB5a2X5q61JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdWxkIG5vdCBpbnNlcnQgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn5peg5rOV5o+S5YWl6KGoIGNvbmZpZ2l0ZW1fbGluayc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnNlcnRlZCAwIHJvd3MgaW50byB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rJ30gPSAn5ZCR6KGoIGNvbmZpZ2l0ZW1fbGluayDmj5LlhaXkuoYgMCDmnaHorrDlvZUnOwoKICAgICMgUGVybCBNb2R1bGU6IEtlcm5lbC9TeXN0ZW0vSW1wb3J0RXhwb3J0L09iamVjdEJhY2tlbmQvSVRTTUNvbmZpZ0l0ZW0ucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50J30gPSAn5q2k5YWD57Sg55qE5pyA5aSn5pW46YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBTZXQgZHluYW1pYyBmaWVsZCBlbGVtZW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01heGltdW0gbnVtYmVyIG9mIG9uZSBlbGVtZW50IHdpdGhpbiBhIFNldCBkeW5hbWljIGZpZWxkIGVsZW1lbnQnfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWZXJzaW9uIFN0cmluZyd9ID0gJ+eJiOacrOWtl+espuS4sic7CgogICAgIyBQZXJsIE1vZHVsZTogS2VybmVsL01vZHVsZXMvQWRtaW5EeW5hbWljRmllbGQucG0KICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Vycm9yIHN5bmNocm9uaXppbmcgdGhlIGRlZmluaXRpb25zLiBQbGVhc2UgY2hlY2sgdGhlIGxvZy4nfSA9ICflkIzmraXlrprkuYnml7blh7rplJnjgILor7fmn6XnnIvml6Xlv5fjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnWW91IGhhdmUgSVRTTUNvbmZpZ0l0ZW0gZGVmaW5pdGlvbnMgd2hpY2ggYXJlIG5vdCBzeW5jaHJvbml6ZWQuIFBsZWFzZSBkZXBsb3kgeW91ciBJVFNNQ29uZmlnSXRlbSBkeW5hbWljIGZpZWxkIGNoYW5nZXMuJ30gPQogICAgICAgICfmgqjnmoQgSVRTTUNvbmZpZ0l0ZW0g5a6a5LmJ5pyq5ZCM5q2l44CC6K+36YOo572y5oKo55qEIElUU01Db25maWdJdGVtIOWKqOaAgeWtl+auteabtOaUueOAgic7CgogICAgIyBEYXRhYmFzZSBYTUwgLyBTT1BNIERlZmluaXRpb246IElUU01Db25maWd1cmF0aW9uTWFuYWdlbWVudC5zb3BtCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFeHBpcmVkJ30gPSAn5Yiw5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01haW50ZW5hbmNlJ30gPSAn57at6K23JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BpbG90J30gPSAn6Kmm6amXJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BsYW5uZWQnfSA9ICflt7LoqIjlioMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVwYWlyJ30gPSAn5L+u5b6pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JldGlyZWQnfSA9ICfloLHlu6InOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmV2aWV3J30gPSAn6KSH5a+pJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Rlc3QvUUEnfSA9ICfmtYvoqaYvUUEnOwoKICAgICMgSlMgRmlsZTogSVRTTS5BZG1pbi5JVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcgYW5kIENvbmZpcm1hdGlvbid9ID0gJ+amgui/sOWSjOehruiupCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbXBvcnRpbmcgY2xhc3Nlcy9yb2xlcyBhbmQgdGhlaXIgcmVsYXRlZCBmaWVsZHMnfSA9ICflr7zlhaXnsbsv6KeS6Imy5Y+K5YW255u45YWz5a2X5q61JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJ30gPSAn57G75a+85YWl5pe25Y+R55Sf6ZSZ6K+v44CCJzsKCiAgICAjIFN5c0NvbmZpZwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMCAtIEhpZGRlbid9ID0gJzAgLSDpmpDol48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMSAtIFNob3duJ30gPSAnMSAtIOaYvuekuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBIG1hcHBpbmcgb2YgaW5uZXIgZmllbGQgbmFtZXMgdXNlZCBpbiB0aGUgUHJvY2VzcyBNYW5hZ2VtZW50IFRyYW5zaXRpb25BY3Rpb25zIENvbmZpZ0l0ZW1BZGQgYW5kIC1VcGRhdGUuIFRoZSBrZXlzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIHNldCBpbm5lciBmaWVsZHMgb2YgdGhlIHNldCB3aXRoIG9iamVjdCB0eXBlIHRpY2tldCB3aGljaCB3aWxsIGJlIHVzZWQgdG8gY3JlYXRlL3VwZGF0ZSB0aGUgQ0ksIGFuZCB0aGUgdmFsdWVzIGFyZSB0aGUgbmFtZXMgb2YgdGhlIGlubmVyIGZpZWxkcyBvZiB0aGUgc2V0IHdpdGggb2JqZWN0IHR5cGUgSVRTTUNvbmZpZ0l0ZW0uJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn5YWB6K645Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5L2/55So5omp5bGV5pCc57Si5p2h5Lu244CC5Yip55So6K+l5Yqf6IO977yM5oKo5Y+v5Lul5L2/55SoIigqa2V5MSomJiprZXkyKikgIuaIliIoKmtleTEqfHwqa2V5MiopICLnrYnmnaHku7bmkJzntKLphY3nva7pobnlkI3np7DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWxsb3dzIGV4dGVuZGVkIHNlYXJjaCBjb25kaXRpb25zIGluIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLiBXaXRoIHRoaXMgZmVhdHVyZSB5b3UgY2FuIHNlYXJjaCBlLiBnLiBjb25maWcgaXRlbSBuYW1lIHdpdGggdGhpcyBraW5kIG9mIGNvbmRpdGlvbnMgbGlrZSAiKCprZXkxKiYmKmtleTIqKSIgb3IgIigqa2V5MSp8fCprZXkyKikiLid9ID0KICAgICAgICAn5YWB6K645Zyo5a6i5oi355WM6Z2i55qE6YWN572u6aG55pCc57Si5Lit5L2/55So5omp5bGV5pCc57Si5p2h5Lu244CC5Yip55So6K+l5Yqf6IO977yM5oKo5Y+v5Lul5L2/55SoIigqa2V5MSomJiprZXkyKikgIuaIliIoKmtleTEqfHwqa2V5MiopICLnrYnmnaHku7bmkJzntKLphY3nva7pobnlkI3np7DjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXNzaWduZWQgQ0lzJ30gPSAn5YiG6YWN55qEIENJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Fzc2lnbmVkVG9FbnRpdHknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXQgYSBzcGVjaWZpYyB0aW1lIHBvaW50IGNyZWF0ZSBhIHRpY2tldCBmb3IgY29uZmlnIGl0ZW1zLCBpZiB0aGUgY29uZmlndXJlZCByZXF1aXJlbWVudHMgYXJlIG1ldC4gVGhlIHRpbWUgcG9pbnQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIGR5bmFtaWMgZmllbGQgb2YgdHlwZSBkYXRlIGNvbmZpZ3VyZWQgdW5kZXIgIlRpbWVDSUtleSIgb2YgdGhlIENvbmZpZ0l0ZW0sIGFuZCBtb2RpZmllZCBieSAiVGltZU1vZGlmaWVyIi4gSWYgdGhlIGxhdHRlciBjYW4gYmUgZWl0aGVyIGp1c3QgYSBudW1iZXIsIG9yIGEgc2lnbiAoKy8tKSwgYSBudW1iZXIsIGFuZCBhbiB1bml0IChkL2gvbSk6ICI3IiBpcyBlcXVpdmFsZW50IHRvICIrN2QiLiBUaGUgRHluYW1pY0ZpZWxkICJUaWNrZXQtPkR5bmFtaWNGaWVsZCIgd2lsbCBiZSB1c2VkIHRvIG1hcmsgY3JlYXRlZCB0aWNrZXRzIC0gaXQgaGFzIHRvIGV4aXN0LiBUaGUgZmxhZ3MgXDxPVE9CT19DT05GSUdJVEVNX1hcPiB3aGVyZSBYIGNhbiBiZSBOQU1FLCBOVU1CRVIgYW5kIERBVEUsIHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgcmVzcGVjdGl2ZSB2YWx1ZXMgaW4gIlRpY2tldC0+VGV4dCIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXR0cmlidXRlcyBmb3IgbGljZW5zZSBhY2NvdW50aW5nLid9ID0gJyc7CiAgICAkU2VsZi0+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+eydDb25maWd1cmUgdGhlIGNvbHVtbnMgd2hpY2ggYXJlIGF2YWlsYWJsZSBmb3Igdmlld2luZyBQZXJtaXNzaW9uIENvbmRpdGlvbnMgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZSwgd2hlbiB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIGFyZSBub3Qgc3BlY2lmaWNhbGx5IGNvbmZpZ3VyZWQuIFRoaXMgc2V0dGluZyBpcyB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIHRoZSBvdGhlciBQZXJtaXNzaW9uIENvbmRpdGlvbiBDb2x1bW5zIHNldHRpbmdzLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbmZpZ3VyZSB0aGUgY29sdW1ucyB3aGljaCBhcmUgYXZhaWxhYmxlIHdoZW4gdmlld2luZyB0aGUgY29ycmVzcG9uZGluZyBQZXJtaXNzaW9uIENvbmRpdGlvbiBpbiB0aGUgY3VzdG9tZXIgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0ZSBhbmQgbWFuYWdlIHRoZSBkZWZpbml0aW9ucyBmb3IgQ29uZmlndXJhdGlvbiBJdGVtcy4nfSA9ICflibXlu7rlkoznrqHnkIbphY3nva7poIXlrprnvqknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRlcyBUaWNrZXRzIGZvciBDb25maWdJdGVtcyBhdCBzcGVjaWZpYyB0aW1lIHBvaW50cy4nfSA9ICflnKjnibnlrprml7bpl7TngrnkuLogQ29uZmlnSXRlbXMg5Yib5bu6IFRpY2tldHPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3VzdG9tZXJzIGNhbiBzZWUgaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPSAn5a6i5oi35Y+v5Lul5p+l55yL5Y6G5Y+yIENJIOeJiOacrOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b21lcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICflrqLmiLflj6/ku6XmiYvliqjliIfmjaLljoblj7IgQ0kg54mI5pys44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmF1bHQgZGF0YSB0byB1c2Ugb24gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzZWFyY2ggc2NyZWVuLiBFeGFtcGxlOiAiSVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRGb3JtYXQ9eWVhcjtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVQb2ludFN0YXJ0PUxhc3Q7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnQ9MjsiLid9ID0KICAgICAgICAn5Zyo6YWN572u6aG55pCc57Si5bGP5bmV55qE5bGe5oCn5LiK5L2/55So55qE6buY6K6k5pWw5o2u44CC5L6L5aaC77yaIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50Rm9ybWF0PXllYXI7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lUG9pbnRTdGFydD1MYXN0O0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVBvaW50PTI7IuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZhdWx0IGRhdGEgdG8gdXNlIG9uIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc2VhcmNoIHNjcmVlbi4gRXhhbXBsZTogIklUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0WWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0TW9udGg9MTA7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RhcnREYXk9NDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wWWVhcj0yMDEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0b3BNb250aD0xMTtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wRGF5PTM7Ii4nfSA9CiAgICAgICAgJ+WcqOmFjee9rumhueaQnOe0ouWxj+W5leeahOWxnuaAp+S4iuS9v+eUqOeahOm7mOiupOaVsOaNruOAguS+i+Wmgu+8miJJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdGFydE1vbnRoPTEwO0lUU01Db25maWdJdGVtQ3JlYXRlVGltZVN0YXJ0RGF5PTQ7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcFllYXI9MjAxMDtJVFNNQ29uZmlnSXRlbUNyZWF0ZVRpbWVTdG9wTW9udGg9MTE7SVRTTUNvbmZpZ0l0ZW1DcmVhdGVUaW1lU3RvcERheT0zOyLjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIEFjdGlvbnMgd2hlcmUgYSBzZXR0aW5ncyBidXR0b24gaXMgYXZhaWxhYmxlIGluIHRoZSBsaW5rZWQgb2JqZWN0cyB3aWRnZXQgKExpbmtPYmplY3Q6OlZpZXdNb2RlID0gImNvbXBsZXgiKS4gUGxlYXNlIG5vdGUgdGhhdCB0aGVzZSBBY3Rpb25zIG11c3QgaGF2ZSByZWdpc3RlcmVkIHRoZSBmb2xsb3dpbmcgSlMgYW5kIENTUyBmaWxlczogQ29yZS5BbGxvY2F0aW9uTGlzdC5jc3MsIENvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanMsIENvcmUuVUkuVGFibGUuU29ydC5qcywgQ29yZS5BZ2VudC5UYWJsZUZpbHRlcnMuanMgYW5kIENvcmUuQWdlbnQuTGlua09iamVjdC5qcy4nfSA9CiAgICAgICAgJ+WumuS5ieWPr+WcqOmTvuaOpeWvueixoSB3aWRnZXQg5Lit5L2/55So6K6+572u5oyJ6ZKu55qE5pON5L2c77yITGlua09iamVjdDo6Vmlld01vZGUgPSAiY29tcGxleCLvvInjgILor7fms6jmhI/vvIzov5nkupvmk43kvZzlv4Xpobvlt7Lms6jlhozku6XkuIsgSlMg5ZKMIENTUyDmlofku7bvvJpDb3JlLkFsbG9jYXRpb25MaXN0LmNzc+OAgUNvcmUuVUkuQWxsb2NhdGlvbkxpc3QuanPjgIFDb3JlLlVJLlRhYmxlLlNvcnQuanPjgIFDb3JlLkFnZW50LlRhYmxlRmlsdGVycy5qcyDlkowgQ29yZS5BZ2VudC5MaW5rT2JqZWN0Lmpz44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZSBhIFRlbXBsYXRlOjpUb29sa2l0IHNjaGVtZSBmb3IgdmVyc2lvbiBzdHJpbmdzLiBPbmx5IHVzZWQgaWYgVmVyc2lvbiBTdHJpbmcgTW9kdWxlIGlzIHNldCB0byBUZW1wbGF0ZVRvb2xraXQuJ30gPQogICAgICAgICfkuLrniYjmnKzlrZfnrKbkuLLlrprkuYnkuIDkuKogVGVtcGxhdGU6OlRvb2xraXQg5pa55qGI44CC5LuF5Zyo54mI5pys5a2X56ym5Liy5qih5Z2X6K6+572u5Li6IFRlbXBsYXRlVG9vbGtpdCDml7bkvb/nlKjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lIGEgc2V0IG9mIGNvbmRpdGlvbnMgdW5kZXIgd2hpY2ggYSBjb25maWcgaXRlbSBjYW4gYmUgcHVibGljbHkgc2Vlbi4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmUgYSBzZXQgb2YgY29uZGl0aW9ucyB1bmRlciB3aGljaCBhIGN1c3RvbWVyIGlzIGFsbG93ZWQgdG8gc2VlIGEgY29uZmlnIGl0ZW0uIENvbmRpdGlvbnMgY2FuIG9wdGlvbmFsbHkgYmUgcmVzdHJpY3RlZCB0byBjZXJ0YWluIGN1c3RvbWVyIGdyb3Vwcy4gTmFtZSBpcyB0aGUgb25seSBtYW5kYXRvcnkgYXR0cmlidXRlLiBJZiBubyBvdGhlciBvcHRpb25zIGFyZSBnaXZlbiwgYWxsIGNvbmZpZyBpdGVtcyB3aWxsIGJlIHZpc2libGUgdW5kZXIgdGhhdCBjYXRlZ29yeS4nfSA9CiAgICAgICAgJ+WumuS5ieS4gOe7hOWFgeiuuOWuouaIt+afpeeci+mFjee9rumhueeahOadoeS7tuOAguWPr+mAieaLqeWwhuadoeS7tumZkOWItuS4uuafkOS6m+WuouaIt+e7hOOAguWQjeensOaYr+WUr+S4gOeahOW8uuWItuWxnuaAp+OAguWmguaenOayoeaciee7meWHuuWFtuS7lumAiemhue+8jOWImeivpeexu+WIq+S4i+eahOaJgOaciemFjee9rumhuemDveWwhuWPr+ingeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIGRlbGV0ZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j5Yig6ZmkIElUU00g6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gZ2V0IElUU00gY29uZmlndXJhdGlvbiBpdGVtcyB1c2luZyB0aGUgR2VuZXJpYyBJbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnkvb/nlKjpgJrnlKjmjqXlj6Pojrflj5YgSVRTTSDphY3nva7pobnmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyBSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byBzZWFyY2ggSVRTTSBjb25maWd1cmF0aW9uIGl0ZW1zIHVzaW5nIHRoZSBHZW5lcmljIEludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieS9v+eUqOmAmueUqOaOpeWPo+aQnOe0oiBJVFNNIOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIFJlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHNldCBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbXMgdXNpbmcgdGhlIEdlbmVyaWMgSW50ZXJmYWNlLid9ID0KICAgICAgICAn5a6a5LmJ5L2/55So6YCa55So5o6l5Y+j6K6+572uIElUU00g6YWN572u6aG55omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgYW4gb3ZlcnZpZXcgbW9kdWxlIHRvIHNob3cgdGhlIHNtYWxsIHZpZXcgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gbGlzdC4nfSA9CiAgICAgICAgJ+WumuS5ieS4gOS4quamguiniOaooeWdl++8jOeUqOS6juaYvuekuumFjee9rumhueebruWIl+ihqOeahOWwj+inhuWbvuOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIGlmIHRoZSBsaW5rIHR5cGUgbGFiZWxzIG11c3QgYmUgc2hvd24gaW4gdGhlIG5vZGUgY29ubmVjdGlvbnMuJ30gPQogICAgICAgICflrprkuYnmmK/lkKblv4XpobvlnKjoioLngrnov57mjqXkuK3mmL7npLrpk77mjqXnsbvlnovmoIfnrb7jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyByZWd1bGFyIGV4cHJlc3Npb25zIGluZGl2aWR1YWxseSBmb3IgZWFjaCBDb25maWdJdGVtIGNsYXNzIHRvIGNoZWNrIHRoZSBDb25maWdJdGVtIG5hbWUgYW5kIHRvIHNob3cgY29ycmVzcG9uZGluZyBlcnJvciBtZXNzYWdlcy4nfSA9CiAgICAgICAgJ+S4uuavj+S4qiBDb25maWdJdGVtIOexu+WNleeLrOWumuS5ieato+WImeihqOi+vuW8j++8jOS7peajgOafpSBDb25maWdJdGVtIOWQjeensOW5tuaYvuekuuebuOW6lOeahOmUmeivr+S/oeaBr+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBhdmFpbGFibGUgY29sdW1ucyBvZiBDSXMgaW4gdGhlIGNvbmZpZyBpdGVtIG92ZXJ2aWV3IGRlcGVuZGluZyBvbiB0aGUgQ0kgY2xhc3MuIEVhY2ggZW50cnkgbXVzdCBjb25zaXN0IG9mIGEgY2xhc3MgbmFtZSBhbmQgYW4gYXJyYXkgb2YgYXZhaWxhYmxlIGZpZWxkcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgY2xhc3MuIER5bmFtaWMgZmllbGQgZW50cmllcyBoYXZlIHRvIGhvbm9yIHRoZSBzY2hlbWUgRHluYW1pY0ZpZWxkX0ZpZWxkTmFtZS4nfSA9CiAgICAgICAgJ+agueaNriBDSSDnsbvliKvlrprkuYnphY3nva7pobnmpoLop4jkuK0gQ0kg55qE5Y+v55So5YiX44CC5q+P5Liq5p2h55uu5b+F6aG75YyF5ZCr5LiA5Liq57G75ZCN5ZKM55u45bqU57G755qE5Y+v55So5a2X5q615pWw57uE44CC5Yqo5oCB5a2X5q615p2h55uu5b+F6aG76YG15a6IIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUg5pa55qGI44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGZvciBjb25maWcgaXRlbSBzb3J0aW5nIG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflrprkuYnku6PnkIbnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3phY3nva7pobnmjpLluo/nmoTpu5jorqTphY3nva7pobnlsZ7mgKfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBhdHRyaWJ1dGUgZm9yIGNvbmZpZyBpdGVtIHNvcnRpbmcgb2YgdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WumuS5ieWuouaIt+eVjOmdoumFjee9rumhueaQnOe0oue7k+aenOS4remFjee9rumhueaOkuW6j+eahOm7mOiupOmFjee9rumhueWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSBmb3IgY29uZmlnIGl0ZW0gc29ydGluZyBvZiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGlzIG9wZXJhdGlvbi4nfSA9CiAgICAgICAgJ+WumuS5ieatpOaTjeS9nOeahOmFjee9rumhueaQnOe0oue7k+aenOeahOmFjee9rumhueaOkuW6j+m7mOiupOmFjee9rumhueWxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEZWZpbmVzIHRoZSBkZWZhdWx0IGNvbmZpZyBpdGVtIG9yZGVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcmVzdWx0IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5Luj55CG55WM6Z2i6YWN572u6aG55pCc57Si57uT5p6c5Lit55qE6buY6K6k6YWN572u6aG56aG65bqP44CC5LiK77ya5pyA5pen55qE5Zyo5pyA5YmN6Z2i44CC5LiL77ya5pyA5paw55qE5Zyo5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgY29uZmlnIGl0ZW0gb3JkZXIgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCByZXN1bHQgb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICflrprkuYnlrqLmiLfnlYzpnaLphY3nva7pobnmkJzntKLnu5PmnpzkuK3nmoTpu5jorqTphY3nva7pobnpobrluo/jgILkuIrvvJrmnIDml6fnmoTlnKjmnIDliY3pnaLjgILkuIvvvJrmnIDmlrDnmoTlnKjkuIrjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4gVXA6IG9sZGVzdCBvbiB0b3AuIERvd246IGxhdGVzdCBvbiB0b3AuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgZGVmYXVsdCBjb25maWcgaXRlbSBvcmRlciBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIHJlc3VsdCBvZiB0aGUgdGhpcyBvcGVyYXRpb24uIFVwOiBvbGRlc3Qgb24gdG9wLiBEb3duOiBsYXRlc3Qgb24gdG9wLid9ID0KICAgICAgICAn5a6a5LmJ5q2k5pON5L2c55qE6YWN572u6aG55pCc57Si57uT5p6c5Lit55qE6buY6K6k6YWN572u6aG56aG65bqP44CC5LiK77ya5pyA5pen55qE5Zyo5pyA5YmN6Z2i44CC5LiL77ya5pyA5paw55qE5Zyo5LiK44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RlZmluZXMgdGhlIGRlZmF1bHQgZGlzcGxheWVkIGNvbHVtbnMgb2YgQ0lzIGluIHRoZSBjb25maWcgaXRlbSBvdmVydmlldyBkZXBlbmRpbmcgb24gdGhlIENJIGNsYXNzLiBFYWNoIGVudHJ5IG11c3QgY29uc2lzdCBvZiBhIGNsYXNzIG5hbWUgYW5kIGFuIGFycmF5IG9mIGF2YWlsYWJsZSBmaWVsZHMgZm9yIHRoZSBjb3JyZXNwb25kaW5nIGNsYXNzLiBEeW5hbWljIGZpZWxkIGVudHJpZXMgaGF2ZSB0byBob25vciB0aGUgc2NoZW1lIER5bmFtaWNGaWVsZF9GaWVsZE5hbWUuJ30gPQogICAgICAgICfmoLnmja4gQ0kg57G75a6a5LmJ6YWN572u6aG55qaC6KeI5Lit6buY6K6k5pi+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/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGVmaW5lcyB0aGUgcmVsZXZhbnQgZGVwbG95bWVudCBzdGF0ZXMgd2hlcmUgbGlua2VkIHRpY2tldHMgY2FuIGFmZmVjdCB0aGUgc3RhdHVzIG9mIGEgQ0kuJ30gPQogICAgICAgICflrprkuYnnm7jlhbPpg6jnvbLnirbmgIHvvIzlhbbkuK3pk77mjqXnmoTnpajljZXlj6/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/og73jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5hYmxlcy9kaXNhYmxlcyB0aGUgZnVuY3Rpb25hbGl0eSB0byBjaGVjayBJVFNNIG9uZmlndXJhdGlvbiBpdGVtcyBmb3IgdW5pcXVlIG5hbWVzLiBCZWZvcmUgZW5hYmxpbmcgdGhpcyBvcHRpb24geW91IHNob3VsZCBjaGVjayB5b3VyIHN5c3RlbSBmb3IgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMgd2l0aCBkdXBsaWNhdGUgbmFtZXMuIFlvdSBjYW4gZG8gdGhpcyB3aXRoIHRoZSBjb25zb2xlIGNvbW1hbmQgQWRtaW46OklUU006OkNvbmZpZ0l0ZW06Okxpc3REdXBsaWNhdGVzLid9ID0KICAgICAgICAn5ZCv55SoL+emgeeUqOajgOafpSBJVFNNIOmFjee9rumhueaYr+WQpuWFt+acieWUr+S4gOWQjeensOeahOWKn+iDveOAguWQr+eUqOatpOmAiemhueWJje+8jOW6lOajgOafpeezu+e7n+S4reaYr+WQpuWtmOWcqOWQjeensOmHjeWkjeeahOmFjee9rumhueOAguaCqOWPr+S7peS9v+eUqOaOp+WItuWPsOWRveS7pCBBZG1pbjo6SVRTTTo6Q29uZmlnSXRlbTo6TGlzdER1cGxpY2F0ZXMg6L+b6KGM5qOA5p+l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0V2ZW50IG1vZHVsZSB0byBzZXQgY29uZmlnaXRlbS1zdGF0dXMgb24gdGlja2V0LWNvbmZpZ2l0ZW0tbGluay4nfSA9CiAgICAgICAgJ+WcqCB0aWNrZXQtY29uZmlnaXRlbS1saW5rIOS4iuiuvue9riBjb25maWdpdGVtLXN0YXR1cyDnmoTkuovku7bmqKHlnZfjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRmllbGRzIG9mIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gaW5kZXgsIHVzZWQgZm9yIHRoZSBmdWxsdGV4dCBzZWFyY2guIEZpZWxkcyBhcmUgYWxzbyBzdG9yZWQsIGJ1dCBhcmUgbm90IG1hbmRhdG9yeSBmb3IgdGhlIG92ZXJhbGwgZnVuY3Rpb25hbGl0eS4gSW5jbHVzaW9uIG9mIGF0dGFjaG1lbnRzIGNhbiBiZSBkaXNhYmxlZCBieSBzZXR0aW5nIHRoZSBlbnRyeSB0byAwIG9yIGRlbGV0aW5nIGl0Lid9ID0KICAgICAgICAn6YWN572u6aG557Si5byV5a2X5q6177yM55So5LqO5YWo5paH5pCc57Si44CC5a2X5q615Lmf5Lya6KKr5a2Y5YKo77yM5L2G5a+55LqO5pW05L2T5Yqf6IO95p2l6K+05bm26Z2e5b+F6aG744CC5Y+v6YCa6L+H5bCG5p2h55uu6K6+572u5Li6IDAg5oiW5Yig6Zmk5p2l56aB55So6ZmE5Lu255qE5YyF5ZCr44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZpZWxkcyBzdG9yZWQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBpbmRleCB3aGljaCBhcmUgdXNlZCBmb3Igb3RoZXIgdGhpbmdzIGJlc2lkZXMgZnVsbHRleHQgc2VhcmNoZXMuIEZvciB0aGUgY29tcGxldGUgZnVuY3Rpb25hbGl0eSBhbGwgZmllbGRzIGFyZSBtYW5kYXRvcnkuJ30gPQogICAgICAgICflrZjlgqjlnKjphY3nva7pobnntKLlvJXkuK3nmoTlrZfmrrXvvIzpmaTnlKjkuo7lhajmlofmo4DntKLlpJbvvIzov5jlj6/nlKjkuo7lhbbku5bnlKjpgJTjgILkuLrkuoblrp7njrDlrozmlbTnmoTlip/og73vvIzmiYDmnInlrZfmrrXpg73mmK/lv4XloavlrZfmrrXjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRm9yIGV2ZXJ5IHdlYnNlcnZpY2UgKGtleSkgYW4gYXJyYXkgb2YgY2xhc3NlcyAodmFsdWUpIGNhbiBiZSBkZWZpbmVkIG9uIHdoaWNoIHRoZSBpbXBvcnQgaXMgcmVzdHJpY3RlZC4gRm9yIGFsbCBjaG9zZW4gY2xhc3Nlcywgb3IgYWxsIGV4aXN0aW5nIGNsYXNzZXMgdGhlIGlkZW50aWZ5aW5nIGF0dHJpYnV0ZXMgd2lsbCBoYXZlIHRvIGJlIGNob3NlbiBpbiB0aGUgaW52b2tlciBjb25maWcuJ30gPQogICAgICAgICflj6/ku6XkuLrmr4/kuKogd2Vic2VydmljZe+8iOmUru+8ieWumuS5ieS4gOS4quexu++8iOWAvO+8ieaVsOe7hO+8jOWcqOatpOWfuuehgOS4iumZkOWItuWvvOWFpeOAguWvueS6juaJgOaciemAieWumueahOexu+aIluaJgOacieeOsOacieeahOexu++8jOW/hemhu+WcqOiwg+eUqOiAhemFjee9ruS4remAieaLqeivhuWIq+WxnuaAp+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtQ3JlYXRlIGludm9rZXIgbGF5ZXIuJ30gPQogICAgICAgICfnlKjkuo4gQ29uZmlnSXRlbUZldGNoIOiwg+eUqOWxgueahCBHZW5lcmljSW50ZXJmYWNlIOaooeWdl+azqOWGjOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHZW5lcmljSW50ZXJmYWNlIG1vZHVsZSByZWdpc3RyYXRpb24gZm9yIHRoZSBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dlbmVyaWNJbnRlcmZhY2UgbW9kdWxlIHJlZ2lzdHJhdGlvbiBmb3IgdGhlIENvbmZpZ0l0ZW1VcGRhdGUgaW52b2tlciBsYXllci4nfSA9CiAgICAgICAgJ+eUqOS6jiBDb25maWdJdGVtRmV0Y2gg6LCD55So5bGC55qEIEdlbmVyaWNJbnRlcmZhY2Ug5qih5Z2X5rOo5YaM44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gQ29uZmlnSXRlbSd9ID0gJ0lUU00g6YWN572u6aG555uuJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lUU00gY29uZmlnIGl0ZW0gb3ZlcnZpZXcuJ30gPSAnSVRTTSDphY3nva7pobnnm67mpoLop4jjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jaVN0YXRlJ30gPSAn54q25oCBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2lkZW50U3RhdGUnfSA9ICfkuovku7bnirbmgIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgY2xhc3NlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGRlcGxveW1lbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOWuouaIt+eVjOmdoueahOmFjee9rumhueaQnOe0ouS4reWMheWQq+mDqOe9sueKtuaAgeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyBkZXBsb3ltZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLid9ID0KICAgICAgICAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0luY2x1ZGVzIGluY2lkZW50IHN0YXRlcyBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoIG9mIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLnmoTphY3nva7pobnnm67mkJzntKLkuK3ljIXlkKvkuovku7bnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgaW5jaWRlbnQgc3RhdGVzIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnSW5jbHVkZXMgdGhlIG5hbWUgaW4gdGhlIGNvbmZpZyBpdGVtIHNlYXJjaCBvZiB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbmNsdWRlcyB0aGUgbnVtYmVyIGluIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGljZW5zZSBhY2NvdW50aW5nIGNvbmZpZ3VyYXRpb24gaXRlbSBldmVudCBtb2R1bGUuJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xvYWRlciBtb2R1bGUgcmVnaXN0cmF0aW9uIGZvciB0aGUgcHVibGljIGludGVyZmFjZS4nfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBudW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgb3BlcmF0aW9uLid9ID0KICAgICAgICAn5Zyo5q2k5pON5L2c57uT5p6c5Lit5pi+56S655qE6YWN572u6aG555qE5pyA5aSn5pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY2xhc3MuJ30gPSAn5qOA5p+l6LSf6LSj54+t57qn55qE5bCP57uE55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBjaGVjayB0aGUgZ3JvdXAgcmVzcG9uc2libGUgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLid9ID0KICAgICAgICAn5qih5Z2X77yM55So5LqO5qOA5p+l6LSf6LSj6YWN572u6aG555qE57uE44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vZHVsZSB0byBnZW5lcmF0ZSBJVFNNIGNvbmZpZyBpdGVtIHN0YXRpc3RpY3MuJ30gPSAn55Sf5oiQIElUU00g6YWN572u6aG557uf6K6h5pWw5o2u55qE5qih5Z2X44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05hbWUgTW9kdWxlJ30gPSAn5ZCN56ew5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBNb2R1bGUnfSA9ICfnvJblj7fmqKHlnZcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIGNvbmZpZyBpdGVtcyB0byBiZSBkaXNwbGF5ZWQgaW4gZWFjaCBwYWdlIG9mIGEgc2VhcmNoIHJlc3VsdCBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5pCc57Si57uT5p6c55qE5q+P5LiA6aG15Lit5pi+56S655qE6YWN572u6aG55pWw6YeP44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBjb25maWcgaXRlbXMgdG8gYmUgZGlzcGxheWVkIGluIGVhY2ggcGFnZSBvZiBhIHNlYXJjaCByZXN1bHQgaW4gdGhlIGN1c3RvbWVyIGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WuouaIt+eVjOmdouaQnOe0oue7k+aenOavj+mhteaYvuekuueahOmFjee9rumhueaVsOmHj+OAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgY29uZmlnIGl0ZW1zIHRvIGJlIGRpc3BsYXllZCBpbiBlYWNoIHBhZ2Ugb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT2JqZWN0cyB0byBzZWFyY2ggZm9yLCBob3cgbWFueSBlbnRyaWVzIGFuZCB3aGljaCBhdHRyaWJ1dHMgdG8gc2hvdy4gQ29uZmlnSXRlbSBhdHRyaWJ1dGVzIGhhdmUgdG8gZXhwbGljaXRseSBiZSBzdG9yZWQgdmlhIEVsYXN0aWNzZWFyY2guJ30gPQogICAgICAgICfopoHmkJzntKLnmoTlr7nosaHjgIHmnaHnm67mlbDph4/ku6Xlj4ropoHmmL7npLrnmoTlsZ7mgKfjgILphY3nva7pobnlsZ7mgKflv4XpobvpgJrov4cgRWxhc3RpY3NlYXJjaCDmmI7noa7lrZjlgqjjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3ZlcnZpZXcuJ30gPSAn5qaC5rOBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1BhcmFtZXRlcnMgZm9yIHRoZSBjYXRlZ29yaWVzIGZvciBjb25maWcgaXRlbSBjbGFzc2VzIGluIHRoZSBwcmVmZXJlbmNlcyB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfku6PnkIbnlYzpnaLpppbpgInpobnop4blm77kuK3phY3nva7pobnnsbvliKvnmoTlj4LmlbDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGNvbHVtbiBmaWx0ZXJzIG9mIHRoZSBzbWFsbCBjb25maWcgaXRlbSBvdmVydmlldy4gUGxlYXNlIG5vdGU6IHNldHRpbmcgXCdBY3RpdmVcJyB0byAwIHdpbGwgb25seSBwcmV2ZW50IGFnZW50cyBmcm9tIGVkaXRpbmcgc2V0dGluZ3Mgb2YgdGhpcyBncm91cCBpbiB0aGVpciBwZXJzb25hbCBwcmVmZXJlbmNlcywgYnV0IHdpbGwgc3RpbGwgYWxsb3cgYWRtaW5pc3RyYXRvcnMgdG8gZWRpdCB0aGUgc2V0dGluZ3Mgb2YgYW5vdGhlciB1c2VyXCdzIGJlaGFsZi4gVXNlIFwnUHJlZmVyZW5jZUdyb3VwXCcgdG8gY29udHJvbCBpbiB3aGljaCBhcmVhIHRoZXNlIHNldHRpbmdzIHNob3VsZCBiZSBzaG93biBpbiB0aGUgdXNlciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflsI/phY3nva7pobnnm67mpoLop4jnmoTliJfov4fmu6Tlmajlj4LmlbDjgILor7fms6jmhI/vvJrlsIYgIkFjdGl2Ze+8iOa0u+WKqO+8iSLorr7nva7kuLogMCDlj6rkvJrpmLvmraLku6PnkIblnKjlhbbkuKrkurrlgY/lpb3orr7nva7kuK3nvJbovpHor6Xnu4TnmoTorr7nva7vvIzkvYbku43lhYHorrjnrqHnkIblkZjnvJbovpHlhbbku5bnlKjmiLfnmoTorr7nva7jgILkvb/nlKggIlByZWZlcmVuY2VHcm91cO+8iOWBj+Wlvee7hO+8iSLlj6/mjqfliLbov5nkupvorr7nva7lupTmmL7npLrlnKjnlKjmiLfnlYzpnaLnmoTlk6rkuKrljLrln5/jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3cgaW4gdGhlIGFnZW50IGludGVyZmFjZS4gIkxpbWl0IiBpcyB0aGUgbnVtYmVyIG9mIGVudHJpZXMgc2hvd24gYnkgZGVmYXVsdC4gIkdyb3VwIiBpcyB1c2VkIHRvIHJlc3RyaWN0IHRoZSBhY2Nlc3MgdG8gdGhlIHBsdWdpbiAoZS4gZy4gR3JvdXA6IGFkbWluO2dyb3VwMTtncm91cDI7KS4gIkRlZmF1bHQiIGRldGVybWluZXMgaWYgdGhlIHBsdWdpbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3IgaWYgdGhlIHVzZXIgbmVlZHMgdG8gZW5hYmxlIGl0IG1hbnVhbGx5LiAiQ2FjaGVUVExMb2NhbCIgaXMgdGhlIGNhY2hlIHRpbWUgaW4gbWludXRlcyBmb3IgdGhlIHBsdWdpbi4gIkNvbmZpZ0l0ZW1LZXkiIGlzIHRvIHNwZWNpZnkgd2hpY2ggY3VzdG9tZXIgY29tcGFueSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZCBpcyB1c2VkIHRvIGZpbHRlciBmb3IgdGhlIHNlbGVjdGVkIGN1c3RvbWVyIGNvbXBhbnkuICJTaG93bkNsYXNzZXMiIGlzIGEgbGlzdCB0byBvcHRpb25hbGx5IHJlc3RyaWN0IGNsYXNzZXMgb2YgdGhlIHNob3duIGNvbmZpZyBpdGVtcy4gTGVhdmluZyB0aGlzIGxpc3QgZW1wdHkgZGVmYXVsdHMgdG8gYWxsIGNsYXNzZXMgd2hpY2ggbWF0Y2ggdGhlIGN1c3RvbWVyIGNvbXBhbnkgaW4gdGhlIGR5bmFtaWMgZmllbGQgY29uZmlndXJlZCBpbiAiQ29uZmlnSXRlbUtleSIuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGFyYW1ldGVycyBmb3IgdGhlIGRhc2hib2FyZCBiYWNrZW5kIG9mIHRoZSBjdXN0b21lciBjb21wYW55IGNvbmZpZyBpdGVtIG92ZXJ2aWV3IHNob3duIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuICJMaW1pdCIgaXMgdGhlIG51bWJlciBvZiBlbnRyaWVzIHBlciBjb25maWcgaXRlbSBjbGFzcyBzaG93biBieSBkZWZhdWx0LiAiR3JvdXAiIGlzIHVzZWQgdG8gcmVzdHJpY3QgdGhlIGFjY2VzcyB0byB0aGUgcGx1Z2luIChlLiBnLiBHcm91cDogYWRtaW47Z3JvdXAxO2dyb3VwMjspLiAiRGVmYXVsdCIgZGV0ZXJtaW5lcyBpZiB0aGUgcGx1Z2luIGlzIGVuYWJsZWQgYnkgZGVmYXVsdCBvciBpZiB0aGUgdXNlciBuZWVkcyB0byBlbmFibGUgaXQgbWFudWFsbHkuICJDYWNoZVRUTExvY2FsIiBpcyB0aGUgY2FjaGUgdGltZSBpbiBtaW51dGVzIGZvciB0aGUgcGx1Z2luLiAiQ29uZmlnSXRlbUtleSIgaXMgdG8gc3BlY2lmeSB3aGljaCBjdXN0b21lciB1c2VyIHJlZmVyZW5jZSBkeW5hbWljIGZpZWxkIGlzIHVzZWQgdG8gZmlsdGVyIGZvciB0aGUgc2VsZWN0ZWQgY3VzdG9tZXIgdXNlci4gIlNob3duQ2xhc3NlcyIgaXMgYSBsaXN0IHRvIG9wdGlvbmFsbHkgcmVzdHJpY3QgY2xhc3NlcyBvZiB0aGUgc2hvd24gY29uZmlnIGl0ZW1zLiBMZWF2aW5nIHRoaXMgbGlzdCBlbXB0eSBkZWZhdWx0cyB0byBhbGwgY2xhc3NlcyB3aGljaCBtYXRjaCB0aGUgY3VzdG9tZXIgdXNlciBpbiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWd1cmVkIGluICJDb25maWdJdGVtS2V5Ii4nfSA9CiAgICAgICAgJyc7CiAgICAkU2VsZi0+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+eydQZXJmb3JtcyB0aGUgY29uZmlndXJlZCBhY3Rpb24gZm9yIGVhY2ggZXZlbnQgKGFzIGFuIEludm9rZXIpIGZvciBlYWNoIGNvbmZpZ3VyZWQgV2Vic2VydmljZS4nfSA9CiAgICAgICAgJ+S4uuavj+S4qumFjee9rueahCBXZWJzZXJ2aWNlIOeahOavj+S4quS6i+S7tu+8iOS9nOS4uuiwg+eUqOiAhe+8ieaJp+ihjOmFjee9rueahOaTjeS9nOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQZXJtaXNzaW9uIEdyb3VwJ30gPSAn5p2D6ZmQ57uEJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1YmxpYyB1c2VycyBjYW4gc2VlIGhpc3RvcmljIENJIHZlcnNpb25zLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgdXNlcnMgaGF2ZSB0aGUgcG9zc2liaWxpdHkgdG8gbWFudWFsbHkgc3dpdGNoIGJldHdlZW4gaGlzdG9yaWMgQ0kgdmVyc2lvbnMuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBhdHRhY2htZW50IGFjdGlvbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu6ZmE5Lu25pON5L2c5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKggSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKggSVRTTSDphY3nva7pobnnm67mkJzntKLlsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzZWFyY2ggc2NyZWVuIGluIHRoZSBjdXN0b21lciBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjlrqLmiLfnlYzpnaLkvb/nlKggSVRTTSDphY3nva7pobnnm67mkJzntKLlsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB0cmVlIHZpZXcgc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKggSVRTTSDphY3nva7pobnnm67moJHop4blm77lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSB6b29tIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55SoIElUU00g6YWN572u6aG555uu57yp5pS+5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYWRkIElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5L2/55So5Luj55CG55WM6Z2i5Lit55qE5re75YqgIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgYnVsayBJVFNNIGNvbmZpZ3VyYXRpb24gaXRlbSBzY3JlZW4gaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdouS4reS9v+eUqOaJuemHjyBJVFNNIOmFjee9rumhueebruWxj+W5leaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSZXF1aXJlZCBwZXJtaXNzaW9ucyB0byB1c2UgdGhlIGVkaXQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICfkvb/nlKjku6PnkIbnlYzpnaLkuK3nmoTnvJbovpEgSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcGVybWlzc2lvbnMgdG8gdXNlIHRoZSBoaXN0b3J5IElUU00gY29uZmlndXJhdGlvbiBpdGVtIHNjcmVlbiBpbiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i5Lit5L2/55So5Y6G5Y+yIElUU00g6YWN572u6aG555uu5bGP5bmV5omA6ZyA55qE5p2D6ZmQ44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JlcXVpcmVkIHBlcm1pc3Npb25zIHRvIHVzZSB0aGUgcHJpbnQgSVRTTSBjb25maWd1cmF0aW9uIGl0ZW0gc2NyZWVuIGluIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLkuK3kvb/nlKjmiZPljbAgSVRTTSDphY3nva7pobnnm67lsY/luZXmiYDpnIDnmoTmnYPpmZDjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUmVxdWlyZWQgcHJpdmlsZWdlcyB0byBkZWxldGUgY29uZmlnIGl0ZW1zLid9ID0gJ+WIoOmZpOmFjee9rumhueaJgOmcgOeahOadg+mZkOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFyY2ggY29uZmlnIGl0ZW1zLid9ID0gJ+aQnOe0oumFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXQgdGhlIGluY2lkZW50IHN0YXRlIG9mIGEgQ0kgYXV0b21hdGljYWxseSB3aGVuIGEgVGlja2V0IGlzIExpbmtlZCB0byBhIENJLid9ID0KICAgICAgICAn5b2T56Wo5Y2V6ZO+5o6l5YiwIENJIOaXtu+8jOiHquWKqOiuvue9riBDSSDnmoTkuovku7bnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgZGVwbG95bWVudCBzdGF0ZSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGJ1bGsgc2NyZWVuIG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTphY3nva7pobnmibnph4/lsY/luZXkuK3orr7nva7pg6jnvbLnirbmgIHjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2V0cyB0aGUgaW5jaWRlbnQgc3RhdGUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBidWxrIHNjcmVlbiBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG555uu5om56YeP55WM6Z2i5Lit6K6+572u5LqL5Lu254q25oCB44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0aGF0IGFsbG93cyBsaW5raW5nIGEgY29uZmlndXJhdGlvbiBpdGVtIHdpdGggYW5vdGhlciBvYmplY3QgaW4gdGhlIGNvbmZpZyBpdGVtIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5pi+56S66I+c5Y2V5Lit55qE6ZO+5o6l77yM5YWB6K645Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG557yp5pS+6KeG5Zu+5Lit5bCG5LiA5Liq6YWN572u6aG55LiO5Y+m5LiA5Liq5a+56LGh55u46ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG555uu5qaC6KeI5Lit5pi+56S65LiA5Liq6I+c5Y2V6ZO+5o6l77yM55So5LqO6K6/6Zeu6YWN572u6aG555uu55qE5Y6G5Y+y6K6w5b2V44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBhY2Nlc3MgdGhlIGhpc3Rvcnkgb2YgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aYvuekuuiPnOWNleS4reeahOmTvuaOpe+8jOS7peS+v+WcqOS7o+eQhueVjOmdoueahOe8qeaUvuinhuWbvuS4reiuv+mXrumFjee9rumhueeahOWOhuWPsuiusOW9leOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGVsZXRlIGEgY29uZmlndXJhdGlvbiBpdGVtIGluIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOS7o+eQhueVjOmdoue8qeaUvuinhuWbvueahOiPnOWNleS4reaYvuekuuWIoOmZpOmFjee9rumhueeahOmTvuaOpeOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBpdGVtIGxpbmtzIGFzIGEgVHJlZSBWaWV3Lid9ID0KICAgICAgICAn5Zyo6I+c5Y2V5Lit5pi+56S65LiA5Liq6ZO+5o6l77yM5Lul5qCR5b2i6KeG5Zu+5pi+56S66YWN572u6aG56ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGNvbmZpZ3VyYXRpb24gaXRlbSBvdmVydmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE6YWN572u6aG555uu5qaC6KeI5Lit5pi+56S66I+c5Y2V6ZO+5o6l77yM5Lul5aSN5Yi26YWN572u6aG555uu44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBkdXBsaWNhdGUgYSBjb25maWd1cmF0aW9uIGl0ZW0gaW4gdGhlIGl0cyB6b29tIHZpZXcgb2YgdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+WcqOiPnOWNleS4reaYvuekuuS4gOS4qumTvuaOpe+8jOeUqOS6juWcqOS7o+eQhueVjOmdoueahOe8qeaUvuinhuWbvuS4reWkjeWItuS4gOS4qumFjee9rumhueOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaG93cyBhIGxpbmsgaW4gdGhlIG1lbnUgdG8gZWRpdCBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgaXRzIHpvb20gdmlldyBvZiB0aGUgYWdlbnQgaW50ZXJmYWNlLid9ID0KICAgICAgICAn5Zyo5Luj55CG55WM6Z2i55qE57yp5pS+6KeG5Zu+5Lit5pi+56S657yW6L6R6YWN572u6aG555qE6I+c5Y2V6ZO+5o6l44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Nob3dzIGEgbGluayBpbiB0aGUgbWVudSB0byBnbyBiYWNrIGluIHRoZSBjb25maWd1cmF0aW9uIGl0ZW0gem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjoj5zljZXkuK3mmL7npLrkuIDkuKrpk77mjqXvvIznlKjkuo7ov5Tlm57ku6PnkIbnlYzpnaLnmoTphY3nva7pobnnvKnmlL7op4blm77jgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHByaW50IGEgY29uZmlndXJhdGlvbiBpdGVtIGluIHRoZSBpdHMgem9vbSB2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjku6PnkIbnlYzpnaLnmoTnvKnmlL7op4blm77kuK3mmL7npLroj5zljZXpk77mjqXvvIzku6XmiZPljbDphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgYSBsaW5rIGluIHRoZSBtZW51IHRvIHpvb20gaW50byBhIGNvbmZpZ3VyYXRpb24gaXRlbSBpbiB0aGUgY29uZmlndXJhdGlvbiBpdGVtIG92ZXJ2aWV3IG9mIHRoZSBhZ2VudCBpbnRlcmZhY2UuJ30gPQogICAgICAgICflnKjoj5zljZXkuK3mmL7npLrkuIDkuKrpk77mjqXvvIznlKjkuo7mlL7lpKfku6PnkIbnlYzpnaLphY3nva7pobnmpoLop4jkuK3nmoTphY3nva7pobnjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2hvd3MgdGhlIGNvbmZpZyBpdGVtIGhpc3RvcnkgKHJldmVyc2Ugb3JkZXJlZCkgaW4gdGhlIGFnZW50IGludGVyZmFjZS4nfSA9CiAgICAgICAgJ+aYvuekuuS7o+eQhueVjOmdouS4reeahOmFjee9rumhueebruWOhuWPsuiusOW9le+8iOmAhuW6j++8ieOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGUgZGVmYXVsdCBjYXRlZ29yeSB3aGljaCBpcyBzaG93biwgaWYgbm9uZSBpcyBzZWxlY3RlZC4nfSA9ICflpoLmnpzmnKrpgInmi6nku7vkvZXnsbvliKvvvIzliJnmmL7npLrpu5jorqTnsbvliKvjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGhlIGlkZW50aWZpZXIgZm9yIGEgY29uZmlndXJhdGlvbiBpdGVtLCBlLmcuIENvbmZpZ0l0ZW0jLCBNeUNvbmZpZ0l0ZW0jLiBUaGUgZGVmYXVsdCBpcyBDb25maWdJdGVtIy4nfSA9CiAgICAgICAgJ+mFjee9rumhueeahOagh+ivhuespu+8jOWmgiBDb25maWdJdGVtI+OAgU15Q29uZmlnSXRlbSPjgILpu5jorqTkuLogQ29uZmlnSXRlbSPjgIInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVGl0bGUgZm9yIHRoZSBwdWJsaWMgaW50ZXJmYWNlIG92ZXJ2aWV3Lid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaXRsZSBmb3IgdGhlIHB1YmxpYyBpbnRlcmZhY2Ugc2VhcmNoLid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUcmlnZ2VycyBDb25maWdJdGVtRmV0Y2ggaW52b2tlciBhdXRvbWF0aWNhbGx5Lid9ID0gJ+iHquWKqOinpuWPkSBDb25maWdJdGVtRmV0Y2gg6LCD55So5Zmo44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gU3RyaW5nIEV4cHJlc3Npb24nfSA9ICfniYjmnKzlrZfnrKbkuLLooajovr7lvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmVyc2lvbiBTdHJpbmcgTW9kdWxlJ30gPSAn54mI5pys5a2X56ym5Liy5qih5Z2XJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZlcnNpb24gVHJpZ2dlcid9ID0gJ+eJiOacrOinpuWPkeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGV0aGVyIGZpZWxkcyBzaG91bGQgYmUgYXV0b21hdGljYWxseSBmaWxsZWQgKDEpLCBhbmQgaW4gdGhhdCBjYXNlIGFsc28gYmUgaGlkZGVuIGZyb20gdGlja2V0IGZvcm11bGFycyAoMikuJ30gPQogICAgICAgICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2hldGhlciB0aGUgZXhlY3V0aW9uIG9mIENvbmZpZ0l0ZW1BQ0wgY2FuIGJlIGF2b2lkZWQgYnkgY2hlY2tpbmcgY2FjaGVkIGZpZWxkIGRlcGVuZGVuY2llcy4gVGhpcyBjYW4gaW1wcm92ZSBsb2FkaW5nIHRpbWVzIG9mIGZvcm11bGFycywgYnV0IGhhcyB0byBiZSBkaXNhYmxlZCwgaWYgQUNMTW9kdWxlcyBhcmUgdG8gYmUgdXNlZCBmb3IgSVRTTUNvbmZpZ0l0ZW0tIGFuZCBGb3JtLVJldHVyblR5cGVzLid9ID0KICAgICAgICAn5piv5ZCm5Y+v5Lul6YCa6L+H5qOA5p+l57yT5a2Y5a2X5q615L6d6LWW5YWz57O75p2l6YG/5YWN5omn6KGMIENvbmZpZ0l0ZW1BQ0zjgILov5nlj6/ku6XnvKnnn63ooajmoLznmoTliqDovb3ml7bpl7TvvIzkvYblpoLmnpzopoHlnKggSVRTTUNvbmZpZ0l0ZW0g5ZKMIEZvcm0tUmV0dXJuVHlwZSDkuK3kvb/nlKggQUNMIOaooeWdl++8jOWImeW/hemhu+emgeeUqOOAgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydXaGljaCBnZW5lcmFsIGluZm9ybWF0aW9uIGlzIHNob3duIGluIHRoZSBoZWFkZXIuJ30gPSAn5qCH6aKY5Lit5pi+56S65LqG5ZOq5Lqb5LiA6Iis5L+h5oGv44CCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2NsYXNzJ30gPSAn57G7JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J2dsb2JhbCd9ID0gJ+WFqOeQgyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwb3N0cHJvZHVjdGl2ZSd9ID0gJ+WQjueUn+S6pyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydwcmVwcm9kdWN0aXZlJ30gPSAn55Sf5q6W5YmNJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J3Byb2R1Y3RpdmUnfSA9ICfnlJ/kuqfmgKcnOwoKICAgICMgUmVhZHkgdG8gYWRvcHQgY2xhc3NlczogSVQtU2VydmljZW1hbmFnZW1lbnQtMTFfMF8zCiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknfSA9ICcxMFXvvJoxNy41IOiLseWvuO+8iDQ0LjQ1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJ30gPSAnMTJV77yaMjEg6Iux5a+477yINTMuMzQg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknfSA9ICcxNVXvvJoyNi4yNSDoi7Hlr7jvvIg2Ni42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJ30gPSAnMThV77yaMzEuNSDoi7Hlr7jvvIg4MC4wMSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMTktaW5jaCBSYWNrJ30gPSAnMTkg6Iux5a+45py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknfSA9ICcxVe+8mjEuNzUg6Iux5a+477yINC40NSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJ30gPSAnMjBV77yaMzUg6Iux5a+477yIODguOSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjEtaW5jaCBSYWNrJ30gPSAnMjEg6Iux5a+45pSv5p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKSd9ID0gJzIyVe+8mjM4LjUg6Iux5a+477yIOTcuNzkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzIzLWluY2ggUmFjayd9ID0gJzIzIOiLseWvuOacuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyMy42IGluY2hlcyAoNjAwIG1tKSd9ID0gJzIzLjYg6Iux5a+477yINjAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eycyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKSd9ID0gJzI0Ve+8mjQyIOiLseWvuO+8iDEwNi42OCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknfSA9ICcyN1XvvJo0Ny4yNSDoi7Hlr7jvvIgxMjAuMDIg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKSd9ID0gJzJV77yaMy41IOiLseWvuO+8iDguODkg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknfSA9ICczMFXvvJo1Mi41IOiLseWvuO+8iDEzMy4zNSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzEuNSBpbmNoZXMgKDgwMCBtbSknfSA9ICczMS41IOiLseWvuO+8iDgwMCDmr6vnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknfSA9ICczM1XvvJo1Ny43NSDoi7Hlr7jvvIgxNDYuNjgg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM1LjQgaW5jaGVzICg5MDAgbW0pJ30gPSAnMzUuNCDoi7Hlr7jvvIg5MDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJ30gPSAnMzZV77yaNjMg6Iux5a+477yIMTYwLjAyIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczOS40IGluY2hlcyAoMTAwMCBtbSknfSA9ICczOS40IOiLseWvuO+8iDEwMDAg5q+r57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJ30gPSAnMzlV77yaNjguMjUg6Iux5a+477yIMTczLjM1IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKSd9ID0gJzNV77yaNS4yNSDoi7Hlr7jvvIgxMy4zNCDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKSd9ID0gJzQyVe+8mjczLjUg6Iux5a+477yIMTg2LjY5IOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0My4zIGluY2hlcyAoMTEwMCBtbSk6J30gPSAnNDMuMyDoi7Hlr7jvvIgxMTAwIOavq+exs++8ie+8mic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKSd9ID0gJzQ1Ve+8mjc4Ljc1IOiLseWvuO+8iDIwMC4wMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNDcuMiBpbmNoZXMgKDEyMDAgbW0pJ30gPSAnNDcuMiDoi7Hlr7jvvIgxMjAwIOavq+exs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKSd9ID0gJzQ4Ve+8mjg0IOiLseWvuO+8iDIxMy4zNiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknfSA9ICc0Ve+8mjcg6Iux5a+477yIMTcuNzgg5Y6Y57Gz77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57JzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJ30gPSAnNVXvvJo4Ljc1IOiLseWvuO+8iDIyLjIzIOWOmOexs++8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eyc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKSd9ID0gJzZV77yaMTAuNSDoi7Hlr7jvvIgyNi42NyDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJ30gPSAnN1XvvJoxMi4yNSDoi7Hlr7jvvIgzMS4xMiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJ30gPSAnOFXvvJoxNCDoi7Hlr7jvvIgzNS41NiDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJ30gPSAnOVXvvJoxNS43NSDoi7Hlr7jvvIg0MC4wMSDljpjnsbPvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQUdQTCAoQWZmZXJvIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0FjY291bnRpbmcnfSA9ICfkvJrorqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWNjb3VudGluZyBJbmZvcm1hdGlvbid9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBZGRyZXNzIEFsbG9jYXRpb24nfSA9ICflnLDlnYDliIbphY0nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQWRtaW5pc3RyYXRvcid9ID0gJ+euoeeQhuWRmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydBbmFsb2cgUGhvbmUnfSA9ICfmqKHmi5/nlLXor50nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBhY2hlIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQXBwbGlhbmNlIFR5cGUnfSA9ICforr7lpIfnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQlNEIExpY2Vuc2UgKEJlcmtlbGV5IFNvZnR3YXJlIERpc3RyaWJ1dGlvbiBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydCYXR0ZXJ5IENhcGFjaXR5IChBaCknfSA9ICfnlLXmsaDlrrnph4/vvIjlronml7bvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQmF0dGVyeSBUeXBlJ30gPSAn55S15rGg57G75Z6LJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1aWxkaW5nJ30gPSAn5aSn5buIJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0J1cyBJbnRlcmZhY2UnfSA9ICfmgLvnur/mjqXlj6MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ0MwIChDcmVhdGl2ZSBDb21tb25zIFplcm8pJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NJRFInfSA9ICdDSURSJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NQVSd9ID0gJ0NQVSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDUFUgQ2xhc3MnfSA9ICdDUFUg562J57qnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NhcGFjaXR5IChHQiknfSA9ICflrrnph4/vvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZCd9ID0gJ+avj+S4quWbvuW9ouWNoeeahOWuuemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIE51bWJlcid9ID0gJ+WNoeWPtyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFJlYWRlcid9ID0gJ+ivu+WNoeWZqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDYXJkIFR5cGUnfSA9ICfljaHniYfnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IENlcnRpZmljYXRlcyd9ID0gJ+WuouaIt+ivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbGllbnQgU29mdHdhcmUnfSA9ICflrqLmiLfnq6/ova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ2xpZW50IGNhdGVnb3J5J30gPSAn5a6i5oi357G75YirJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Nsb2NrcmF0ZSd9ID0gJ+aXtumSn+mikeeOhyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDbG9ja3NwZWVkJ30gPSAn5pe26ZKf6YCf5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvZGUgU2lnbmluZyBDZXJ0aWZpY2F0ZXMnfSA9ICfku6PnoIHnrb7lkI3or4HkuaYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29uZmVyZW5jZSBQaG9uZSd9ID0gJ+S8muiurueUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb25zdWx0aW5nIEFncmVlbWVudCd9ID0gJ+WSqOivouWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250YWN0J30gPSAn6IGU57O75pa55byPJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvbnRhY3QgRGlzdHJpYnV0b3InfSA9ICfogZTns7vnu4/plIDllYYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udGFpbmVyIE1hbmFnZW1lbnQnfSA9ICfpm4boo4XnrrHnrqHnkIYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QnfSA9ICflkIjlkIwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29udHJhY3QgVHlwZSd9ID0gJ+WQiOWQjOexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgZnJvbSd9ID0gJ+WQiOWQjOacn+S7jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDb250cmFjdCBwZXJpb2QgdW50aWwnfSA9ICflkIjlkIzmnJ/oh7MnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpJ30gPSAn5peg57uz55S16K+d77yIREVDVCDnlLXor53vvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ29zdCB1bml0J30gPSAn5oiQ5pys5Y2V5L2NJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NvdW50IG9mIGxpY2Vuc2VzJ30gPSAn6K645Y+v6K+B5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0NyZWF0aW9uIERhdGUnfSA9ICfliJvlu7rml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnQ3JlYXRpdmUgQ29tbW9ucyd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydDdXN0b20gUmFjayd9ID0gJ+WumuWItuacuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQJ30gPSAnREhDUCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydESENQIFJlc2VydmVkJ30gPSAnREhDUCDkv53nlZknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRE5TLVNlcnZlcid9ID0gJ0ROUyDmnI3liqHlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRFZJJ30gPSAnRFZJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgSW52b2ljZSd9ID0gJ+WPkeelqOaXpeacnyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEYXRlIG9mIE9yZGVyJ30gPSAn6K6i6LSt5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0RhdGUgb2YgV2FycmFudHknfSA9ICfmjojmnYPml6XmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGF0ZSBvZiByZWxlYXNlJ30gPSAn5Y+R5biD5pel5pyfJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0Rlc2t0b3AnfSA9ICfmoYzkuIrlnovpm7vohaYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRGlzcGxheVBvcnQnfSA9ICdEaXNwbGF5UG9ydCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlcyd9ID0gJ+aWh+S7tuetvuWQjeivgeS5pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFUEwgKEVjbGlwc2UgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VUU0kgUmFjayd9ID0gJ0VUU0kg5py65p62JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyknfSA9ICfnlLXlrZDpgq7ku7bor4HkuabvvIhTL01JTUUg6K+B5Lmm77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0VtYmVkZGVkIFNJTSAoZVNJTSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW1wbG95bWVudCBDb250cmFjdCd9ID0gJ+mbh+S9o+WQiOWQjCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydFbmQgSVAgQWRkcmVzcyd9ID0gJ+e7iOerryBJUCDlnLDlnYAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRW5kIG9mIHN1cHBvcnQnfSA9ICfmlK/mjIHnu5PmnZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXhwaXJ5IERhdGUnfSA9ICfmnInmlYjmnJ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnRXh0ZXJuYWwgSGFyZCBEcml2ZSd9ID0gJ+Wklue9ruehrOebmCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJld2FsbCd9ID0gJ+mYsueBq+WimSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGaXJtd2FyZSd9ID0gJ+WbuuS7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZSd9ID0gJ+mjnui9ruWCqOiDvSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGb3JtIEZhY3Rvcid9ID0gJ+WkluW9ouWwuuWvuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydGcmFuY2hpc2UgQWdyZWVtZW50J30gPSAn54m56K6457uP6JCl5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ZyZWV3YXJlJ30gPSAn5YWN6LK76Luf5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0dQTCAoR2VuZXJhbCBQdWJsaWMgTGljZW5zZSknfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnR2VuZXJhbCBJbmZvcm1hdGlvbid9ID0gJ+S4gOiIrOS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBDYXJkcyd9ID0gJ+WbvuW9ouWNoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydHcmFwaGljcyBjYXJkJ30gPSAn5Zu+5b2i5Y2hJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hETUknfSA9ICdIRE1JJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlJ30gPSAn56Gs5Lu2JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIE1vZGVsJ30gPSAn56Gs5Lu25Z6L5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0hhcmR3YXJlIFdlaWdodCd9ID0gJ+ehrOS7tumHjemHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydIZWFkc2V0J30gPSAn6ICz5py6JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lQIFByb3RvY29sJ30gPSAnSVAg5Y2P6K6uJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0lkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKSd9ID0gJ+i6q+S7veWSjOiuv+mXrueuoeeQhu+8iElBTe+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydJbnZlbnRvcnkgTnVtYmVyJ30gPSAn5bqT5a2Y57yW5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludmVyc3RtZW50IGNvc3RzJ30gPSAn6L2s5o2i5oiQ5pysJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0ludm9pY2UgTnVtYmVyJ30gPSAn5Y+R56Wo5Y+356CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0tleWJvYXJkJ30gPSAn6Y2155ukJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KSd9ID0gJ0xDRCDmmL7npLrlmajvvIjmtrLmmbbmmL7npLrlmajvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ0xFRCDmmL7npLrlmajvvIjlj5HlhYnkuozmnoHnrqHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTEdQTCAoTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UpJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhbmRsaW5lIFBob25lJ30gPSAn5Zu65a6a55S16K+dJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xhcHRvcCd9ID0gJ+ethuiomOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXRpdHVkZSd9ID0gJ+e6rOW6pic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAxOiBQaHlzaWNhbCBMYXllcid9ID0gJ+esrCAxIOWxgu+8mueJqeeQhuWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAyOiBEYXRhIExpbmsgTGF5ZXInfSA9ICfnrKwgMiDlsYLvvJrmlbDmja7pk77ot6/lsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgMzogTmV0d29yayBMYXllcid9ID0gJ+esrCAzIOWxgu+8mue9kee7nOWxgic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMYXllciAzOiBOZXR3b3JrIExheWVyIChTdXBlcm5ldCknfSA9ICfnrKwgMyDlsYLvvJrnvZHnu5zlsYLvvIjotoXnuqfnvZHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJ30gPSAn56ysIDQg5bGC77ya5Lyg6L6T5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDU6IFNlc3Npb24gTGF5ZXInfSA9ICfnrKwgNSDlsYLvvJrkvJror53lsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJ30gPSAn56ysIDYg5bGC77ya5pi+56S65bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJ30gPSAn56ysIDcg5bGC77ya5bqU55So5bGCJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xlYXNlIEFncmVlbWVudCd9ID0gJ+enn+i1geWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIEFncmVlbWVudCd9ID0gJ+iuuOWPr+WNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIENvdW50J30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgS2V5J30gPSAn6K645Y+v6K+B5a+G6ZKlJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgVHlwZSd9ID0gJ+iuuOWPr+ivgeexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMaWNlbnNlIHBlcmlvZCBmcm9tJ30gPSAn6K645Y+v6K+B5pyJ5pWI5pyf5LuOJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpY2Vuc2UgcGVyaW9kIHVudGlsJ30gPSAn6K645Y+v6K+B5pyJ5pWI5pyf6IezJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0gSXJvbiBQaG9zcGhhdGUgKExpRmVQTzQpIEJhdHRlcnknfSA9ICfno7fphbjpk4HplILvvIhMaUZlUE8077yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J0xpdGhpdW0tSW9uIChMaS1pb24pIEJhdHRlcnknfSA9ICfplILnprvlrZDvvIhMaS1Jb27vvInnlLXmsaAnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9hbiBBZ3JlZW1lbnQnfSA9ICfotLfmrL7ljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTG9jYXRlZCBpbid9ID0gJ+S9jeS6jic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydMb25naXR1ZGUnfSA9ICfnu4/luqYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTUlUIExpY2Vuc2UnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNYW51ZmFjdHVyZXInfSA9ICfliLbpgKDllYYnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWF4aW11bSBMb2FkIENhcGFjaXR5IChXKSd9ID0gJ+acgOWkp+i0n+i9veiDveWKm++8iOeTpu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNZW1vcnknfSA9ICflhoXlrZgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWVtb3J5IFR5cGUnfSA9ICflhoXlrZjnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTWljcm8gU0lNJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01pbmktUmFjayd9ID0gJ+i/t+S9oOacuuaetic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb2JpbGUgTnVtYmVyJ30gPSAn5omL5py65Y+356CBJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vYmlsZS9FbWJlZGRlZCd9ID0gJ+enu+WKqC/ltYzlhaXlvI8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwnfSA9ICflnovomZ8nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9kZWwgRGVzY3JpcHRpb24nfSA9ICflnovlj7for7TmmI4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTW9uaXRvciBSZXNvbHV0aW9uJ30gPSAn5pi+56S65Zmo5YiG6L6o546HJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J01vbml0b3IgU2l6ZSd9ID0gJ+aYvuekuuWZqOWwuuWvuCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydNb3VzZSd9ID0gJ+a7kem8oCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOYW5vIFNJTSd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrJ30gPSAn572R57ucJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgSW5mbyd9ID0gJ+e9kee7nOS/oeaBryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOZXR3b3JrIEluZm9ybWF0aW9uJ30gPSAn572R57uc5L+h5oGvJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05ldHdvcmsgTGF5ZXInfSA9ICfnvZHnu5zlsYInOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTmlja2VsLUNhZG1pdW0gKE5pQ2QpIEJhdHRlcnknfSA9ICfplY3plYnvvIhOaUNk77yJ55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J05pY2tlbC1NZXRhbCBIeWRyaWRlIChOaU1IKSBCYXR0ZXJ5J30gPSAn6ZWN5rCi77yITmlNSO+8ieeUteaxoCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSknfSA9ICfkv53lr4bljY/orq7vvIhOREHvvIknOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTm90ZWJvb2snfSA9ICfnrJTorrDmnKwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnTnVtYmVyIG9mIENQVXMnfSA9ICdDUFUg5pWw6YePJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J051bWJlciBvZiBSQU0gbW9kdWxlcyd9ID0gJ+WGheWtmOaooeWdl+aVsOmHjyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMnfSA9ICflm77lvaLljaHmlbDph48nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKSd9ID0gJ09MRUQg5pi+56S65Zmo77yI5pyJ5py65Y+R5YWJ5LqM5p6B566h77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J09wZXJhdGluZyBjb3N0cyd9ID0gJ+i/kOiQpeaIkOacrCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydPcmRlciBOdW1iZXInfSA9ICforqLljZXlj7cnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3RoZXInfSA9ICflhbblroMnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnT3V0cHV0cyd9ID0gJ+i+k+WHuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQSU4nfSA9ICflr4bnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUElOIDInfSA9ICflr4bnoIEgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQVUsnfSA9ICdQVUsnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUFVLIDInfSA9ICdQVUsgMic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQnfSA9ICflkIjkvJnljY/orq4nOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGVycGV0dWFsIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1Bob25lIC8gVm9JUCd9ID0gJyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaG9uZSBOdW1iZXInfSA9ICfnlLXor53lj7fnoIEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnUGhvbmUgVHlwZSd9ID0gJ+eUteivneexu+Weiyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQaHlzaWNhbCBDb3Jlcyd9ID0gJ+eJqeeQhuejgeiKryc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQb3dlciBEZWxpdmVyeSd9ID0gJ+eUteWKm+i+k+mAgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydQdWJsaWMgRG9tYWluJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1B1cmNoYXNlZCBhdCd9ID0gJ+WcqCc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSYWNrIERlcHRoJ30gPSAn5py65p625rex5bqmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1JhY2sgVW5pdHMgKFUpJ30gPSAn5py65p625Y2V5YWDIChVKSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydSb29tJ30gPSAn5oi/6ZaTJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NJTSBDYXJkJ30gPSAnU0lNIOWNoSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTU0wvVExTIENlcnRpZmljYXRlcyd9ID0gJ1NTTC9UTFMg6K+B5LmmJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhbGVzIENvbnRyYWN0J30gPSAn6ZSA5ZSu5ZCI5ZCMJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NhdGVsbGl0ZSBQaG9uZSd9ID0gJ+WNq+aYn+eUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnknfSA9ICflr4blsIHpk4XphbggKFNMQSkg55S15rGgJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlYXQgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU2VyaWFsbnVtYmVyJ30gPSAn5bqP5YiX5Y+3JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1NlcnZlciBTb2Z0d2FyZSd9ID0gJ+acjeWKoeWZqOi9r+S7tic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIEFncmVlbWVudCd9ID0gJ+acjeWKoeWNj+iuric7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTZXJ2aWNlIFRhZyd9ID0gJ+acjeWKoeagh+etvic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydTaGFyZXdhcmUnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29ja2V0IFR5cGUnfSA9ICfmj5LluqfnsbvlnosnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU29mdHdhcmUnfSA9ICfova/ku7YnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3BlYWtlcnMnfSA9ICflj5HoqIDkuronOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RhbmRhcmQgU0lNJ30gPSAn5qiZ5rqWJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0YXJ0IElQIEFkZHJlc3MnfSA9ICflkK/liqggSVAg5Zyw5Z2AJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N0b3JhZ2UnfSA9ICflrZjlgqgnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3RvcmFnZSBQYXJ0aXRpb24nfSA9ICflrZjlgqjliIbljLonOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3Vic2NyaXB0aW9uLWJhc2VkIGxpY2Vuc2VzJ30gPSAnJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1N1YnNpZGlhcnknfSA9ICfpmYTlsZ7mnLrmnoQnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnU3VtbWFyeSd9ID0gJ+aRmOimgSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaGluIENsaWVudCd9ID0gJ+eYpuWuouaIt+acuic7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUaHJlYWRzJ30gPSAn57q/56iLJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RodW5kZXJib2x0J30gPSAn6Zu355S1JzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQiknfSA9ICfmmL7ljaHmgLvlhoXlrZjvvIhHQu+8iSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydUb3RhbCBSQU0gKEdCKSd9ID0gJ+aAu+WGheWtmO+8iEdC77yJJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1RvdWNoc2NyZWVuIE1vbml0b3InfSA9ICfop6bmkbjlsY/mmL7npLrlmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVG93ZXInfSA9ICfloZTmpbwnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCIEh1Yid9ID0gJ1VTQiDpm4bnur/lmagnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVVNCLUMnfSA9ICdVU0ItQyc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWR0EnfSA9ICfmmL7lg4/nrqEnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVlBOJ30gPSAn6Jma5ouf5LiT55So572RJzsKICAgICRTZWxmLT57VHJhbnNsYXRpb259LT57J1ZSIEhlYWRzZXQnfSA9ICdWUiDlpLTnm5QnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbCBDbGllbnQnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVmlydHVhbExpbmsnfSA9ICfomZrmi5/pk77mjqUnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnVm9JUCBQaG9uZSd9ID0gJ+e9kee7nOeUteivnSc7CiAgICAkU2VsZi0+e1RyYW5zbGF0aW9ufS0+eydWb2x1bWUgbGljZW5zZXMnfSA9ICcnOwogICAgJFNlbGYtPntUcmFuc2xhdGlvbn0tPnsnV2ViY2FtJ30gPSAn572R57uc5pGE5YOP5aS0JzsKCgogICAgcHVzaCBAeyAkU2VsZi0+e0phdmFTY3JpcHRTdHJpbmdzfSAvLyBbXSB9LCAoCiAgICAnQW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsYXNzIGltcG9ydC4nLAogICAgJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjb21tdW5pY2F0aW9uLicsCiAgICAnQ29uZmlybScsCiAgICAnRGlzbWlzcycsCiAgICAnRG8geW91IHdhbnQgdG8gcHJvY2VlZD8nLAogICAgJ0ltcG9ydGluZyBjbGFzc2VzL3JvbGVzIGFuZCB0aGVpciByZWxhdGVkIGZpZWxkcycsCiAgICAnTm8nLAogICAgJ05vdGUgdGhhdCBhbHNvIGNvcnJlc3BvbmRpbmcgZHluYW1pYyBmaWVsZHMgYW5kIEdlbmVyYWxDYXRhbG9nIGNsYXNzZXMgd2lsbCBiZSBjcmVhdGVkIGFuZCB0aGVyZSBpcyBubyBhdXRvbWF0aWMgcmVtb3ZhbC4nLAogICAgJ09rJywKICAgICdPdmVydmlldyBhbmQgQ29uZmlybWF0aW9uJywKICAgICdQbGVhc2UgZW50ZXIgYXQgbGVhc3Qgb25lIHNlYXJjaCB2YWx1ZSBvciAqIHRvIGZpbmQgYW55dGhpbmcuJywKICAgICdTZWFyY2gnLAogICAgJ1NldHRpbmdzJywKICAgICdTdWJtaXQnLAogICAgJ1RoZSBmb2xsb3dpbmcgY2xhc3NlcyB3aWxsIGJlIGltcG9ydGVkJywKICAgICdUaGUgZm9sbG93aW5nIHJvbGVzIHdpbGwgYmUgaW1wb3J0ZWQnLAogICAgJ1llcycsCiAgICApOwoKfQoKMTsK</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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+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+e1N1Y2Nlc3N9ICkgewoKICAgICAgICAgICAgIyByZXR1cm4gZXJyb3IKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkpTT05SZXBseSgKICAgICAgICAgICAgICAgIERhdGEgPT4gJFJlc3VsdCwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICMgUnVuIF9wb3N0LnBtIGlmIGF2YWlsYWJsZS4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJEV4YW1wbGVDbGFzcwogICAgICAgICAgICAgICAgJiYgLWUgIiRIb21lL3Zhci9pdHNtL2NvbmZpZ2l0ZW1jbGFzc2VzLyIgLiAkRmlsZVdpdGhvdXRFeHRlbnNpb24gLiAiX3Bvc3QucG0iCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG15ICRCYWNrZW5kTmFtZSA9ICd2YXI6Oml0c206OmNvbmZpZ2l0ZW1jbGFzc2VzOjonIC4gJEZpbGVXaXRob3V0RXh0ZW5zaW9uIC4gJ19wb3N0JzsKCiAgICAgICAgICAgICAgICBteSAkTG9hZGVkID0gJE1haW5PYmplY3QtPlJlcXVpcmUoCiAgICAgICAgICAgICAgICAgICAgJEJhY2tlbmROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoJExvYWRlZCkgewoKICAgICAgICAgICAgICAgICAgICBteSAkQmFja2VuZFBvc3QgPSAkS2VybmVsOjpPTS0+R2V0KAogICAgICAgICAgICAgICAgICAgICAgICAkQmFja2VuZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJVN0YXR1cyA9ICRCYWNrZW5kUG9zdC0+UnVuKCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN0YXR1c3tTdWNjZXNzfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgc2hvdyB0aGUgZXJyb3Igc2NyZWVuCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gJFN0YXR1c3tFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+SlNPTlJlcGx5KAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBsaXN0IG9mIHRoZSB2ZXJzaW9ucyBvZiB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbmZpZyBpdGVtIGNsYXNzCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2xhc3NEZWZpbml0aW9uTGlzdCcgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGlkCiAgICAgICAgbXkgJENsYXNzSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ2xhc3NJRCcgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKSB1bmxlc3MgJENsYXNzSUQ7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25MaXN0JywKICAgICAgICApOwoKICAgICAgICAjIGdldCBkZWZpbml0aW9uIGxpc3QKICAgICAgICBteSAkRGVmaW5pdGlvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkxpc3QoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uICggcmV2ZXJzZSAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICAgICAgIyBnZXQgdXNlciBkYXRhCiAgICAgICAgICAgIG15ICRGdWxsTmFtZSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IGRlZmluaXRpb24KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25MaXN0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICREZWZpbml0aW9uLT4lKiwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeVVzZXIgPT4gJEZ1bGxOYW1lLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBsaXN0IG9mIHRoZSB2ZXJzaW9ucyBvZiB0aGUgZGVmaW5pdGlvbiBvZiBhIGNvbmZpZyBpdGVtIHJvbGUKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSb2xlRGVmaW5pdGlvbkxpc3QnICkgewoKICAgICAgICAjIGdldCByb2xlIGlkCiAgICAgICAgbXkgJFJvbGVJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdSb2xlSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICRSb2xlSUQ7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IG92ZXJ2aWV3IHJlc3VsdAogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkxpc3QnLAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGxpc3Qgb2YgZGVmaW5pdGlvbnMgZm9yIHRoYXQgcm9sZSwga2VlcGluZyB0aGUgY2FsbCB0byBEZWZpbml0aW9uTGlzdCgpCiAgICAgICAgbXkgJERlZmluaXRpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uTGlzdCgKICAgICAgICAgICAgUm9sZUlEID0+ICRSb2xlSUQsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICREZWZpbml0aW9uICggcmV2ZXJzZSAkRGVmaW5pdGlvbkxpc3QtPkAqICkgewoKICAgICAgICAgICAgIyBnZXQgdXNlciBkYXRhCiAgICAgICAgICAgIG15ICRGdWxsTmFtZSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkRGVmaW5pdGlvbi0+e0NyZWF0ZUJ5fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0IGRlZmluaXRpb24KICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkxpc3RSb3cnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJERlZmluaXRpb24tPiUqLAogICAgICAgICAgICAgICAgICAgIFJvbGUgICAgICAgICA9PiAkUm9sZUxpc3QtPnskUm9sZUlEfSwKICAgICAgICAgICAgICAgICAgICBDcmVhdGVCeVVzZXIgPT4gJEZ1bGxOYW1lLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjbGFzcyBkZWZpbml0aW9uIHZpZXcKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0RlZmluaXRpb25WaWV3JyApIHsKCiAgICAgICAgIyBnZXQgZGVmaW5pdGlvbiBpZAogICAgICAgIG15ICREZWZpbml0aW9uSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRGVmaW5pdGlvbklEJyApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApIHVubGVzcyAkRGVmaW5pdGlvbklEOwoKICAgICAgICAjIGdldCBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICREZWZpbml0aW9uSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBDbGFzc1NlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJERlZmluaXRpb24tPntDbGFzc30sCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIENsYXNzVmVyc2lvblNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgICAgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJERlZmluaXRpb24tPntWZXJzaW9ufSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJERlZmluaXRpb24tPntDcmVhdGVCeX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NsYXNzRGVmaW5pdGlvblZpZXcnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICREZWZpbml0aW9uLT4lKiwKICAgICAgICAgICAgICAgIENyZWF0ZUJ5VXNlciA9PiAkVXNlck5hbWUsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHJvbGUgZGVmaW5pdGlvbiB2aWV3CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUm9sZURlZmluaXRpb25WaWV3JyApIHsKCiAgICAgICAgIyBnZXQgZGVmaW5pdGlvbiBpZAogICAgICAgIG15ICREZWZpbml0aW9uSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRGVmaW5pdGlvbklEJyApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApIHVubGVzcyAkRGVmaW5pdGlvbklEOwoKICAgICAgICAjIGdldCBkZWZpbml0aW9uCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+Um9sZURlZmluaXRpb25HZXQoCiAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbklELAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgUm9sZUxpc3QgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgUm9sZVNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb24tPntSb2xlSUR9LAogICAgICAgICAgICAgICAgTmFtZSA9PiAkRGVmaW5pdGlvbi0+e1JvbGV9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBSb2xlVmVyc2lvblNlbGVjdGVkID0+IHsKICAgICAgICAgICAgICAgIElEICAgICAgPT4gJERlZmluaXRpb25JRCwKICAgICAgICAgICAgICAgIFZlcnNpb24gPT4gJERlZmluaXRpb24tPntWZXJzaW9ufSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICk7CgogICAgICAgICREZWZpbml0aW9uLT57RGVmaW5pdGlvblN0cmluZ30gPSAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKAogICAgICAgICAgICBUZXh0ID0+ICREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFVzZXJOYW1lID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgICAgICBVc2VySUQgPT4gJERlZmluaXRpb24tPntDcmVhdGVCeX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1JvbGVEZWZpbml0aW9uVmlldycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERlZmluaXRpb24tPiUqLAogICAgICAgICAgICAgICAgQ3JlYXRlQnlVc2VyID0+ICRVc2VyTmFtZSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2xhc3MgZGVmaW5pdGlvbiBjaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdDbGFzc0RlZmluaXRpb25DaGFuZ2UnICkgewoKICAgICAgICAjIGdldCBjbGFzcyBpZAogICAgICAgIG15ICRDbGFzc0lEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICRDbGFzc0lEOwoKICAgICAgICAjIEFkZCBjb2RlIG1pcnJvciBsYW5ndWFnZSBtb2RlLgogICAgICAgIGlmICggJExheW91dE9iamVjdC0+e0Jyb3dzZXJSaWNoVGV4dH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdFZGl0b3JMYW5ndWFnZU1vZGUnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJ3RleHQveC15YW1sJywKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNsYXNzIGRlZmluaXRpb24KICAgICAgICBteSAkRGVmaW5pdGlvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgICAgICBDbGFzc0lEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgIE9yaWdpbmFsICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgICA9PiAkQ2xhc3NMaXN0LAogICAgICAgICAgICBSb2xlTGlzdCAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgQ2xhc3NTZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICBJRCAgID0+ICREZWZpbml0aW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZpbml0aW9uLT57Q2xhc3N9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFZGl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFNob3dPdmVydmlld0xpbmsgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICBteSAkRWRpdG9yUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e0VkaXRvclJvd3N9IHx8IDMwOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdDbGFzc0RlZmluaXRpb25DaGFuZ2UnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICV7JERlZmluaXRpb259LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIENsYXNzICAgPT4gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgIFJvd3MgICAgPT4gJEVkaXRvclJvd3MsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBnZW5lcmF0ZSBvdXRwdXQKICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHJvbGUgZGVmaW5pdGlvbiBjaGFuZ2UKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdSb2xlRGVmaW5pdGlvbkNoYW5nZScgKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGlkCiAgICAgICAgbXkgJFJvbGVJRCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdSb2xlSUQnICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCggT1AgPT4gIkFjdGlvbj0kU2VsZi0+e0FjdGlvbn0iICkgdW5sZXNzICRSb2xlSUQ7CgogICAgICAgICMgQWRkIGNvZGUgbWlycm9yIGxhbmd1YWdlIG1vZGUuCiAgICAgICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0VkaXRvckxhbmd1YWdlTW9kZScsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAndGV4dC94LXlhbWwnLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY2xhc3MgZGVmaW5pdGlvbgogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJFJvbGVJRCwKICAgICAgICApOwoKICAgICAgICAjIHNob3cgc2lkZWJhciwgYWN0aXZhdGUgdGhlICdPdmVydmlldycgYmxvY2sKICAgICAgICAkU2VsZi0+X1Nob3dTaWRlYmFyKAogICAgICAgICAgICBPcmlnaW5hbCAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgQ2xhc3NMaXN0ICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICA9PiAkUm9sZUxpc3QsCiAgICAgICAgICAgIFJvbGVTZWxlY3RlZCA9PiB7CiAgICAgICAgICAgICAgICBJRCAgID0+ICREZWZpbml0aW9uLT57Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICBOYW1lID0+ICREZWZpbml0aW9uLT57Q2xhc3N9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBFZGl0ICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFNob3dPdmVydmlld0xpbmsgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBvdmVydmlldyByZXN1bHQKICAgICAgICBteSAkRWRpdG9yUm93cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgiSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjokU2VsZi0+e0FjdGlvbn0iKS0+e0VkaXRvclJvd3N9IHx8IDMwOwogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb2xlRGVmaW5pdGlvbkNoYW5nZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJXskRGVmaW5pdGlvbn0sCiAgICAgICAgICAgICAgICBSb2xlSUQgPT4gJFJvbGVJRCwKICAgICAgICAgICAgICAgIFJvbGUgICA9PiAkUm9sZUxpc3QtPnskUm9sZUlEfSwKICAgICAgICAgICAgICAgIFJvd3MgICA9PiAkRWRpdG9yUm93cywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2xhc3MgZGVmaW5pdGlvbiBzYXZlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2xhc3NEZWZpbml0aW9uU2F2ZScgKSB7CgogICAgICAgICMgZ2V0IGFuZCBjaGVjayBwYXJhbXMKICAgICAgICBteSAlRGVmaW5pdGlvbjsKICAgICAgICBmb3IgbXkgJEZvcm1QYXJhbSAocXcoQ2xhc3NJRCBEZWZpbml0aW9uKSkgewogICAgICAgICAgICAkRGVmaW5pdGlvbnskRm9ybVBhcmFtfSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRGb3JtUGFyYW0gKSB8fCAnJzsKICAgICAgICB9CiAgICAgICAgZm9yIG15ICRGb3JtUGFyYW0gKHF3KENsYXNzSUQgRGVmaW5pdGlvbikpIHsKICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb257JEZvcm1QYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRGb3JtUGFyYW0hIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFZhbGlkYXRlIFlBTUwgY29kZSBieSBjb252ZXJ0aW5nIGl0IHRvIFBlcmwuCiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICREZWZpbml0aW9ue0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgcmVmICREZWZpbml0aW9uUmVmIGVxICdIQVNIJzsKCiAgICAgICAgIyBhZGQgdG8gZGF0YWJhc2UKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgICVEZWZpbml0aW9uLAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZGlzcGxheSBjaGFuZ2Ugc2NyZWVuIHdpdGggZXJyb3IgaWYgY2hlY2sgZmFpbGVkCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUmVzdWx0KSAmJiAhJFJlc3VsdC0+e1N1Y2Nlc3N9ICkgewoKICAgICAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgICAgICRTZWxmLT5fU2hvd1NpZGViYXIoCiAgICAgICAgICAgICAgICBPcmlnaW5hbCAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICBDbGFzc0xpc3QgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgICAgICBSb2xlTGlzdCAgICAgID0+ICRSb2xlTGlzdCwKICAgICAgICAgICAgICAgIENsYXNzU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb257Q2xhc3NJRH0sCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkQ2xhc3NMaXN0LT57ICREZWZpbml0aW9ue0NsYXNzSUR9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgRWRpdCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgICAgIG15ICRFZGl0b3JSb3dzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57RWRpdG9yUm93c30gfHwgMzA7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3NEZWZpbml0aW9uQ2hhbmdlJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVEZWZpbml0aW9uLAogICAgICAgICAgICAgICAgICAgIEVycm9yICAgICAgICA9PiAkUmVzdWx0LT57RXJyb3J9LAogICAgICAgICAgICAgICAgICAgIEVycm9yQXJnMSAgICA9PiAkUmVzdWx0LT57RXJyb3JBcmdzfS0+WzBdLAogICAgICAgICAgICAgICAgICAgIEVycm9yQXJnMiAgICA9PiAkUmVzdWx0LT57RXJyb3JBcmdzfS0+WzFdLAogICAgICAgICAgICAgICAgICAgIEVycm9yQ2xhc3NlcyA9PiAnU2VydmVyRXJyb3IgRXJyb3InLAogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgICAgICA9PiAkRGVmaW5pdGlvbntDbGFzc0lEfSwKICAgICAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJENsYXNzTGlzdC0+eyAkRGVmaW5pdGlvbntDbGFzc0lEfSB9LAogICAgICAgICAgICAgICAgICAgIFJvd3MgICAgICAgICA9PiAkRWRpdG9yUm93cywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgICAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlciwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZG1pbklUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICAgICAgfQoKICAgICAgICBteSAkQ29udGludWVBZnRlclNhdmUgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29udGludWVBZnRlclNhdmUnICk7CiAgICAgICAgaWYgKCRDb250aW51ZUFmdGVyU2F2ZSkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTtTdWJhY3Rpb249Q2xhc3NEZWZpbml0aW9uQ2hhbmdlO0NsYXNzSUQ9JERlZmluaXRpb257Q2xhc3NJRH0iLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPlJlZGlyZWN0KCBPUCA9PiAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufSIgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHJvbGUgZGVmaW5pdGlvbiBzYXZlCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnUm9sZURlZmluaXRpb25TYXZlJyApIHsKCiAgICAgICAgIyBnZXQgYW5kIGNoZWNrIHBhcmFtcwogICAgICAgIG15ICVEZWZpbml0aW9uOwogICAgICAgIGZvciBteSAkRm9ybVBhcmFtIChxdyhSb2xlSUQgRGVmaW5pdGlvbikpIHsKICAgICAgICAgICAgJERlZmluaXRpb257JEZvcm1QYXJhbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkRm9ybVBhcmFtICkgfHwgJyc7CiAgICAgICAgfQogICAgICAgIGZvciBteSAkRm9ybVBhcmFtIChxdyhSb2xlSUQgRGVmaW5pdGlvbikpIHsKICAgICAgICAgICAgaWYgKCAhJERlZmluaXRpb257JEZvcm1QYXJhbX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRGb3JtUGFyYW0hIgogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFZhbGlkYXRlIFlBTUwgY29kZSBieSBjb252ZXJ0aW5nIGl0IHRvIFBlcmwuCiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICREZWZpbml0aW9ue0RlZmluaXRpb259LAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbiB1bmxlc3MgcmVmICREZWZpbml0aW9uUmVmIGVxICdIQVNIJzsKCiAgICAgICAgIyBhZGQgdG8gZGF0YWJhc2UKICAgICAgICBteSAkUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgICAgICAlRGVmaW5pdGlvbiwKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICApOwoKICAgICAgICAjIGRpc3BsYXkgY2hhbmdlIHNjcmVlbiB3aXRoIGVycm9yIGlmIGNoZWNrIGZhaWxlZAogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFJlc3VsdCkgJiYgJFJlc3VsdC0+e0Vycm9yfSApIHsKCiAgICAgICAgICAgICMgc2hvdyBzaWRlYmFyLCBhY3RpdmF0ZSB0aGUgJ092ZXJ2aWV3JyBibG9jawogICAgICAgICAgICAkU2VsZi0+X1Nob3dTaWRlYmFyKAogICAgICAgICAgICAgICAgT3JpZ2luYWwgICAgID0+IFwlUGFyYW0sCiAgICAgICAgICAgICAgICBDbGFzc0xpc3QgICAgPT4gJENsYXNzTGlzdCwKICAgICAgICAgICAgICAgIFJvbGVMaXN0ICAgICA9PiAkUm9sZUxpc3QsCiAgICAgICAgICAgICAgICBSb2xlU2VsZWN0ZWQgPT4gewogICAgICAgICAgICAgICAgICAgIElEICAgPT4gJERlZmluaXRpb257Um9sZUlEfSwKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRSb2xlTGlzdC0+eyAkRGVmaW5pdGlvbntSb2xlSUR9IH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgRWRpdCAgICAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgU2hvd092ZXJ2aWV3TGluayA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0CiAgICAgICAgICAgIG15ICRFZGl0b3JSb3dzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpLT57RWRpdG9yUm93c30gfHwgMzA7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUm9sZURlZmluaXRpb25DaGFuZ2UnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJURlZmluaXRpb24sCiAgICAgICAgICAgICAgICAgICAgRXJyb3IgICAgICAgID0+ICRSZXN1bHQtPntFcnJvcn0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JBcmcxICAgID0+ICRSZXN1bHQtPntFcnJvckFyZ3N9LT5bMF0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JBcmcyICAgID0+ICRSZXN1bHQtPntFcnJvckFyZ3N9LT5bMV0sCiAgICAgICAgICAgICAgICAgICAgRXJyb3JDbGFzc2VzID0+ICdTZXJ2ZXJFcnJvciBFcnJvcicsCiAgICAgICAgICAgICAgICAgICAgUm9sZUlEICAgICAgID0+ICREZWZpbml0aW9ue1JvbGVJRH0sCiAgICAgICAgICAgICAgICAgICAgUm9sZSAgICAgICAgID0+ICRSb2xlTGlzdC0+eyAkRGVmaW5pdGlvbntSb2xlSUR9IH0sCiAgICAgICAgICAgICAgICAgICAgUm93cyAgICAgICAgID0+ICRFZGl0b3JSb3dzLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgZ2VuZXJhdGUgb3V0cHV0CiAgICAgICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+SGVhZGVyLAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+TmF2aWdhdGlvbkJhciwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FkbWluSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlcjsKICAgICAgICB9CgogICAgICAgIG15ICRDb250aW51ZUFmdGVyU2F2ZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb250aW51ZUFmdGVyU2F2ZScgKTsKICAgICAgICBpZiAoJENvbnRpbnVlQWZ0ZXJTYXZlKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5SZWRpcmVjdCgKICAgICAgICAgICAgICAgIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259O1N1YmFjdGlvbj1Sb2xlRGVmaW5pdGlvbkNoYW5nZTtSb2xlSUQ9JERlZmluaXRpb257Um9sZUlEfSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoIE9QID0+ICJBY3Rpb249JFNlbGYtPntBY3Rpb259IiApOwogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2xhc3MgZXhwb3J0CiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQ2xhc3NFeHBvcnQnICkgewoKICAgICAgICBteSBAQ2xhc3NJRExpc3QgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnRXhwb3J0SUQnICk7CgogICAgICAgICMgZXhwb3J0IHRoZSBjbGFzc2VzIHRvIGEgWUFNTCBzdHJpbmcKICAgICAgICBteSAkWUFNTENvbnRlbnQgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q2xhc3NFeHBvcnQoIEl0ZW1JRExpc3QgPT4gXEBDbGFzc0lETGlzdCApOwoKICAgICAgICBpZiAoICEkWUFNTENvbnRlbnQgKSB7CgogICAgICAgICAgICAjIHNob3cgdGhlIGVycm9yIHNjcmVlbgogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+ICdDbGFzcyBleHBvcnQgZmFpbGVkLicsCiAgICAgICAgICAgICAgICBDb21tZW50ID0+ICdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PScgLiAkTGF5b3V0T2JqZWN0LT57Q2hhcnNldH0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRZQU1MQ29udGVudCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2F0dGFjaG1lbnQnLAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAiRXhwb3J0Q2xhc3MueW1sIiwKICAgICAgICAgICAgTm9DYWNoZSAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJEhUTUw7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgIyBjb25maWcgaXRlbSBjbGFzcyBvdmVydmlldyBpcyB0aGUgZGVmYXVsdAogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgaWYgKDEpIHsKCiAgICAgICAgIyBzaG93IHNpZGViYXIsIGFjdGl2YXRlIHRoZSAnT3ZlcnZpZXcnIGJsb2NrCiAgICAgICAgJFNlbGYtPl9TaG93U2lkZWJhcigKICAgICAgICAgICAgT3JpZ2luYWwgICAgICAgICA9PiBcJVBhcmFtLAogICAgICAgICAgICBDbGFzc0xpc3QgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIFJvbGVMaXN0ICAgICAgICAgPT4gJFJvbGVMaXN0LAogICAgICAgICAgICBTaG93T3ZlcnZpZXdMaW5rID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyBvdXRwdXQgb3ZlcnZpZXcgcmVzdWx0LCBmb3Igcm9sZXMgYW5kIGRlZmluaXRpb25zCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TGlzdCcsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRDbGFzc0lEICggc29ydCB7ICRDbGFzc0xpc3QtPnskYX0gY21wICRDbGFzc0xpc3QtPnskYn0gfSBrZXlzICRDbGFzc0xpc3QtPiUqICkgewoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld0RlZmluaXRpb25MaXN0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICAgICAgTmFtZSAgICA9PiAkQ2xhc3NMaXN0LT57JENsYXNzSUR9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkUm9sZUlEICggc29ydCB7ICRSb2xlTGlzdC0+eyRhfSBjbXAgJFJvbGVMaXN0LT57JGJ9IH0ga2V5cyAkUm9sZUxpc3QtPiUqICkgewoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld1JvbGVMaXN0Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFJvbGVJRCA9PiAkUm9sZUlELAogICAgICAgICAgICAgICAgICAgIE5hbWUgICA9PiAkUm9sZUxpc3QtPnskUm9sZUlEfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIG91dHB1dAogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWRtaW5JVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFBhcmFte09yaWdpbmFsfSwKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJExheW91dE9iamVjdC0+Rm9vdGVyOwogICAgfQp9CgpzdWIgX1Nob3dTaWRlYmFyIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJExheW91dE9iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkQ2xhc3NEZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyBnZW5lcmF0ZSBSb2xlT3B0aW9uU3RyZywgQ2xhc3NPcHRpb25TdHJnIGFuZCBDbGFzc09wdGlvbk11bHRTdHJnIHdoaWNoIGFyZSBuZWVkZWQgZm9yIHRoZSBzaWRlYm94CiAgICBteSAkUm9sZUlEICAgICAgICAgPSAkUGFyYW17Um9sZVNlbGVjdGVkfSA/ICRQYXJhbXtSb2xlU2VsZWN0ZWR9LT57SUR9IDogJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JvbGVJRCcgKTsKICAgIG15ICRSb2xlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkUGFyYW17Um9sZUxpc3R9LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnUm9sZUlEJywKICAgICAgICBTZWxlY3RlZElEICAgPT4gJFJvbGVJRCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwogICAgbXkgJENsYXNzSUQgICAgICAgICA9ICRQYXJhbXtDbGFzc1NlbGVjdGVkfSA/ICRQYXJhbXtDbGFzc1NlbGVjdGVkfS0+e0lEfSA6ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdDbGFzc0lEJyApOwogICAgbXkgJENsYXNzT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIERhdGEgICAgICAgICA9PiAkUGFyYW17Q2xhc3NMaXN0fSwKICAgICAgICBOYW1lICAgICAgICAgPT4gJ0NsYXNzSUQnLAogICAgICAgIFNlbGVjdGVkSUQgICA9PiAkQ2xhc3NJRCwKICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICApOwoKICAgIG15IEBFeHBvcnRJRHMgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAnRXhwb3J0SUQnICk7CiAgICBteSAlQ2xhc3NMaXN0Rm9yTXVsdFNlbDsKICAgIGZvciBteSAkQ2xhc3NJRCAoIGtleXMgJXsgJFBhcmFte0NsYXNzTGlzdH0gfSApIHsKICAgICAgICBteSAkSGFzQ29udGVudCA9ICV7ICRDbGFzc0RlZmluaXRpb24tPkRlZmluaXRpb25HZXQoIENsYXNzSUQgPT4gJENsYXNzSUQgKSB9OwogICAgICAgIGlmICgkSGFzQ29udGVudCkgewogICAgICAgICAgICAkQ2xhc3NMaXN0Rm9yTXVsdFNlbHskQ2xhc3NJRH0gPSAkUGFyYW17Q2xhc3NMaXN0fS0+eyRDbGFzc0lEfTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENsYXNzT3B0aW9uTXVsdFN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJUNsYXNzTGlzdEZvck11bHRTZWwsCiAgICAgICAgICAgICRQYXJhbXtSb2xlTGlzdH0tPiUqLAogICAgICAgIH0sCiAgICAgICAgTmFtZSAgICAgICAgPT4gJ0V4cG9ydElEJywKICAgICAgICBTZWxlY3RlZElEICA9PiBcQEV4cG9ydElEcywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIENsYXNzICAgICAgID0+ICdNb2Rlcm5pemUgVmFsaWRhdGVfUmVxdWlyZWQnLAogICAgICAgIE11bHRpcGxlICAgID0+IDEsCiAgICApOwoKICAgICMgdGhpcyB3aWxsIGJlIHBhc3NlZCB0byB0aGUgT3ZlcnZpZXcgYmxvY2sKICAgIG15ICVCbG9ja0RhdGEgPSAoCiAgICAgICAgUm9sZU9wdGlvblN0cmcgICAgICA9PiAkUm9sZU9wdGlvblN0cmcsCiAgICAgICAgQ2xhc3NPcHRpb25TdHJnICAgICA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgIENsYXNzT3B0aW9uTXVsdFN0cmcgPT4gJENsYXNzT3B0aW9uTXVsdFN0cmcsCiAgICAgICAgRXhhbXBsZUNsYXNzTGlzdCAgICA9PiAkUGFyYW17T3JpZ2luYWx9LT57RXhhbXBsZUNsYXNzTGlzdH0sCiAgICApOwoKICAgICMgdGhlcmUgbWlnaHQgYmUgYWRkaXRpb25hbCBkYXRhIGZvciB0aGUgT3ZlcnZpZXcgYmxvY2sKICAgIEtFWToKICAgIGZvciBteSAkS2V5IChxdyhDbGFzc1NlbGVjdGVkIENsYXNzVmVyc2lvblNlbGVjdGVkIFJvbGVTZWxlY3RlZCBSb2xlVmVyc2lvblNlbGVjdGVkIEVkaXQpKSB7CiAgICAgICAgbmV4dCBLRVkgdW5sZXNzIGRlZmluZWQgJFBhcmFteyRLZXl9OwoKICAgICAgICAkQmxvY2tEYXRheyRLZXl9ID0gJFBhcmFteyRLZXl9OwogICAgfQoKICAgICMgdGhlIE92ZXJ2aWV3IGJsb2NrIGlzIHRoZSBjb21wbGV0ZSBwYWdlCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdPdmVydmlldycsCiAgICAgICAgRGF0YSA9PiBcJUJsb2NrRGF0YSwKICAgICk7CgogICAgaWYgKCAkUGFyYW17U2hvd092ZXJ2aWV3TGlua30gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FjdGlvbk92ZXJ2aWV3JywKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAxOwp9CgoxOwo=</File>
        <File Location="Kernel/Modules/AgentITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+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+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiBbICdwcmVwcm9kdWN0aXZlJywgJ3Byb2R1Y3RpdmUnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzZXQgdGhlIGRlcGxveW1lbnQgc3RhdGUgSURzIHBhcmFtZXRlciBmb3IgdGhlIHNlYXJjaAogICAgbXkgJERlcGxTdGF0ZUlEczsKICAgIGZvciBteSAkRGVwbFN0YXRlS2V5ICggc29ydCBrZXlzICV7JFN0YXRlTGlzdH0gKSB7CiAgICAgICAgcHVzaCBAeyREZXBsU3RhdGVJRHN9LCAkRGVwbFN0YXRlS2V5OwogICAgfQoKICAgICMgdmlld2FibGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15IEBWaWV3YWJsZURlcGxTdGF0ZUlEcyA9IGtleXMgJXsKICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICApCiAgICB9OwoKICAgICMgZ2V0IHBlcm1pc3Npb25zCiAgICBteSAkUGVybWlzc2lvbiA9ICdydyc7CgogICAgIyBzb3J0IG9uIGRlZmF1bHQgYnkgdXNpbmcgYm90aCAoUHJpb3JpdHksIEFnZSkgZWxzZSB1c2Ugb25seSBvbmUgc29ydCBhcmd1bWVudAogICAgbXkgJVNvcnQ7CgogICAgIyBnZXQgaWYgc2VhcmNoIHJlc3VsdCBzaG91bGQgYmUgcHJlLXNvcnRlZCBieSBwcmlvcml0eQogICAgbXkgJFByZVNvcnRCeVByaW9yaXR5ID0gJENvbmZpZy0+eydQcmVTb3J0OjpCeVByaW9yaXR5J307CiAgICBpZiAoICEkUHJlU29ydEJ5UHJpb3JpdHkgKSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gJFNvcnRCeSwKICAgICAgICAgICAgT3JkZXJCeSA9PiAkT3JkZXJCeSwKICAgICAgICApOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJVNvcnQgPSAoCiAgICAgICAgICAgIFNvcnRCeSAgPT4gWyAnUHJpb3JpdHknLCAkU29ydEJ5IF0sCiAgICAgICAgICAgIE9yZGVyQnkgPT4gWyAnRG93bicsICAgICAkT3JkZXJCeSBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBteSBjb25maWcgaXRlbSBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgIyB0byBzdG9yZSB0aGUgTmF2QmFyIGZpbHRlcnMKICAgIG15ICVGaWx0ZXJzOwogICAgbXkgJUNhdGVnb3J5MkNsYXNzSUQ7CgogICAgQ0xBU1NJRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkVHJhbnNsYXRlZENsYXNzTGlzdHskYX0gY21wICRUcmFuc2xhdGVkQ2xhc3NMaXN0eyRifSB9IGtleXMgJVRyYW5zbGF0ZWRDbGFzc0xpc3QgKSB7CgogICAgICAgICMgc2hvdyBtZW51IGxpbmsgb25seSBpZiB1c2VyIGhhcyBhY2Nlc3MgcmlnaHRzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBUeXBlICAgID0+ICRDb25maWctPntQZXJtaXNzaW9ufSwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTSUQgaWYgISRIYXNBY2Nlc3M7CgogICAgICAgICMgZmV0Y2ggY2xhc3MgcHJlZmVyZW5jZXMgdG8gcmV0cmlldmUgY2F0ZWdvcmllcyBmb3IgY2xhc3MKICAgICAgICBteSAlQ2xhc3NQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRDbGFzc0lELAogICAgICAgICk7CgogICAgICAgIG5leHQgQ0xBU1NJRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkQ2xhc3NQcmVmZXJlbmNlc3tDYXRlZ29yaWVzfSApOwoKICAgICAgICBmb3IgbXkgJENhdGVnb3J5ICggJENsYXNzUHJlZmVyZW5jZXN7Q2F0ZWdvcmllc30tPkAqICkgewogICAgICAgICAgICBteSAkQ2F0ZWdvcnlJRCA9ICRSZXZlcnNlQ2F0ZWdvcnlMaXN0eyAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENhdGVnb3J5KSB9OwogICAgICAgICAgICBwdXNoIEB7ICRDYXRlZ29yeTJDbGFzc0lEeyRDYXRlZ29yeUlEfSB9LCAkQ2xhc3NJRDsKICAgICAgICB9CiAgICB9CgogICAgIyBvcmRlciB0aGUgY2F0ZWdvcnkgZmlsdGVycyBhbmQgLSBpZiBub3QgeWV0IHNldCAtIHNlbGVjdCB0aGUgY2F0ZWdwcnkgc2hvd24KICAgIG15ICVDYXRlZ29yeUZpbHRlcnM7CiAgICB7CiAgICAgICAgbXkgQFNvcnRlZENhdGVnb3JpZXMgPSBzb3J0IHsgJFRyYW5zbGF0ZWRDYXRlZ29yeUxpc3R7JGF9IGNtcCAkVHJhbnNsYXRlZENhdGVnb3J5TGlzdHskYn0gfSBrZXlzICVDYXRlZ29yeTJDbGFzc0lEOwoKICAgICAgICBteSAkUHJpbyA9IDI7CiAgICAgICAgJUNhdGVnb3J5RmlsdGVycyA9IG1hcCB7CiAgICAgICAgICAgICRfID0+IHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFRyYW5zbGF0ZWRDYXRlZ29yeUxpc3R7JF99LAogICAgICAgICAgICAgICAgUHJpbyA9PiAkUHJpbysrLAogICAgICAgICAgICB9CiAgICAgICAgfSBAU29ydGVkQ2F0ZWdvcmllczsKCiAgICAgICAgaWYgKCAkRGVmYXVsdENhdGVnb3J5SUQgJiYgJENhdGVnb3J5RmlsdGVyc3skRGVmYXVsdENhdGVnb3J5SUR9ICkgewogICAgICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXJzeyREZWZhdWx0Q2F0ZWdvcnlJRH17UHJpb30gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aGUgY2xhc3MgZmlsdGVycyBmb3IgdGhlIHNlbGVjdGVkIGNhdGVnb3J5CiAgICBteSAkQ291bnRUb3RhbCA9IDA7CiAgICBteSBAQWxsQ3VycmVudENsYXNzZXM7CiAgICBpZiAoJENhdGVnb3J5RmlsdGVyKSB7CgogICAgICAgIG15ICRQcmlvID0gMjsKICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IHsgJFRyYW5zbGF0ZWRDbGFzc0xpc3R7JGF9IGNtcCAkVHJhbnNsYXRlZENsYXNzTGlzdHskYn0gfSAkQ2F0ZWdvcnkyQ2xhc3NJRHskQ2F0ZWdvcnlGaWx0ZXJ9LT5AKiApIHsKICAgICAgICAgICAgbXkgJENvdW50Q2xhc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc0lEXSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiAkRGVwbFN0YXRlSURzLAogICAgICAgICAgICAgICAgTGltaXQgICAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgUGVybWlzc2lvbiAgID0+ICRQZXJtaXNzaW9uLAogICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIFJlc3VsdCAgICAgICA9PiAnQ09VTlQnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ291bnRUb3RhbCArPSAkQ291bnRDbGFzczsKCiAgICAgICAgICAgIHB1c2ggQEFsbEN1cnJlbnRDbGFzc2VzLCAkQ2xhc3NJRDsKCiAgICAgICAgICAgICMgYWRkIGZpbHRlciB3aXRoIHBhcmFtcyBmb3IgdGhlIHNlYXJjaCBtZXRob2QKICAgICAgICAgICAgJEZpbHRlcnN7JENsYXNzSUR9ID0gewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRUcmFuc2xhdGVkQ2xhc3NMaXN0eyRDbGFzc0lEfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAkUHJpbysrLAogICAgICAgICAgICAgICAgQ291bnQgID0+ICRDb3VudENsYXNzLAogICAgICAgICAgICAgICAgU2VhcmNoID0+IHsKICAgICAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gWyRDbGFzc0lEXSwKICAgICAgICAgICAgICAgICAgICBEZXBsU3RhdGVJRHMgPT4gJERlcGxTdGF0ZUlEcywKICAgICAgICAgICAgICAgICAgICAlU29ydCwKICAgICAgICAgICAgICAgICAgICBMaW1pdCAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgICAgIFBlcm1pc3Npb24gPT4gJFBlcm1pc3Npb24sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGFkZCAiYWxsIiBmaWx0ZXIgaWYgdGhlcmUgaXMgbm90IG9ubHkgb25lIGN1cnJlbnQgZmlsdGVyLCBzZXQgdGhlIGZpbHRlciBpZiBub3QgcHJvdmlkZWQKICAgIGlmICggc2NhbGFyIGtleXMgJUZpbHRlcnMgPT0gMSApIHsKICAgICAgICAoJEZpbHRlcikgPSBrZXlzICVGaWx0ZXJzOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEZpbHRlcnN7QWxsfSA9IHsKICAgICAgICAgICAgTmFtZSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQWxsJyksCiAgICAgICAgICAgIFByaW8gICA9PiAxLAogICAgICAgICAgICBDb3VudCAgPT4gJENvdW50VG90YWwsCiAgICAgICAgICAgIFNlYXJjaCA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEcyAgICAgPT4gXEBBbGxDdXJyZW50Q2xhc3NlcywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZUlEcyA9PiAkRGVwbFN0YXRlSURzLAogICAgICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgICAgICAgICBMaW1pdCAgICAgID0+ICRTZWxmLT57U2VhcmNoTGltaXR9LAogICAgICAgICAgICAgICAgUGVybWlzc2lvbiA9PiAkUGVybWlzc2lvbiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICB9LAogICAgICAgIH07CgogICAgICAgIGlmICggISRGaWx0ZXIgfHwgISRGaWx0ZXJzeyRGaWx0ZXJ9ICkgewogICAgICAgICAgICAkRmlsdGVyID0gJ0FsbCc7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRWaWV3ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1ZpZXcnICkgfHwgJyc7CgogICAgIyBsb29rdXAgbGF0ZXN0IHVzZWQgdmlldyBtb2RlCiAgICBpZiAoICEkVmlldyAmJiAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAkVmlldyA9ICRTZWxmLT57ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRTZWxmLT57QWN0aW9ufSB9OwogICAgfQoKICAgICMgb3RoZXJ3aXNlIHVzZSBQcmV2aWV3IGFzIGRlZmF1bHQgYXMgaW4gTGF5b3V0Q29uZmlnSXRlbQogICAgJFZpZXcgfHw9ICdTbWFsbCc7CgogICAgIyBDaGVjayBpZiBzZWxlY3RlZCB2aWV3IGlzIGF2YWlsYWJsZS4KICAgIG15ICRCYWNrZW5kcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+e1Nlc3Npb259eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CgogICAgIyBkbyBzaG93biBjb25maWcgaXRlbSBsb29rdXAKICAgIG15ICRMaW1pdCA9IDFfMDAwOwoKICAgIG15ICRFbGVtZW50Q2hhbmdlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbGVtZW50Q2hhbmdlZCcgKSB8fCAnJzsKICAgIG15ICRIZWFkZXJDb2x1bW4gICA9ICRFbGVtZW50Q2hhbmdlZDsKICAgICRIZWFkZXJDb2x1bW4gPX4gc3tcQSBDb2x1bW5GaWx0ZXIgfXt9bXN4ZzsKCiAgICAjIGdldCBkYXRhICh2aWV3YWJsZSBjb25maWcgaXRlbXMuLi4pCiAgICAjIHNlYXJjaCBhbGwgY29uZmlnIGl0ZW1zCiAgICBteSBAVmlld2FibGVDb25maWdJdGVtczsKICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgaWYgKCBAVmlld2FibGVEZXBsU3RhdGVJRHMgJiYgQEFsbEN1cnJlbnRDbGFzc2VzICkgewoKICAgICAgICAjIGdldCBjb25maWcgaXRlbSB2YWx1ZXMKICAgICAgICBpZiAoCiAgICAgICAgICAgICFJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoJEhlYWRlckNvbHVtbikKICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ09ubHlWYWx1ZXNPbkNvbmZpZ0l0ZW0nKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJ9LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgIExpbWl0ICA9PiAkTGltaXQsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRTdGFydCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICAgICAgICAgQFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJ9LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgIExpbWl0ICA9PiAkU3RhcnQgKyAkUGFnZVNob3duIC0gMSwKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICB9CgogICAgIyBUT0RPIE1heWJlIHRoZXJlIGlzIGEgbW9yZSBlbGVnYW50IHdheSB0byBkbyB0aGlzPwogICAgJFNlbGYtPntGaWx0ZXJ9ICAgICAgICAgID0gJEZpbHRlcjsKICAgICRTZWxmLT57RmlsdGVyc30gICAgICAgICA9IFwlRmlsdGVyczsKICAgICRTZWxmLT57Q2F0ZWdvcnlGaWx0ZXJzfSA9IFwlQ2F0ZWdvcnlGaWx0ZXJzOwogICAgJFNlbGYtPntDYXRlZ29yeUZpbHRlcn0gID0gJENhdGVnb3J5RmlsdGVyOwoKICAgIGlmICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdBSkFYRmlsdGVyVXBkYXRlJyApIHsKCiAgICAgICAgbXkgJEZpbHRlckNvbnRlbnQgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgICAgICBGaWx0ZXJDb250ZW50T25seSAgICAgPT4gMSwKICAgICAgICAgICAgSGVhZGVyQ29sdW1uICAgICAgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgIEVsZW1lbnRDaGFuZ2VkICAgICAgICA9PiAkRWxlbWVudENoYW5nZWQsCiAgICAgICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtJywKICAgICAgICAgICAgRW52ICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLAogICAgICAgICAgICBWaWV3ICAgICAgICAgICAgICAgICAgPT4gJFZpZXcsCiAgICAgICAgICAgIEVuYWJsZUNvbHVtbkZpbHRlcnMgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIGlmICggISRGaWx0ZXJDb250ZW50ICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICdDYW5cJ3QgZ2V0IGZpbHRlciBjb250ZW50IGRhdGEgb2YgJXMhJywgJEhlYWRlckNvbHVtbiApLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9qc29uJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJEZpbHRlckNvbnRlbnQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBzdG9yZSBjb2x1bW4gZmlsdGVycwogICAgICAgIG15ICRTdG9yZWRGaWx0ZXJzID0gXCVDb2x1bW5GaWx0ZXI7CgogICAgICAgIG15ICRTdG9yZWRGaWx0ZXJzS2V5ID0gJ1VzZXJTdG9yZWRGaWx0ZXJDb2x1bW5zLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CiAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICBLZXkgICAgPT4gJFN0b3JlZEZpbHRlcnNLZXksCiAgICAgICAgICAgIFZhbHVlICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+ICRTdG9yZWRGaWx0ZXJzICksCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlTmF2QmFyRmlsdGVyID0gbWFwIHsKICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXJzeyRffXtQcmlvfSA9PiB7CiAgICAgICAgICAgIENhdGVnb3J5RmlsdGVyID0+ICRfLAogICAgICAgICAgICAkQ2F0ZWdvcnlGaWx0ZXJzeyRffS0+JSosCiAgICAgICAgfQogICAgfSBrZXlzICVDYXRlZ29yeUZpbHRlcnM7CgogICAgbXkgJUNsYXNzRmlsdGVyID0gbWFwIHsKICAgICAgICAkRmlsdGVyc3skX317UHJpb30gPT4gewogICAgICAgICAgICBGaWx0ZXIgPT4gJF8sCiAgICAgICAgICAgICRGaWx0ZXJzeyRffS0+JSosCiAgICAgICAgfQogICAgfSBrZXlzICVGaWx0ZXJzOwoKICAgIG15ICRDb2x1bW5GaWx0ZXJMaW5rID0gJyc7CiAgICBDT0xVTU5OQU1FOgogICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCBrZXlzICVHZXRDb2x1bW5GaWx0ZXIgKSB7CgogICAgICAgIG5leHQgQ09MVU1OTkFNRSB1bmxlc3MgJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIHVubGVzcyBkZWZpbmVkICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9OwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSBlcSAnJzsKCiAgICAgICAgJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAgICAgLj0gJzsnIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgLiAnPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSApOwogICAgfQoKICAgIG15ICRDYXRlZ29yeUZpbHRlclVSSSA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DYXRlZ29yeUZpbHRlciB8IHVyaSAlXScsCiAgICAgICAgRGF0YSAgICAgPT4gewogICAgICAgICAgICBDYXRlZ29yeUZpbHRlciA9PiAkQ2F0ZWdvcnlGaWx0ZXIsCiAgICAgICAgfSwKICAgICk7CiAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAnO0NhdGVnb3J5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRDYXRlZ29yeUZpbHRlclVSSSApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAuICc7JzsKCiAgICBteSAkTGlua1NvcnQgPSAnVmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnO0NhdGVnb3J5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRDYXRlZ29yeUZpbHRlclVSSSApCiAgICAgICAgLiAnO0ZpbHRlcj0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkRmlsdGVyICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExpbmtGaWx0ZXIgPSAnU29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTb3J0QnkgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRPcmRlckJ5ICkKICAgICAgICAuICc7Vmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnOyc7CgogICAgbXkgJExhc3RDb2x1bW5GaWx0ZXIgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTGFzdENvbHVtbkZpbHRlcicgKSB8fCAnJzsKCiAgICBpZiAoICEkTGFzdENvbHVtbkZpbHRlciAmJiAkQ29sdW1uRmlsdGVyTGluayApIHsKCiAgICAgICAgIyBpcyBwbGFubmVkIHRvIGhhdmUgYSBsaW5rIHRvIGdvIGJhY2sgaGVyZQogICAgICAgICRMYXN0Q29sdW1uRmlsdGVyID0gMTsKICAgIH0KCiAgICAjIHNob3cgY29uZmlnIGl0ZW1zCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtTGlzdFNob3coCiAgICAgICAgRmlsdGVyICAgICAgICAgICAgICAgID0+ICRGaWx0ZXIsCiAgICAgICAgQ2F0ZWdvcnlGaWx0ZXIgICAgICAgID0+ICRDYXRlZ29yeUZpbHRlciwKICAgICAgICBGaWx0ZXJzICAgICAgICAgICAgICAgPT4gXCVDbGFzc0ZpbHRlciwKICAgICAgICBDYXRlZ29yeUZpbHRlcnMgICAgICAgPT4gXCVOYXZCYXJGaWx0ZXIsCiAgICAgICAgQ29uZmlnSXRlbUlEcyAgICAgICAgID0+IFxAVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gXEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMsCiAgICAgICAgR2V0Q29sdW1uRmlsdGVyICAgICAgID0+IFwlR2V0Q29sdW1uRmlsdGVyLAogICAgICAgIExhc3RDb2x1bW5GaWx0ZXIgICAgICA9PiAkTGFzdENvbHVtbkZpbHRlciwKICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFRvdGFsICAgICAgICAgICAgICAgICA9PiBzY2FsYXIgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBSZXF1ZXN0ZWRVUkwgICAgICAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgICAgIFZpZXcgICAgICAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICBCdWxrICAgICAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBUaXRsZU5hbWUgICAgICAgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdPdmVydmlldzogSVRTTSBDb25maWdJdGVtJyksCiAgICAgICAgVGl0bGVWYWx1ZSAgICAgICAgICAgID0+ICRTZWxmLT57RmlsdGVyc317JEZpbHRlcn17TmFtZX0sCiAgICAgICAgRW52ICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLAogICAgICAgIExpbmtQYWdlICAgICAgICAgICAgICA9PiAkTGlua1BhZ2UsCiAgICAgICAgTGlua1NvcnQgICAgICAgICAgICAgID0+ICRMaW5rU29ydCwKICAgICAgICBMaW5rRmlsdGVyICAgICAgICAgICAgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgIEVuYWJsZUNvbHVtbkZpbHRlcnMgICA9PiAxLAogICAgICAgIENvbHVtbkZpbHRlckZvcm0gICAgICA9PiB7CiAgICAgICAgICAgIEZpbHRlciAgID0+ICRGaWx0ZXIgICAgICAgICB8fCAnJywKICAgICAgICAgICAgQ2F0ZWdvcnkgPT4gJENhdGVnb3J5RmlsdGVyIHx8ICcnLAogICAgICAgIH0sCgogICAgICAgICMgZG8gbm90IHByaW50IHRoZSByZXN1bHQgZWFybGllciwgYnV0IHJldHVybiBjb21wbGV0ZSBjb250ZW50CiAgICAgICAgT3V0cHV0ID0+IDEsCiAgICApOwoKICAgICMgZ2V0IHBhZ2UgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpIGlmICRTZWxmLT57U3ViYWN0aW9ufSBuZSAnQUpBWEZpbHRlclVwZGF0ZSc7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==</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+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW0tPiUqLAogICAgICAgICAgICAgICAgICAgIERlZmluaXRpb25JRCA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25JRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZmV0Y2ggdXBkYXRlZCBjb25maWcgaXRlbSBkYXRhIHRvIHNlY3VyZSB2ZXJzaW9uIGlkIGJlaW5nIHByZXNlbnQKICAgICAgICAgICAgbXkgJE5ld0NvbmZpZ0l0ZW1EYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgd3JpdGUgdGhlIG5ldyBhdHRhY2htZW50cwogICAgICAgICAgICBBVFRBQ0hNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEF0dGFjaG1lbnQgKCB2YWx1ZXMgJU5ld0F0dGFjaG1lbnQgKSB7CgogICAgICAgICAgICAgICAgIyBhZGQgYXR0YWNobWVudAogICAgICAgICAgICAgICAgaWYgKCAkQXR0YWNobWVudC0+e0Rpc3Bvc2l0aW9ufSAmJiAkQXR0YWNobWVudC0+e0Rpc3Bvc2l0aW9ufSBlcSAnaW5saW5lJyApIHsKICAgICAgICAgICAgICAgICAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkTmV3Q29uZmlnSXRlbURhdGEtPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgYWxzbyB3cml0ZSBhdHRhY2htZW50cyB0byBsYXN0IHZlcnNpb24gaWYgaXQgZGlmZmVycyBiZWNhdXNlIHdlIGRlbGV0ZWQgdGhlbSBwcmV2aW91c2x5CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0gJiYgJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9ICE9ICROZXdDb25maWdJdGVtRGF0YS0+e1ZlcnNpb25JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50QWRkKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJXskQXR0YWNobWVudH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RmF0YWxFcnJvcigpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRBZGQoCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEF0dGFjaG1lbnR9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgY2hlY2sgZXJyb3IKICAgICAgICAgICAgICAgICAgICBpZiAoICEkU3VjY2VzcyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkZhdGFsRXJyb3IoKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgcmVtb3ZlIGFsbCBmb3JtIGRhdGEKICAgICAgICAgICAgJEZvcm1DYWNoZU9iamVjdC0+Rm9ybUlEUmVtb3ZlKCBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9ICk7CgogICAgICAgICAgICAjIHJlZGlyZWN0IHRvIHpvb20gbWFzawogICAgICAgICAgICBteSAkU2NyZWVuVHlwZSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTY3JlZW5UeXBlJyApIHx8IDA7CiAgICAgICAgICAgIGlmICgkU2NyZWVuVHlwZSkgewoKICAgICAgICAgICAgICAgIG15ICRVUkwgPSAiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0iOwoKICAgICAgICAgICAgICAgICMgcmV0dXJuIHRvIG92ZXJ2aWV3IG9yIHNlYXJjaCByZXN1bHRzIGluc3RlYWQgaWYgY2FsbGVkIER1cGxpY2F0ZSBmcm9tIHJvdyBhY3Rpb24KICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1Nlc3Npb259e0xhc3RTY3JlZW5WaWV3fSBlcSAnQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW0nCiAgICAgICAgICAgICAgICAgICAgfHwgJFNlbGYtPntTZXNzaW9ufXtMYXN0U2NyZWVuVmlld30gPX4gbXtcQSBBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbSg/OiBTZWFyY2gpPzt9bXN4CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRVUkwgPSAkU2VsZi0+e1Nlc3Npb259e0xhc3RTY3JlZW5WaWV3fTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UG9wdXBDbG9zZSgKICAgICAgICAgICAgICAgICAgICBVUkwgPT4gJFVSTCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UmVkaXJlY3QoCiAgICAgICAgICAgICAgICAgICAgT1AgPT4gIkFjdGlvbj1BZ2VudElUU01Db25maWdJdGVtWm9vbTtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnQUpBWFVwZGF0ZScgKSB7CiAgICAgICAgbXkgJEVsZW1lbnRDaGFuZ2VkICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdFbGVtZW50Q2hhbmdlZCcgKSB8fCAnJzsKICAgICAgICBteSAlQ2hhbmdlZEVsZW1lbnRzID0gJEVsZW1lbnRDaGFuZ2VkID8gKCAkRWxlbWVudENoYW5nZWQgPT4gMSApIDogKCk7CiAgICAgICAgbXkgJExvb3BQcm90ZWN0aW9uICA9IDEwMDsKCiAgICAgICAgIyBnZXQgdmFsdWVzIGFuZCB2aXNpYmlsaXR5IG9mIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJUR5bkZpZWxkU3RhdGVzID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5HZXRGaWVsZFN0YXRlcygKICAgICAgICAgICAgQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9PiAkQ29uZmlnSXRlbU9iamVjdCwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyAgICAgICAgICAgICA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sCiAgICAgICAgICAgIER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPT4gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QsCiAgICAgICAgICAgIENoYW5nZWRFbGVtZW50cyAgICAgICAgICAgPT4gXCVDaGFuZ2VkRWxlbWVudHMsICAgICAgICAgICAgICAgICMgb3B0aW9uYWwgdG8gcmVkdWNlIEFDTCBldmFsdWF0aW9uCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIEZvcm1JRCAgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICBHZXRQYXJhbSAgICAgICAgICAgICAgICAgID0+IHslR2V0UGFyYW19LAogICAgICAgICAgICBBdXRvc2VsZWN0ICAgICAgICAgICAgICAgID0+ICRBdXRvc2VsZWN0LAogICAgICAgICAgICBBQ0xQcmVzZWxlY3Rpb24gICAgICAgICAgID0+ICRBQ0xQcmVzZWxlY3Rpb24sCiAgICAgICAgICAgIExvb3BQcm90ZWN0aW9uICAgICAgICAgICAgPT4gXCRMb29wUHJvdGVjdGlvbiwKICAgICAgICApOwoKICAgICAgICAjIHN0b3JlIG5ldyB2YWx1ZXMKICAgICAgICAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfSA9IHsKICAgICAgICAgICAgJXsgJEdldFBhcmFte0R5bmFtaWNGaWVsZH0gfSwKICAgICAgICAgICAgJXsgJER5bkZpZWxkU3RhdGVze05ld1ZhbHVlc30gfSwKICAgICAgICB9OwoKICAgICAgICAjIHVwZGF0ZSBEeW5hbWljIEZpZWxkcyBQb3NzaWJsZSBWYWx1ZXMgdmlhIEFKQVgKICAgICAgICBteSBARHluYW1pY0ZpZWxkQUpBWDsKCiAgICAgICAgIyBjeWNsZSB0aHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkTmFtZSAoIGtleXMgJXsgJER5bkZpZWxkU3RhdGVze0ZpZWxkc30gfSApIHsKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskTmFtZX07CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9ICYmIHJlZiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn0gZXEgJ0FSUkFZJyApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkaSAoIDAgLi4gJCN7ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifSB9ICkgewogICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICAgICAgPyAoICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifVskaV0gLy8gJycgKQogICAgICAgICAgICAgICAgICAgICAgICA6CiAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+IFsgJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9WyRpXSBdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgID0+ICROYW1lIC4gJ18nIC4gJGksCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn1bJGldLAogICAgICAgICAgICAgICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBhZGQgdGVtcGxhdGUgdmFsdWUgZm9yIGtlZXBpbmcgdGVtcGxhdGVzIGluIGxpbmUgd2l0aCBBQ0xzCiAgICAgICAgICAgICAgICBpZiAoICEkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17Tm90QUNMUmVkdWNpYmxlfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkRGF0YVZhbHVlcyA9ICgKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICREeW5GaWVsZFN0YXRlc3tGaWVsZHN9eyROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9IC8vICcnIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgZHluYW1pYyBmaWVsZCB0byB0aGUgbGlzdCBvZiBmaWVsZHMgdG8gdXBkYXRlCiAgICAgICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX1RlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGFWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gLy8gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgID8gKCAkR2V0UGFyYW17RHluYW1pY0ZpZWxkfXsiRHluYW1pY0ZpZWxkXyROYW1lIn0gLy8gJycgKQogICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5CdWlsZFNlbGVjdGlvbkRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgICAgPT4gJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9eyJEeW5hbWljRmllbGRfJE5hbWUifSwKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgfHwgJER5bkZpZWxkU3RhdGVze0ZpZWxkc317JE5hbWV9e1Bvc3NpYmxlVmFsdWVzfQogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZQogICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkTmFtZSwKICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJEdldFBhcmFte0R5bmFtaWNGaWVsZH17IkR5bmFtaWNGaWVsZF8kTmFtZSJ9LAogICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICBNYXggICAgICAgICA9PiAxMDAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFNldEZpZWxkICggdmFsdWVzICREeW5GaWVsZFN0YXRlc3tTZXRzfS0+JSogKSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkU2V0RmllbGQtPntEeW5hbWljRmllbGRDb25maWd9OwoKICAgICAgICAgICAgIyB0aGUgZnJvbnRlbmQgbmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgaW5uZXIgZmllbGQgaW5jbHVkaW5nIGl0cyBpbmRleCBvciB0aGUgJ19UZW1wbGF0ZScgc3VmZml4CiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICRGcm9udGVuZE5hbWUgKCBrZXlzICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfS0+JSogKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSAmJiByZWYgJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkaSAoIDAgLi4gJCN7ICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERhdGFWYWx1ZXMgPSAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17Tm90QUNMUmVkdWNpYmxlfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAoICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX1bJGldIC8vICcnICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+QnVpbGRTZWxlY3Rpb25EYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiBbICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX1bJGldIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARHluYW1pY0ZpZWxkQUpBWCwgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJEZyb250ZW5kTmFtZSAuICJfJGkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gJERhdGFWYWx1ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkU2V0RmllbGQtPntWYWx1ZXN9eyRGcm9udGVuZE5hbWV9WyRpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57VHJhbnNsYXRhYmxlVmFsdWVzfSB8fCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBhZGQgdGVtcGxhdGUgdmFsdWUgZm9yIGtlZXBpbmcgdGVtcGxhdGVzIGluIGxpbmUgd2l0aCBBQ0xzCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgICAgPT4gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e1Bvc3NpYmxlVmFsdWVzfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gWyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9IC8vICcnIF0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30KICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgYWRkIGR5bmFtaWMgZmllbGQgdG8gdGhlIGxpc3Qgb2YgZmllbGRzIHRvIHVwZGF0ZQogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEeW5hbWljRmllbGRBSkFYLCB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX1RlbXBsYXRlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSAvLyAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uID0+ICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RyYW5zbGF0YWJsZVZhbHVlc30gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heCAgICAgICAgID0+IDEwMCwKICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICREYXRhVmFsdWVzID0gJFNldEZpZWxkLT57RmllbGRTdGF0ZXN9eyRGcm9udGVuZE5hbWV9e05vdEFDTFJlZHVjaWJsZX0KICAgICAgICAgICAgICAgICAgICA/ICggJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfSAvLyAnJyApCiAgICAgICAgICAgICAgICAgICAgOgogICAgICAgICAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uRGF0YUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgICAgID0+ICRTZXRGaWVsZC0+e0ZpZWxkU3RhdGVzfXskRnJvbnRlbmROYW1lfXtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFNldEZpZWxkLT57VmFsdWVzfXskRnJvbnRlbmROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB8fCAkU2V0RmllbGQtPntGaWVsZFN0YXRlc317JEZyb250ZW5kTmFtZX17UG9zc2libGVWYWx1ZXN9CiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGFkZCBkeW5hbWljIGZpZWxkIHRvIHRoZSBsaXN0IG9mIGZpZWxkcyB0byB1cGRhdGUKICAgICAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICA9PiAnRHluYW1pY0ZpZWxkXycgLiAkRnJvbnRlbmROYW1lLAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgID0+ICREYXRhVmFsdWVzLAogICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgID0+ICRTZXRGaWVsZC0+e1ZhbHVlc317JEZyb250ZW5kTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgVHJhbnNsYXRpb24gPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntUcmFuc2xhdGFibGVWYWx1ZXN9IHx8IDAsCiAgICAgICAgICAgICAgICAgICAgTWF4ICAgICAgICAgPT4gMTAwLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9ICkgKSB7CiAgICAgICAgICAgIHB1c2ggQER5bmFtaWNGaWVsZEFKQVgsIHsKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1Jlc3RyaWN0aW9uc19WaXNpYmlsaXR5JywKICAgICAgICAgICAgICAgIERhdGEgPT4gJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJEpTT04gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbkpTT04oCiAgICAgICAgICAgIFsKICAgICAgICAgICAgICAgIEBEeW5hbWljRmllbGRBSkFYLAogICAgICAgICAgICBdLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAnYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nIC4gJExheW91dE9iamVjdC0+e0NoYXJzZXR9LAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkSlNPTiwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgIE5vQ2FjaGUgICAgID0+IDEsCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSAkTG9vcFByb3RlY3Rpb24gPSAxMDA7CgogICAgICAgICMgZ2V0IHZhbHVlcyBhbmQgdmlzaWJpbGl0eSBvZiBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5GaWVsZFN0YXRlcyA9ICRGaWVsZFJlc3RyaWN0aW9uc09iamVjdC0+R2V0RmllbGRTdGF0ZXMoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1PYmplY3QgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1PYmplY3QsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgICAgICAgICAgICAgPT4gJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LAogICAgICAgICAgICBEeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0+ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGb3JtSUQgICAgICAgICAgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgICAgICA9PiB7JUdldFBhcmFtfSwKICAgICAgICAgICAgQXV0b3NlbGVjdCAgICAgICAgICAgICAgICA9PiAkQXV0b3NlbGVjdCwKICAgICAgICAgICAgQUNMUHJlc2VsZWN0aW9uICAgICAgICAgICA9PiAkQUNMUHJlc2VsZWN0aW9uLAogICAgICAgICAgICBMb29wUHJvdGVjdGlvbiAgICAgICAgICAgID0+IFwkTG9vcFByb3RlY3Rpb24sCiAgICAgICAgKTsKCiAgICAgICAgIyBzdG9yZSBuZXcgdmFsdWVzCiAgICAgICAgJEdldFBhcmFte0R5bmFtaWNGaWVsZH0gPSB7CiAgICAgICAgICAgICV7ICRHZXRQYXJhbXtEeW5hbWljRmllbGR9IH0sCiAgICAgICAgICAgICV7ICREeW5GaWVsZFN0YXRlc3tOZXdWYWx1ZXN9IH0sCiAgICAgICAgfTsKCiAgICAgICAgJUR5bmFtaWNGaWVsZFZpc2liaWxpdHkgICAgID0gJER5bkZpZWxkU3RhdGVze1Zpc2liaWxpdHl9LT4lKjsKICAgICAgICAlRHluYW1pY0ZpZWxkUG9zc2libGVWYWx1ZXMgPSBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyA9PiAkRHluRmllbGRTdGF0ZXN7RmllbGRzfXskX317UG9zc2libGVWYWx1ZXN9IH0ga2V5cyAkRHluRmllbGRTdGF0ZXN7RmllbGRzfS0+JSo7CiAgICB9CgogICAgbXkgJE5hbWVFZGl0YWJsZSAgID0gJE5hbWVNb2R1bGUgPyAwIDogMTsKICAgIG15ICRSb3dOYW1lSW52YWxpZCA9ICRDb25maWdJdGVtLT57TmFtZX0KCiAgICAgICAgIyBJZiBhIG5hbWUgZXhpc3RzIHRoZW4gbWFyayByZWdleCBhbmQgZHVwbGljYXRlIGVycm9ycy4KICAgICAgICA/ICggKCAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UgfHwgSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSA/ICdTZXJ2ZXJFcnJvcicgOiB1bmRlZiApCgogICAgICAgICMgSWYgdGhlIG5hbWUgZG9lcyBub3QgZXhpc3QgYnV0IHNob3VsZCBleGlzdCB0aGVuIG1hcmsgaXQuCiAgICAgICAgOiAoICggJFNlbGYtPntTdWJhY3Rpb259IGVxICdTYXZlJyAmJiAkTmFtZUVkaXRhYmxlICkgPyAnU2VydmVyRXJyb3InIDogdW5kZWYgKTsKCiAgICAjIG91dHB1dCBuYW1lIGJsb2NrCiAgICBpZiAoICRDb25maWdJdGVtLT57TmFtZX0gfHwgJE5hbWVFZGl0YWJsZSApIHsKCiAgICAgICAgIyBvdXRwdXQgbmFtZSBibG9jawogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dOYW1lJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICBSb3dOYW1lSW52YWxpZCA9PiAkUm93TmFtZUludmFsaWQsCiAgICAgICAgICAgICAgICBSZWFkb25seSAgICAgICA9PiAhJE5hbWVFZGl0YWJsZSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQoKICAgICMgc2hvdyBzcGVjaWZpYyBlcnJvcnMKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICMgYnVpbGQgYXJyYXkgd2l0aCBDSS1OdW1iZXJzCiAgICAgICAgbXkgQE5hbWVEdXBsaWNhdGVzQnlDSU51bWJlcjsKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIEB7JE5hbWVEdXBsaWNhdGVzfSApIHsKCiAgICAgICAgICAgICMgbG9va3VwIHRoZSBDSSBudW1iZXIKICAgICAgICAgICAgbXkgJENJTnVtYmVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHB1c2ggQE5hbWVEdXBsaWNhdGVzQnlDSU51bWJlciwgJENJTnVtYmVyOwogICAgICAgIH0KCiAgICAgICAgbXkgJER1cGxpY2F0ZVN0cmluZyA9IGpvaW4gJywgJywgQE5hbWVEdXBsaWNhdGVzQnlDSU51bWJlcjsKCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT57RGVidWd9ID4gMCApIHsKICAgICAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2RlYnVnJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgIlJlbmRlcmluZyBibG9jayBmb3IgZHVwbGljYXRlcyAoQ0ktTnVtYmVyczogJER1cGxpY2F0ZVN0cmluZykgZXJyb3IgbWVzc2FnZSIsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUm93TmFtZUVycm9yRHVwbGljYXRlcycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgRHVwbGljYXRlcyA9PiAkRHVwbGljYXRlU3RyaW5nLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoJENJTmFtZVJlZ2V4RXJyb3JNZXNzYWdlKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd05hbWVFcnJvclJlZ0V4JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBSZWdFeEVycm9yTWVzc2FnZSA9PiAkQ0lOYW1lUmVnZXhFcnJvck1lc3NhZ2UsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2lmICgkUm93TmFtZUludmFsaWQpIHsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPntEZWJ1Z30gPiAwICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlJlbmRlcmluZyBkZWZhdWx0IGVycm9yIGJsb2NrIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dOYW1lRXJyb3JEZWZhdWx0JywKICAgICAgICApOwogICAgfQoKICAgIG15ICRWZXJzaW9uU3RyaW5nRWRpdGFibGUgICA9ICRWZXJzaW9uU3RyaW5nTW9kdWxlID8gMCA6IDE7CiAgICBteSAkVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXMgPSBbXTsKICAgIG15ICRSb3dWZXJzaW9uU3RyaW5nSW52YWxpZCA9ICRDb25maWdJdGVtLT57VmVyc2lvblN0cmluZ30KCiAgICAgICAgIyBJZiBhIHZlcnNpb24gc3RyaW5nIGV4aXN0cyB0aGVuIG1hcmsgZHVwbGljYXRlIGVycm9ycy4KICAgICAgICA/ICggSXNBcnJheVJlZldpdGhEYXRhKCRWZXJzaW9uU3RyaW5nRHVwbGljYXRlcykgPyAnU2VydmVyRXJyb3InIDogdW5kZWYgKQoKICAgICAgICAjIElmIHRoZSB2ZXJzaW9uIHN0cmluZyBkb2VzIG5vdCBleGlzdCBidXQgc2hvdWxkIGV4aXN0IHRoZW4gbWFyayBpdC4KICAgICAgICA6ICggKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ1NhdmUnICYmICRWZXJzaW9uU3RyaW5nRWRpdGFibGUgKSA/ICdTZXJ2ZXJFcnJvcicgOiB1bmRlZiApOwoKICAgICMgb3V0cHV0IHZlcnNpb24gc3RyaW5nIGJsb2NrCiAgICBpZiAoJFZlcnNpb25TdHJpbmdFZGl0YWJsZSkgewoKICAgICAgICAjIG91dHB1dCB2ZXJzaW9uIHN0cmluZyBibG9jawogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSb3dWZXJzaW9uU3RyaW5nJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICBSb3dWZXJzaW9uU3RyaW5nSW52YWxpZCA9PiAkUm93VmVyc2lvblN0cmluZ0ludmFsaWQsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgc3BlY2lmaWMgZXJyb3JzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkVmVyc2lvblN0cmluZ0R1cGxpY2F0ZXMpICkgewoKICAgICAgICAjIGJ1aWxkIGFycmF5IHdpdGggQ0ktTnVtYmVycwogICAgICAgIG15IEBWZXJzaW9uU3RyaW5nRHVwbGljYXRlc0J5Q0lOdW1iZXI7CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyRWZXJzaW9uU3RyaW5nRHVwbGljYXRlc30gKSB7CgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgQ0kgbnVtYmVyCiAgICAgICAgICAgIG15ICRDSU51bWJlciA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBwdXNoIEBWZXJzaW9uU3RyaW5nRHVwbGljYXRlc0J5Q0lOdW1iZXIsICRDSU51bWJlcjsKICAgICAgICB9CgogICAgICAgIG15ICREdXBsaWNhdGVTdHJpbmcgPSBqb2luICcsICcsIEBWZXJzaW9uU3RyaW5nRHVwbGljYXRlc0J5Q0lOdW1iZXI7CgogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICJSZW5kZXJpbmcgYmxvY2sgZm9yIGR1cGxpY2F0ZXMgKENJLU51bWJlcnM6ICREdXBsaWNhdGVTdHJpbmcpIGVycm9yIG1lc3NhZ2UiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd1ZlcnNpb25TdHJpbmdFcnJvckR1cGxpY2F0ZXMnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIER1cGxpY2F0ZXMgPT4gJER1cGxpY2F0ZVN0cmluZywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCRSb3dWZXJzaW9uU3RyaW5nSW52YWxpZCkgewogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiUmVuZGVyaW5nIGRlZmF1bHQgZXJyb3IgYmxvY2siLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1Jvd1ZlcnNpb25TdHJpbmdFcnJvckRlZmF1bHQnLAogICAgICAgICk7CiAgICB9CgogICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgICMgb3V0cHV0IGRlcGxveW1lbnQgc3RhdGUgaW52YWxpZCBibG9jawogICAgbXkgJFJvd0RlcGxTdGF0ZUludmFsaWQgPSAnJzsKICAgIGlmICggISRDb25maWdJdGVtLT57RGVwbFN0YXRlSUR9ICYmICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CiAgICAgICAgJFJvd0RlcGxTdGF0ZUludmFsaWQgPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGdlbmVyYXRlIERlcGxTdGF0ZU9wdGlvblN0cmcKICAgIG15ICREZXBsU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICREZXBsU3RhdGVMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnRGVwbFN0YXRlSUQnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnRm9ybVVwZGF0ZSBWYWxpZGF0ZV9SZXF1aXJlZCBNb2Rlcm5pemUnIC4gJFJvd0RlcGxTdGF0ZUludmFsaWQsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtEZXBsU3RhdGVJRH0sCiAgICApOwoKICAgICMgb3V0cHV0IGRlcGxveW1lbnQgc3RhdGUgYmxvY2sKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ1Jvd0RlcGxTdGF0ZScsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIERlcGxTdGF0ZU9wdGlvblN0cmcgPT4gJERlcGxTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgbXkgJEluY2lTdGF0ZUxpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzICAgICAgID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIEZ1bmN0aW9uYWxpdHkgPT4gWyAnb3BlcmF0aW9uYWwnLCAnaW5jaWRlbnQnIF0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBvdXRwdXQgaW5jaWRlbnQgc3RhdGUgaW52YWxpZCBibG9jawogICAgbXkgJFJvd0luY2lTdGF0ZUludmFsaWQgPSAnJzsKICAgIGlmICggISRDb25maWdJdGVtLT57SW5jaVN0YXRlSUR9ICYmICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2F2ZScgKSB7CiAgICAgICAgJFJvd0luY2lTdGF0ZUludmFsaWQgPSAnIFNlcnZlckVycm9yJzsKICAgIH0KCiAgICAjIGdlbmVyYXRlIEluY2lTdGF0ZU9wdGlvblN0cmcKICAgIG15ICRJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgRGF0YSAgICAgICAgID0+ICRJbmNpU3RhdGVMaXN0LAogICAgICAgIE5hbWUgICAgICAgICA9PiAnSW5jaVN0YXRlSUQnLAogICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgIENsYXNzICAgICAgICA9PiAnRm9ybVVwZGF0ZSBWYWxpZGF0ZV9SZXF1aXJlZCBNb2Rlcm5pemUnIC4gJFJvd0luY2lTdGF0ZUludmFsaWQsCiAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRHZXRQYXJhbXtJbmNpU3RhdGVJRH0sCiAgICApOwoKICAgICMgb3V0cHV0IGluY2lkZW50IHN0YXRlIGJsb2NrCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdSb3dJbmNpU3RhdGUnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBJbmNpU3RhdGVPcHRpb25TdHJnID0+ICRJbmNpU3RhdGVPcHRpb25TdHJnLAogICAgICAgIH0sCiAgICApOwoKICAgICMgZ2VuZXJhdGUgYmFzZSB1cmwKICAgIG15ICRVUkwgPSAiQWN0aW9uPVBpY3R1cmVVcGxvYWQ7Rm9ybUlEPSRTZWxmLT57Rm9ybUlEfTtDb250ZW50SUQ9IjsKCiAgICAjIHJlcGxhY2UgbGlua3MgdG8gaW5saW5lIGltYWdlcyBpbiBodG1sIGNvbnRlbnQKICAgIG15IEBJbmxpbmVBdHRhY2htZW50TGlzdDsKICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9IG5lICdORVcnICkgewogICAgICAgIEBJbmxpbmVBdHRhY2htZW50TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudExpc3QoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZldGNoIGF0dGFjaG1lbnQgZGF0YSBhbmQgc3RvcmUgaW4gaGFzaCBmb3IgUmljaFRleHREb2N1bWVudFNlcnZlCiAgICBteSAlSW5saW5lQXR0YWNobWVudHM7CiAgICBGSUxFTkFNRToKICAgIGZvciBteSAkRmlsZW5hbWUgKEBJbmxpbmVBdHRhY2htZW50TGlzdCkgewogICAgICAgIG15ICRGaWxlRGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICAgICAgRmlsZW5hbWUgID0+ICRGaWxlbmFtZSwKICAgICAgICApOwoKICAgICAgICAkSW5saW5lQXR0YWNobWVudHN7ICRGaWxlRGF0YS0+e1ByZWZlcmVuY2VzfXtDb250ZW50SUR9IH0gPSAkRmlsZURhdGE7CiAgICAgICAgJElubGluZUF0dGFjaG1lbnRzeyAkRmlsZURhdGEtPntQcmVmZXJlbmNlc317Q29udGVudElEfSB9LT57Q29udGVudElEfSA9ICRGaWxlRGF0YS0+e1ByZWZlcmVuY2VzfXtDb250ZW50SUR9OwoKICAgICAgICAjIGFkZCB1cGxvYWRlZCBmaWxlIHRvIHVwbG9hZCBjYWNoZQogICAgICAgICRVcGxvYWRDYWNoZU9iamVjdC0+Rm9ybUlEQWRkRmlsZSgKICAgICAgICAgICAgRm9ybUlEICAgICAgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZURhdGEtPntGaWxlbmFtZX0sCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWxlRGF0YS0+e0NvbnRlbnR9LAogICAgICAgICAgICBDb250ZW50SUQgICA9PiAkRmlsZURhdGEtPntQcmVmZXJlbmNlc317Q29udGVudElEfSwKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJEZpbGVEYXRhLT57Q29udGVudFR5cGV9LAoKICAgICAgICAgICAgIyBjdXJyZW50bHksIG9ubHkgaW5saW5lIGltYWdlcyBmb3IgZGVzY3JpcHRpb24gYXJlIHN0b3JlZCBhdCB0aGUgY29uZmlnaXRlbSB2ZXJzaW9uCiAgICAgICAgICAgICMgICBzbyB3ZSBjYW4gcmVseSB1cG9uIGRlYWxpbmcgd2l0aCBpbmxpbmUgaW1hZ2VzIGhlcmUKICAgICAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG5lZWRlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBwYXJhbXMgZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgbXkgJEZpZWxkQ29udGVudCA9ICRDb25maWdJdGVtLT57RGVzY3JpcHRpb259OwogICAgbXkgJURhdGEgICAgICAgICA9ICgKICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50IC8vICcnLAogICAgICAgIENvbnRlbnRUeXBlID0+ICd0ZXh0L2h0bWw7IGNoYXJzZXQ9InV0Zi04IicsCiAgICAgICAgRGlzcG9zaXRpb24gPT4gJ2lubGluZScsCiAgICApOwoKICAgICMgcmVmb3JtYXQgcmljaCB0ZXh0IGRvY3VtZW50IHRvIGhhdmUgY29ycmVjdCBjaGFyc2V0IGFuZCBsaW5rcyB0bwogICAgIyBpbmxpbmUgZG9jdW1lbnRzCiAgICAlRGF0YSA9ICRMYXlvdXRPYmplY3QtPlJpY2hUZXh0RG9jdW1lbnRTZXJ2ZSgKICAgICAgICBEYXRhICAgICAgICAgICAgICAgPT4gXCVEYXRhLAogICAgICAgIFVSTCAgICAgICAgICAgICAgICA9PiAkVVJMLAogICAgICAgIEF0dGFjaG1lbnRzICAgICAgICA9PiBcJUlubGluZUF0dGFjaG1lbnRzLAogICAgICAgIExvYWRFeHRlcm5hbEltYWdlcyA9PiAxLAogICAgKTsKCiAgICAkRmllbGRDb250ZW50ID0gJERhdGF7Q29udGVudH07CgogICAgIyByZW1vdmUgYWN0aXZlIGh0bWwgY29udGVudCAoc2NyaXB0cywgYXBwbGV0cywgZXRjLi4uKQogICAgbXkgJEhUTUxVdGlsc09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpIVE1MVXRpbHMnKTsKICAgIG15ICVTYWZlQ29udGVudCAgICAgPSAkSFRNTFV0aWxzT2JqZWN0LT5TYWZldHkoCiAgICAgICAgU3RyaW5nICAgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgTm9BcHBsZXQgICAgID0+IDEsCiAgICAgICAgTm9PYmplY3QgICAgID0+IDEsCiAgICAgICAgTm9FbWJlZCAgICAgID0+IDEsCiAgICAgICAgTm9JbnRTcmNMb2FkID0+IDAsCiAgICAgICAgTm9FeHRTcmNMb2FkID0+IDAsCiAgICAgICAgTm9KYXZhU2NyaXB0ID0+IDEsCiAgICApOwoKICAgICMgdGFrZSB0aGUgc2FmZSBjb250ZW50IGlmIG5lY2Vzc2FyeQogICAgaWYgKCAkU2FmZUNvbnRlbnR7UmVwbGFjZX0gKSB7CiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRTYWZlQ29udGVudHtTdHJpbmd9OwogICAgfQoKICAgICMgZGV0ZWN0IGFsbCBwbGFpbiB0ZXh0IGxpbmtzIGFuZCBwdXQgdGhlbSBpbnRvIGFuIEhUTUwgPGE+IHRhZwogICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICBTdHJpbmcgPT4gJEZpZWxkQ29udGVudCwKICAgICk7CgogICAgIyBzZXQgdGFyZ2V0PSJfYmxhbmsiIGF0dHJpYnV0ZSB0byBhbGwgSFRNTCA8YT4gdGFncwogICAgIyB0aGUgTGlua1F1b3RlIGZ1bmN0aW9uIG5lZWRzIHRvIGJlIGNhbGxlZCBhZ2FpbgogICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICBTdHJpbmcgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICBUYXJnZXRBZGQgPT4gMSwKICAgICk7CgogICAgIyBhZGQgbmVlZGVkIEhUTUwgaGVhZGVycwogICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkRvY3VtZW50Q29tcGxldGUoCiAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgIENoYXJzZXQgPT4gJ3V0Zi04JywKICAgICk7CgogICAgIyBlc2NhcGUgc2luZ2xlIHF1b3RlcwogICAgJEZpZWxkQ29udGVudCA9fiBzLycvJiMzOTsvZzsKCiAgICAjIHJlbmRlciBkeW5hbWljIGZpZWxkcwogICAgbXkgJER5bmFtaWNGaWVsZEhUTUw7CiAgICBteSAlR3JvdXBMb29rdXA7CiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9ICkgJiYgJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc30gKSB7CgogICAgICAgICMgVE9ETzogbG9vayB3aGF0IHRoaXMgd2FzL2lzIGFib3V0CiAgICAgICAgIyAgICAgICAgJFNlbGYtPntDdXN0b21lclNlYXJjaEl0ZW1JRHN9ID0gW107CgogICAgICAgICMgVE9ETzogSXQgd291bGQgYmUgbmljZSB0byBzd2l0Y2ggYmV0d2VlbiBwYWdlcyBmb3IgdGhlIGVkaXQgbWFzaywgdG9vLiBLZWVwaW5nIHRoZSBmaWVsZHMgaW4gc3luYwogICAgICAgICMgICAgICAgd2hpbGUgZWRpdGluZyBuZWVkcyBhIGJpdCBtb3JlIHByZXBhcmF0aW9uIHRob3VnaAogICAgICAgICMgVGh1cyBmb3Igbm93IG1ha2Ugc3VyZSB0byBzaG93IGR5bmFtaWMgZmllbGRzIG9ubHkgb25jZSwgZXZlbiBpZiBwcmVzZW50IG9uIG11bHRpcGxlIHBhZ2VzL3NlY3Rpb25zCiAgICAgICAgbXkgJEZpZWxkc1NlZW4gPSB7fTsKICAgICAgICBteSAkU2hvd0Rlc2NyaXB0aW9uOwogICAgICAgIG15IEBQYWdlSFRNTDsKICAgICAgICBteSAkU2VjdGlvbkhlYWRlclRlbXBsYXRlID0gJzxkaXYgY2xhc3M9IlJvdyBSb3dfU2VjdGlvbkhlYWRlciI+PGgzPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvaDM+PC9kaXY+JzsKCiAgICAgICAgUEFHRToKICAgICAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CgogICAgICAgICAgICAjIEludGVyZmFjZXMgaXMgb3B0aW9uYWwsIGVmZmVjdGl2ZWx5IGRlZmF1bHQgdG8gWyAnQWdlbnQnIF0KICAgICAgICAgICAgaWYgKCAkUGFnZS0+e0ludGVyZmFjZXN9ICkgewogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQWdlbnQnIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJFBhZ2UtPntHcm91cHN9ICkgewogICAgICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgICAgICVHcm91cExvb2t1cCA9IHJldmVyc2UgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPlBlcm1pc3Npb25Vc2VyR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZ3JhbnQgYWNjZXNzIHRvIHRoZSBwYWdlIG9ubHkgd2hlbiB0aGUgdXNlciBpcyBpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cHMKICAgICAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJEdyb3VwTG9va3VweyRffSB9ICRQYWdlLT57R3JvdXBzfS0+QCo7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRQYWdlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAgICAgICAgIFNFQ1RJT046CiAgICAgICAgICAgIGZvciBteSAkU2VjdGlvbkNvbmZpZyAoICRQYWdlLT57Q29udGVudH0tPkAqICkgewogICAgICAgICAgICAgICAgbXkgJFNlY3Rpb24gPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1NlY3Rpb25zfXsgJFNlY3Rpb25Db25maWctPntTZWN0aW9ufSB9OwoKICAgICAgICAgICAgICAgIG5leHQgU0VDVElPTiB1bmxlc3MgJFNlY3Rpb247CiAgICAgICAgICAgICAgICBpZiAoICRTZWN0aW9uLT57VHlwZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VjdGlvbi0+e1R5cGV9IGVxICdEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRTaG93RGVzY3JpcHRpb24gPSAxOwoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWN0aW9uLT57VHlwZX0gbmUgJ0R5bmFtaWNGaWVsZHMnICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT047CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgd2VlZCBvdXQgbXVsdGlwbGUgb2NjdXJyZW5jZXMgb2YgZHluYW1pYyBmaWVsZHMgLSBzZWUgY29tbWVudCBhYm92ZQogICAgICAgICAgICAgICAgJFNlY3Rpb24tPntDb250ZW50fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkU2VjdGlvbi0+e0NvbnRlbnR9LAogICAgICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJEZpZWxkc1NlZW4sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgZG8gbm90IHByb2NlZWQgaWYgY29udGVudCBpcyBlbXB0eQogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKjsKCiAgICAgICAgICAgICAgICBteSAkSFRNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpEeW5hbWljRmllbGQ6Ok1hc2snKS0+RWRpdFNlY3Rpb25SZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCAgICAgICAgICAgICAgPT4gJFNlY3Rpb24tPntDb250ZW50fSwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzICAgICAgICA9PiAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0sCiAgICAgICAgICAgICAgICAgICAgVXBkYXRhYmxlRmllbGRzICAgICAgPT4gXEBVcGRhdGFibGVGaWVsZHMsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkVmFsdWVzICAgPT4gJEdldFBhcmFte0R5bmFtaWNGaWVsZH0sCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gXCVEeW5hbWljRmllbGRQb3NzaWJsZVZhbHVlcywKICAgICAgICAgICAgICAgICAgICBFcnJvcnMgICAgICAgICAgICAgICA9PiBcJUR5bmFtaWNGaWVsZFZhbGlkYXRpb25SZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgVmlzaWJpbGl0eSAgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRWaXNpYmlsaXR5LAogICAgICAgICAgICAgICAgICAgIE9iamVjdCAgICAgICAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc30sCiAgICAgICAgICAgICAgICAgICAgICAgICRHZXRQYXJhbXtEeW5hbWljRmllbGR9LT4lKiwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT04gdW5sZXNzICRIVE1MID1+IC9cdy87CgogICAgICAgICAgICAgICAgbXkgKCRTZWN0aW9uSGVhZGVyKSA9IGdyZXAgeyAkXy0+e0hlYWRlcn0gfSAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKjsKICAgICAgICAgICAgICAgIGlmICgkU2VjdGlvbkhlYWRlcikgewogICAgICAgICAgICAgICAgICAgICRQYWdlRHluYW1pY0ZpZWxkSFRNTCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRTZWN0aW9uSGVhZGVyVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFNlY3Rpb25IZWFkZXItPntIZWFkZXJ9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJFBhZ2VEeW5hbWljRmllbGRIVE1MIC49ICRIVE1MOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzICRQYWdlRHluYW1pY0ZpZWxkSFRNTDsKCiAgICAgICAgICAgIHB1c2ggQFBhZ2VIVE1MLCB7CiAgICAgICAgICAgICAgICBIVE1MID0+ICRQYWdlRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhZ2UtPntOYW1lfSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIG15IEBBY3RpdmVEeW5hbWljRmllbGRzID0gKCBrZXlzICRGaWVsZHNTZWVuLT4lKiApOwoKICAgICAgICAjIHN0b3JlIHRoZSBhY3RpdmUgZHluYW1pYyBmaWVsZHMsIHRvIG9ubHkgdmFsaWRhdGUgdGhvc2UKICAgICAgICAkRm9ybUNhY2hlT2JqZWN0LT5TZXRGb3JtRGF0YSgKICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgIEtleSAgICAgICAgICA9PiAnQWN0aXZlRHluYW1pY0ZpZWxkcycsCiAgICAgICAgICAgIFZhbHVlICAgICAgICA9PiBcQEFjdGl2ZUR5bmFtaWNGaWVsZHMsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBzY2FsYXIgQFBhZ2VIVE1MID4gMSApIHsKICAgICAgICAgICAgbXkgJEhlYWRlclRlbXBsYXRlID0KICAgICAgICAgICAgICAgICc8c3VtbWFyeT4KICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyBSb3dfUGFnZUhlYWRlciI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iVG9nZ2xlIj4KICAgICAgICAgICAgICAgICAgICAgICAgPGkgY2xhc3M9ImZhIGZhLWNhcmV0LXJpZ2h0Ij48L2k+CiAgICAgICAgICAgICAgICAgICAgICAgIDxpIGNsYXNzPSJmYSBmYS1jYXJldC1kb3duIj48L2k+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgPGgyPlslIFRyYW5zbGF0ZShEYXRhLk5hbWUpIHwgaHRtbCAlXTwvaDI+CiAgICAgICAgICAgICAgICAgICAgPGhyLz4KICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICA8L3N1bW1hcnk+JzsKCiAgICAgICAgICAgIGZvciBteSAkUGFnZSAoQFBhZ2VIVE1MKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAnPGRldGFpbHMgY2xhc3M9IlBhZ2VDb250ZW50Ij4nOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRIZWFkZXJUZW1wbGF0ZSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhZ2UtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MIC49ICRQYWdlLT57SFRNTH07CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAnPC9kZXRhaWxzPic7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkU2hvd0Rlc2NyaXB0aW9uKSB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTCAuPSAnPGRldGFpbHMgY2xhc3M9IlBhZ2VDb250ZW50Ij4nOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgICAgIFRlbXBsYXRlID0+ICRIZWFkZXJUZW1wbGF0ZSwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0Rlc2NyaXB0aW9uJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoQFBhZ2VIVE1MKSB7CiAgICAgICAgICAgICREeW5hbWljRmllbGRIVE1MIC49ICRQYWdlSFRNTFswXXtIVE1MfTsKICAgICAgICB9CgogICAgICAgIGlmICgkU2hvd0Rlc2NyaXB0aW9uKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnUm93RGVzY3JpcHRpb24nLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJEZpZWxkQ29udGVudCAvLyAnJywKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGFsbCBhdHRhY2htZW50cyBtZXRhIGRhdGEKICAgIG15IEBBbGxBdHRhY2htZW50c0xpc3QgPSAkVXBsb2FkQ2FjaGVPYmplY3QtPkZvcm1JREdldEFsbEZpbGVzTWV0YSgKICAgICAgICBGb3JtSUQgPT4gJFNlbGYtPntGb3JtSUR9LAogICAgKTsKCiAgICAjIGV4Y2x1ZGUgaW5saW5lIGF0dGFjaG1lbnRzIGFzIHRoZXkgYXJlIGhhbmRsZWQgc2VwYXJhdGVseQogICAgJFBhcmFte0F0dGFjaG1lbnRMaXN0fSA9IFsgZ3JlcCB7ICRfLT57RGlzcG9zaXRpb259IG5lICdpbmxpbmUnIH0gQEFsbEF0dGFjaG1lbnRzTGlzdCBdOwoKICAgICMgVE9ETyBtYXliZSByZXN0cmljdCB0aGlzIHRvIG9ubHkgaWYgZGYgcmljaHRleHQgYXJlIHRvIGJlIGRpc3BsYXllZAogICAgIyBhZGQgcmljaCB0ZXh0IGVkaXRvcgogICAgaWYgKCAkTGF5b3V0T2JqZWN0LT57QnJvd3NlclJpY2hUZXh0fSApIHsKCiAgICAgICAgIyB1c2UgaGVpZ2h0L3dpZHRoIGRlZmluZWQgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgJFBhcmFte1JpY2hUZXh0SGVpZ2h0fSA9ICRTZWxmLT57Q29uZmlnfXtSaWNoVGV4dEhlaWdodH0gfHwgMDsKICAgICAgICAkUGFyYW17UmljaFRleHRXaWR0aH0gID0gJFNlbGYtPntDb25maWd9e1JpY2hUZXh0V2lkdGh9ICB8fCAwOwoKICAgICAgICAjIHNldCB1cCByaWNoIHRleHQgZWRpdG9yCiAgICAgICAgJExheW91dE9iamVjdC0+U2V0UmljaFRleHRQYXJhbWV0ZXJzKAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgIH0KCiAgICBpZiAoICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ICYmICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSBuZSAnTkVXJyApIHx8ICREdXBsaWNhdGVJRCApIHsKCiAgICAgICAgIyBvdXRwdXQgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3RhcnRTbWFsbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnRW5kU21hbGwnICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRlcgogICAgICAgIHJldHVybiBqb2luICcnLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5IZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0VkaXQnKSwKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdTbWFsbCcsCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbUVkaXQnLAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkSFRNTCA9PiAkRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgICAgICAgICBEdXBsaWNhdGVJRCAgICAgID0+ICREdXBsaWNhdGVJRCwKICAgICAgICAgICAgICAgICAgICBGb3JtSUQgICAgICAgICAgID0+ICRTZWxmLT57Rm9ybUlEfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICksCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkZvb3RlciggVHlwZSA9PiAnU21hbGwnICk7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBOZWNlc3Nhcnkgc3R1ZmYgZm9yIEFkZCBOZXcKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQga2V5cyAleyRDbGFzc0xpc3R9ICkgewogICAgICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgZGVsZXRlICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0gaWYgISRIYXNBY2Nlc3M7CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIENsYXNzT3B0aW9uU3RyZwogICAgICAgIG15ICRDbGFzc09wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRDbGFzc0xpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ2xhc3NJRCcsCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBUcmFuc2xhdGlvbiAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdXMTAwcGMnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc0lEfSwKICAgICAgICApOwoKICAgICAgICAjIEVuZCBOZWNlc3Nhcnkgc3R1ZmYgZm9yIEFkZCBOZXcKCiAgICAgICAgIyBvdXRwdXQgYmxvY2sKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnU3RhcnROb3JtYWwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzT3B0aW9uU3RyZyA9PiAkQ2xhc3NPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgJXskQ29uZmlnSXRlbX0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ0VuZE5vcm1hbCcgKTsKCiAgICAgICAgIyBvdXRwdXQgaGVhZGVyCiAgICAgICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkhlYWRlcigKICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRWRpdCcpLAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0JywKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7JENvbmZpZ0l0ZW19LAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEhUTUwgPT4gJER5bmFtaWNGaWVsZEhUTUwsCiAgICAgICAgICAgICAgICAgICAgRHVwbGljYXRlSUQgICAgICA9PiAkRHVwbGljYXRlSUQsCiAgICAgICAgICAgICAgICAgICAgRm9ybUlEICAgICAgICAgICA9PiAkU2VsZi0+e0Zvcm1JRH0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApLAogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5Gb290ZXI7CiAgICB9Cn0KCnN1YiBfRGlzY2FyZEZpZWxkc1NlZW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29udGVudDsKICAgIG15ICRSZWYgPSByZWYgJFBhcmFte0NvbnRlbnR9OwoKICAgIGlmICggJFJlZiBlcSAnQVJSQVknICkgewogICAgICAgIG15IEBDbGVhbmVkQXJyYXk7CgogICAgICAgIEVMRU1FTlQ6CiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggJFBhcmFte0NvbnRlbnR9LT5AKiApIHsKICAgICAgICAgICAgbXkgJFJlZkVsZW1lbnQgPSByZWYgJEVsZW1lbnQ7CgogICAgICAgICAgICBpZiAoICRSZWZFbGVtZW50IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICBTZWVuICAgID0+ICRQYXJhbXtTZWVufSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNpZiAoICRSZWZFbGVtZW50IGVxICdIQVNIJyApIHsKICAgICAgICAgICAgICAgIGlmICggISRFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQENsZWFuZWRBcnJheSwgJFNlbGYtPl9EaXNjYXJkRmllbGRzU2VlbigKICAgICAgICAgICAgICAgICAgICAgICAgQ29udGVudCA9PiAkRWxlbWVudCwKICAgICAgICAgICAgICAgICAgICAgICAgU2VlbiAgICA9PiAkUGFyYW17U2Vlbn0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte1NlZW59eyAkRWxlbWVudC0+e0RGfSB9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEBDbGVhbmVkQXJyYXksICRFbGVtZW50OwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcQENsZWFuZWRBcnJheTsKICAgIH0KCiAgICBlbHNpZiAoICRSZWYgZXEgJ0hBU0gnICkgewogICAgICAgIG15ICVDbGVhbmVkSGFzaDsKCiAgICAgICAgZm9yIG15ICRLZXkgKCBrZXlzICRQYXJhbXtDb250ZW50fS0+JSogKSB7CiAgICAgICAgICAgICRDbGVhbmVkSGFzaHskS2V5fSA9ICRTZWxmLT5fRGlzY2FyZEZpZWxkc1NlZW4oCiAgICAgICAgICAgICAgICBDb250ZW50ID0+ICRQYXJhbXtDb250ZW50fXskS2V5fSwKICAgICAgICAgICAgICAgIFNlZW4gICAgPT4gJFBhcmFte1NlZW59LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbnRlbnQgPSBcJUNsZWFuZWRIYXNoOwogICAgfQoKICAgIGVsc2UgewogICAgICAgICRDb250ZW50ID0gJFBhcmFte0NvbnRlbnR9OwogICAgfQoKICAgIHJldHVybiAkQ29udGVudDsKfQoKMTsK</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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVByaW50OwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSAgICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgICBxdyhJc0FycmF5UmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJFZlcnNpb25JRCAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCB8fCAhJFZlcnNpb25JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIGlzIGdpdmVuIScpLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzCiAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259IiktPntQZXJtaXNzaW9ufSwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKCiAgICAgICAgIyBlcnJvciBwYWdlCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKAogICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnQ2FuXCd0IHNob3cgY29uZmlnIGl0ZW0sIG5vIGFjY2VzcyByaWdodHMgZ2l2ZW4hJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBWZXJzaW9uSUQgICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggISRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4KICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0NvbmZpZ0l0ZW1JRCAlcyBub3QgZm91bmQgaW4gZGF0YWJhc2UhJywgJENvbmZpZ0l0ZW1JRCApLAogICAgICAgICAgICBDb21tZW50ID0+IFRyYW5zbGF0YWJsZSgnUGxlYXNlIGNvbnRhY3QgdGhlIGFkbWluaXN0cmF0b3IuJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBsYXN0IHZlcnNpb24KICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKICAgICRDb25maWdJdGVtLT57Q3VycmVudE5hbWV9ID0gJExhc3RWZXJzaW9uLT57TmFtZX07CgogICAgIyBnZXQgdmVyc2lvbiBsaXN0CiAgICBteSAkVmVyc2lvbkxpc3QgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkxpc3QoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICApOwoKICAgIG15ICRWZXJzaW9uTnVtYmVyID0gMTsKICAgIExJU1RWRVJTSU9OSUQ6CiAgICBmb3IgbXkgJExpc3RWZXJzaW9uSUQgKCBAeyRWZXJzaW9uTGlzdH0gKSB7CgogICAgICAgIGxhc3QgTElTVFZFUlNJT05JRCBpZiAkVmVyc2lvbklEIGVxICRMaXN0VmVyc2lvbklEOwogICAgICAgICRWZXJzaW9uTnVtYmVyKys7CiAgICB9CgogICAgIyBnZXQgdXNlciBvYmplY3QKICAgIG15ICRVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKTsKCiAgICAjIGdldCBjcmVhdGUgJiBjaGFuZ2UgdXNlciBkYXRhCiAgICBmb3IgbXkgJEtleSAocXcoQ3JlYXRlIENoYW5nZSkpIHsKICAgICAgICAkQ29uZmlnSXRlbS0+eyAkS2V5IC4gJ0J5TmFtZScgfSA9ICRVc2VyT2JqZWN0LT5Vc2VyTmFtZSgKICAgICAgICAgICAgVXNlcklEID0+ICRDb25maWdJdGVtLT57ICRLZXkgLiAnQnknIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCB1c2VyIGRhdGEgb2YgdmVyc2lvbiAoY3JlYXRlIGJ5KQogICAgJENvbmZpZ0l0ZW0tPntDcmVhdGVCeU5hbWV9ID0gJFVzZXJPYmplY3QtPlVzZXJOYW1lKAogICAgICAgIFVzZXJJRCA9PiAkQ29uZmlnSXRlbS0+e0NyZWF0ZUJ5fSwKICAgICk7CgogICAgIyBnZXQgbGlua2VkIG9iamVjdHMKICAgIG15ICRMaW5rT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKTsKCiAgICBteSAkTGlua0xpc3RXaXRoRGF0YSA9ICRMaW5rT2JqZWN0LT5MaW5rTGlzdFdpdGhEYXRhKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIFN0YXRlICA9PiAnVmFsaWQnLAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGxpbmsgdHlwZSBsaXN0CiAgICBteSAlTGlua1R5cGVMaXN0ID0gJExpbmtPYmplY3QtPlR5cGVMaXN0KAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IHRoZSBsaW5rIGRhdGEKICAgIG15ICVMaW5rRGF0YTsKICAgIGlmICggJExpbmtMaXN0V2l0aERhdGEgJiYgcmVmICRMaW5rTGlzdFdpdGhEYXRhIGVxICdIQVNIJyAmJiAleyRMaW5rTGlzdFdpdGhEYXRhfSApIHsKICAgICAgICAlTGlua0RhdGEgPSAkTGF5b3V0T2JqZWN0LT5MaW5rT2JqZWN0VGFibGVDcmVhdGUoCiAgICAgICAgICAgIExpbmtMaXN0V2l0aERhdGEgPT4gJExpbmtMaXN0V2l0aERhdGEsCiAgICAgICAgICAgIFZpZXdNb2RlICAgICAgICAgPT4gJ1NpbXBsZVJhdycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBhdHRhY2htZW50cwogICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIGdlbmVyYXRlIHBkZiBvdXRwdXQKICAgIG15ICVQYWdlOwoKICAgICMgZ2V0IG1heGltdW0gbnVtYmVyIG9mIHBhZ2VzCiAgICAkUGFnZXtNYXhQYWdlc30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1BERjo6TWF4UGFnZXMnKTsKICAgIGlmICggISRQYWdle01heFBhZ2VzfSB8fCAkUGFnZXtNYXhQYWdlc30gPCAxIHx8ICRQYWdle01heFBhZ2VzfSA+IDEwMDAgKSB7CiAgICAgICAgJFBhZ2V7TWF4UGFnZXN9ID0gMTAwOwogICAgfQoKICAgIG15ICRUaXRsZSA9ICRDb25maWdJdGVtLT57Q3VycmVudE5hbWV9OwoKICAgICRQYWdle01hcmdpblRvcH0gICAgPSAzMDsKICAgICRQYWdle01hcmdpblJpZ2h0fSAgPSA0MDsKICAgICRQYWdle01hcmdpbkJvdHRvbX0gPSA0MDsKICAgICRQYWdle01hcmdpbkxlZnR9ICAgPSA0MDsKICAgICRQYWdle0hlYWRlclJpZ2h0fSAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ0l0ZW0nKSAuICcjJwogICAgICAgIC4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9OwogICAgJFBhZ2V7SGVhZGxpbmVMZWZ0fSA9ICRDb25maWdJdGVtLT57TmFtZX07CiAgICAkUGFnZXtQYWdlVGV4dH0gICAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdQYWdlJyk7CiAgICAkUGFnZXtQYWdlQ291bnR9ICAgID0gMTsKCiAgICAjIGNyZWF0ZSBuZXcgcGRmIGRvY3VtZW50CiAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICBUaXRsZSAgPT4gJENvbmZpZ09iamVjdC0+R2V0KCdQcm9kdWN0JykgLiAnOicgLiAkQ29uZmlnSXRlbS0+e05hbWV9LAogICAgICAgIEVuY29kZSA9PiAkTGF5b3V0T2JqZWN0LT57VXNlckNoYXJzZXR9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBmaXJzdCBwZGYgcGFnZQogICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAlUGFnZSwKICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZXtQYWdlVGV4dH0gLiAnICcgLiAkUGFnZXtQYWdlQ291bnR9LAogICAgKTsKICAgICRQYWdle1BhZ2VDb3VudH0rKzsKCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC02LAogICAgKTsKCiAgICAjIG91dHB1dCB0aXRsZQogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ICAgICA9PiAkVGl0bGUsCiAgICAgICAgRm9udFNpemUgPT4gMTMsCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTYsCiAgICApOwoKICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICBUZXh0ID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgJ3ByaW50ZWQgYnkgJXMgYXQgJXMnLAogICAgICAgICAgICAkU2VsZi0+e1VzZXJGdWxsbmFtZX0sCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPntUaW1lfSwKICAgICAgICApLAogICAgICAgIEZvbnRTaXplID0+IDksCiAgICApOwoKICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE0LAogICAgKTsKCiAgICAjIG91dHB1dCBnZW5lcmFsIGluZm9ybWF0aW9uCiAgICAkU2VsZi0+X1BERk91dHB1dEdlbmVyYWxJbmZvcygKICAgICAgICBQYWdlICAgICAgID0+IFwlUGFnZSwKICAgICAgICBDb25maWdJdGVtID0+ICRDb25maWdJdGVtLAogICAgKTsKCiAgICBteSAlU2VjdGlvbnMgPSAkU2VsZi0+X0dldENJU2VjdGlvbnMoCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICk7CgogICAgIyBvdXRwdXQgdmVyc2lvbiBpbmZvcwogICAgJFNlbGYtPl9QREZPdXRwdXRWZXJzaW9uSW5mb3MoCiAgICAgICAgUGFnZSAgICAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgVmVyc2lvbiAgICAgICA9PiAkQ29uZmlnSXRlbSwKICAgICAgICBWZXJzaW9uTnVtYmVyID0+ICRWZXJzaW9uTnVtYmVyLAogICAgICAgIERGU2VjdGlvbnMgICAgPT4gJFNlY3Rpb25ze0RGU2VjdGlvbnN9LAogICAgICAgIERlc2NyaXB0aW9uICAgPT4gJFNlY3Rpb25ze0Rlc2NyaXB0aW9ufSwKICAgICk7CgogICAgIyBvdXRwdXQgYXR0YWNobWVudHMKICAgIGlmIChAQXR0YWNobWVudHMpIHsKICAgICAgICAkU2VsZi0+X1BERk91dHB1dEF0dGFjaG1lbnRzKAogICAgICAgICAgICBQYWdlRGF0YSAgICAgICA9PiBcJVBhZ2UsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIEF0dGFjaG1lbnREYXRhID0+IFxAQXR0YWNobWVudHMsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIG91dHB1dCBpbnRlcm5hbCBiYWNrIGxpbmtzCiAgICAkU2VsZi0+X1BERk91dHB1dEJhY2tsaW5rcygKICAgICAgICBQYWdlICAgICAgICAgPT4gXCVQYWdlLAogICAgICAgIENvbmZpZ0l0ZW0gICA9PiAkQ29uZmlnSXRlbSwKICAgICAgICBMaW5rU2VjdGlvbnMgPT4gJFNlY3Rpb25ze0xpbmtTZWN0aW9uc30sCiAgICApOwoKICAgICMgb3V0cHV0IGxpbmtlZCBvYmplY3RzCiAgICBpZiAoJUxpbmtEYXRhKSB7CiAgICAgICAgJFNlbGYtPl9QREZPdXRwdXRMaW5rZWRPYmplY3RzKAogICAgICAgICAgICBQYWdlRGF0YSAgICAgPT4gXCVQYWdlLAogICAgICAgICAgICBMaW5rRGF0YSAgICAgPT4gXCVMaW5rRGF0YSwKICAgICAgICAgICAgTGlua1R5cGVMaXN0ID0+IFwlTGlua1R5cGVMaXN0LAogICAgICAgICk7CiAgICB9CgogICAgIyBHZXQgY3VycmVudCBzeXN0ZW0gZGF0ZXRpbWUgb2JqZWN0LgogICAgbXkgJEN1cnJlbnRTeXN0ZW1EVE9iaiA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScpOwoKICAgICMgY3JlYXRlIGZpbGUgbmFtZQogICAgbXkgJEZpbGVuYW1lID0gc3ByaW50ZigKICAgICAgICAnY29uZmlnaXRlbV8lc18lcy5wZGYnLAogICAgICAgICRDb25maWdJdGVtLT57TnVtYmVyfSwKICAgICAgICAkQ3VycmVudFN5c3RlbURUT2JqLT5Gb3JtYXQoIEZvcm1hdCA9PiAnJUZfJUgtJU0nICksCiAgICApOwogICAgbXkgJENsZWFuZWRGaWxlbmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPkZpbGVuYW1lQ2xlYW5VcCgKICAgICAgICBGaWxlbmFtZSA9PiAkRmlsZW5hbWUsCiAgICAgICAgVHlwZSAgICAgPT4gJ0F0dGFjaG1lbnQnLAogICAgKTsKCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkQ2xlYW5lZEZpbGVuYW1lLAogICAgICAgIENvbnRlbnRUeXBlID0+ICdhcHBsaWNhdGlvbi9wZGYnLAogICAgICAgIENvbnRlbnQgICAgID0+ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCksCiAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICApOwp9CgpzdWIgX1BERk91dHB1dEdlbmVyYWxJbmZvcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhQYWdlIENvbmZpZ0l0ZW0pKSB7CiAgICAgICAgaWYgKCAhZGVmaW5lZCAkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNyZWF0ZSBsZWZ0IHRhYmxlCiAgICBteSAkVGFibGVMZWZ0ID0gWwogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDbGFzcycpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDbGFzc30sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ29uZmlnSXRlbScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17Q29uZmlnSXRlbX0tPntDdXJyZW50TmFtZX0sCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgKICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+e0N1ckRlcGxTdGF0ZX0sCiAgICAgICAgICAgICksCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoCiAgICAgICAgICAgICAgICAkUGFyYW17Q29uZmlnSXRlbX0tPntDdXJJbmNpU3RhdGV9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICBdOwoKICAgICMgY3JlYXRlIHJpZ2h0IHRhYmxlCiAgICBteSAkVGFibGVSaWdodCA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCV7ICRQYXJhbXtDb25maWdJdGVtfSB9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NyZWF0ZWQgYnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte0NvbmZpZ0l0ZW19LT57Q3JlYXRlQnlOYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYXN0IGNoYW5nZWQnKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJ1slIERhdGEuQ2hhbmdlVGltZSB8IExvY2FsaXplKCJUaW1lTG9uZyIpICVdJywKICAgICAgICAgICAgICAgIERhdGEgICAgID0+IFwleyAkUGFyYW17Q29uZmlnSXRlbX0gfSwKICAgICAgICAgICAgKSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMYXN0IGNoYW5nZWQgYnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte0NvbmZpZ0l0ZW19LT57Q2hhbmdlQnlOYW1lfSwKICAgICAgICB9LAogICAgXTsKCiAgICBteSAkUm93cyA9IEB7JFRhYmxlTGVmdH07CiAgICBpZiAoIEB7JFRhYmxlUmlnaHR9ID4gJFJvd3MgKSB7CiAgICAgICAgJFJvd3MgPSBAeyRUYWJsZVJpZ2h0fTsKICAgIH0KCiAgICBteSAlVGFibGVQYXJhbTsKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVMZWZ0LT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICAgICAgICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlTGVmdC0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtDb250ZW50fSAgICAgICAgID0gJyAnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsyXXtCYWNrZ3JvdW5kQ29sb3J9ID0gJyNGRkZGRkYnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVszXXtDb250ZW50fSAgICAgICAgID0gJFRhYmxlUmlnaHQtPlskUm93XS0+e0tleX07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzNde0ZvbnR9ICAgICAgICAgICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzRde0NvbnRlbnR9ICAgICAgICAgPSAkVGFibGVSaWdodC0+WyRSb3ddLT57VmFsdWV9OwogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gMTcwLjU7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsyXXtXaWR0aH0gPSA0OwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bM117V2lkdGh9ID0gODA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVs0XXtXaWR0aH0gPSAxNzAuNTsKICAgICRUYWJsZVBhcmFte1R5cGV9ICAgICAgICAgICAgICAgICA9ICdDdXQnOwogICAgJFRhYmxlUGFyYW17Qm9yZGVyfSAgICAgICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgICA9IDY7CiAgICAkVGFibGVQYXJhbXtCYWNrZ3JvdW5kQ29sb3JFdmVufSAgPSAnI0RERERERCc7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgID0gMzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdCb3R0b219ICAgICAgICA9IDM7CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0gLi4gJFBhcmFte1BhZ2V9LT57TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgbGFzdCBQQUdFIGlmICRUYWJsZVBhcmFte1N0YXRlfTsKCiAgICAgICAgJFBERk9iamVjdC0+UGFnZU5ldygKICAgICAgICAgICAgJXsgJFBhcmFte1BhZ2V9IH0sCiAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYXJhbXtQYWdlfS0+e1BhZ2VUZXh0fSAuICcgJyAuICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0sCiAgICAgICAgKTsKICAgICAgICAkUGFyYW17UGFnZX0tPntQYWdlQ291bnR9Kys7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0TGlua2VkT2JqZWN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUGFnZURhdGEgTGlua0RhdGEgTGlua1R5cGVMaXN0KSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskTmVlZGVkfSApICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAlUGFnZSAgICAgPSAleyAkUGFyYW17UGFnZURhdGF9IH07CiAgICBteSAlVHlwZUxpc3QgPSAleyAkUGFyYW17TGlua1R5cGVMaXN0fSB9OwogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIG15IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgZm9yIG15ICRMaW5rVHlwZUxpbmtEaXJlY3Rpb24gKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyAkUGFyYW17TGlua0RhdGF9IH0gKSB7CgogICAgICAgICMgaW52ZXN0aWdhdGUgbGluayB0eXBlIG5hbWUKICAgICAgICBteSBATGlua0RhdGEgICAgID0gc3BsaXQgLzo6LywgJExpbmtUeXBlTGlua0RpcmVjdGlvbjsKICAgICAgICBteSAkTGlua1R5cGVOYW1lID0gJFR5cGVMaXN0eyAkTGlua0RhdGFbMF0gfS0+eyAkTGlua0RhdGFbMV0gLiAnTmFtZScgfTsKICAgICAgICAkTGlua1R5cGVOYW1lID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMaW5rVHlwZU5hbWUpOwoKICAgICAgICAjIGRlZmluZSBoZWFkbGluZQogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtDb250ZW50fSA9ICRMaW5rVHlwZU5hbWUgLiAnOic7CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICcnOwoKICAgICAgICAjIGV4dHJhY3Qgb2JqZWN0IGxpc3QKICAgICAgICBteSAkT2JqZWN0TGlzdCA9ICRQYXJhbXtMaW5rRGF0YX0tPnskTGlua1R5cGVMaW5rRGlyZWN0aW9ufTsKCiAgICAgICAgZm9yIG15ICRPYmplY3QgKCBzb3J0IHsgbGMgJGEgY21wIGxjICRiIH0ga2V5cyAleyRPYmplY3RMaXN0fSApIHsKCiAgICAgICAgICAgIGZvciBteSAkSXRlbSAoIEB7ICRPYmplY3RMaXN0LT57JE9iamVjdH0gfSApIHsKCiAgICAgICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Q29udGVudH0gfHw9ICcnOwogICAgICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzFde0NvbnRlbnR9ID0gJEl0ZW0tPntUaXRsZX0gfHwgJyc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY29udGludWUgewogICAgICAgICAgICAgICAgJFJvdysrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzBde1dpZHRofSA9IDgwOwogICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMV17V2lkdGh9ID0gNDMxOwoKICAgICMgZ2V0IHBkZiBvYmplY3QKICAgIG15ICRQREZPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UERGJyk7CgogICAgIyBzZXQgbmV3IHBvc2l0aW9uCiAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICBZICAgID0+IC0xNSwKICAgICk7CgogICAgIyBvdXRwdXQgaGVhZGxpbmUKICAgICRQREZPYmplY3QtPlRleHQoCiAgICAgICAgVGV4dCAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdMaW5rZWQgT2JqZWN0cycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUERGT3V0cHV0QXR0YWNobWVudHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUGFnZURhdGEgQ29uZmlnSXRlbUlEIEF0dGFjaG1lbnREYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQoICRQYXJhbXskQXJndW1lbnR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVQYWdlID0gJXsgJFBhcmFte1BhZ2VEYXRhfSB9OwogICAgbXkgJVRhYmxlUGFyYW07CiAgICBteSAkUm93ID0gMDsKCiAgICAjIGF0dGFjaG1lbnRzIGFyZSByZW5kZXJlZCBpbnRvIGEgc2VwYXJhdGUgcm93CiAgICBBVFRBQ0hNRU5UOgogICAgZm9yIG15ICRBdHRhY2htZW50ICggQHsgJFBhcmFte0F0dGFjaG1lbnREYXRhfSB9ICkgewoKICAgICAgICAjIGdldCB0aGUgbWV0YWRhdGEgb2YgdGhlIGN1cnJlbnQgYXR0YWNobWVudAogICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEF0dGFjaG1lbnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBkZWZpbmUgYXR0YWNobWVudCBsaW5lCiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJEF0dGFjaG1lbnREYXRhLT57RmlsZW5hbWV9IC4gJyAgKCcgLiAkQXR0YWNobWVudERhdGEtPntGaWxlc2l6ZX0gLiAnKSc7CgogICAgICAgICRSb3crKzsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSA4MDsKICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQzMTsKCiAgICAjIGdldCBwZGYgb2JqZWN0CiAgICBteSAkUERGT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtMTUsCiAgICApOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgICAgID0+ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKS0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdBdHRhY2htZW50cycpLAogICAgICAgIEhlaWdodCAgID0+IDcsCiAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgRm9udCAgICAgPT4gJ1Byb3BvcnRpb25hbEJvbGRJdGFsaWMnLAogICAgICAgIEZvbnRTaXplID0+IDcsCiAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTQsCiAgICApOwoKICAgICMgdGFibGUgcGFyYW1zCiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgID0gJ0N1dCc7CiAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgID0gMDsKICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSA9ICcjREREREREJzsKICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgPSAxOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgID0gMzsKCiAgICAjIG91dHB1dCB0YWJsZQogICAgUEFHRToKICAgIGZvciAoICRQYWdle1BhZ2VDb3VudH0gLi4gJFBhZ2V7TWF4UGFnZXN9ICkgewoKICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAlVGFibGVQYXJhbSA9ICRQREZPYmplY3QtPlRhYmxlKCVUYWJsZVBhcmFtKTsKCiAgICAgICAgIyBzdG9wIG91dHB1dCBvciBvdXRwdXQgbmV4dCBwYWdlCiAgICAgICAgaWYgKCAkVGFibGVQYXJhbXtTdGF0ZX0gKSB7CiAgICAgICAgICAgIGxhc3QgUEFHRTsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYWdle1BhZ2VUZXh0fSAuICcgJyAuICRQYWdle1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYWdle1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfR2V0Q0lTZWN0aW9ucyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRQYXJhbXtDb25maWdJdGVtfXtEZWZpbml0aW9uSUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiBpZiAhJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICBteSAkRGVzY3JpcHRpb247CiAgICBteSBATGlua1NlY3Rpb25zOwogICAgbXkgQERGU2VjdGlvbnM7CiAgICBteSAlU2VjdGlvbnNTZWVuOwogICAgbXkgJUdyb3VwTG9va3VwOwoKICAgIFBBR0U6CiAgICBmb3IgbXkgJFBhZ2UgKCAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9e1BhZ2VzfS0+QCogKSB7CgogICAgICAgICMgSW50ZXJmYWNlcyBpcyBvcHRpb25hbCwgZWZmZWN0aXZlbHkgZGVmYXVsdCB0byBbICdBZ2VudCcgXQogICAgICAgIGlmICggJFBhZ2UtPntJbnRlcmZhY2VzfSApIHsKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkXyBlcSAnQWdlbnQnIH0gJFBhZ2UtPntJbnRlcmZhY2VzfS0+QCo7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRQYWdlLT57R3JvdXBzfSApIHsKICAgICAgICAgICAgaWYgKCAhJUdyb3VwTG9va3VwICkgewogICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJ3JvJywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ3JhbnQgYWNjZXNzIHRvIHRoZSBwYWdlIG9ubHkgd2hlbiB0aGUgdXNlciBpcyBpbiBvbmUgb2YgdGhlIHNwZWNpZmllZCBncm91cHMKICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkR3JvdXBMb29rdXB7JF99IH0gJFBhZ2UtPntHcm91cHN9LT5AKjsKICAgICAgICB9CgogICAgICAgIFNFQ1RJT046CiAgICAgICAgZm9yIG15ICRTZWN0aW9uQ29uZmlnICggJFBhZ2UtPntDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgIG15ICRTZWN0aW9uID0gJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRTZWN0aW9uQ29uZmlnLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgIG5leHQgU0VDVElPTiBpZiAkU2VjdGlvbnNTZWVueyAkU2VjdGlvbkNvbmZpZy0+e1NlY3Rpb259IH0rKzsKICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbjsKCiAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSAmJiAkU2VjdGlvbi0+e1R5cGV9IG5lICdEeW5hbWljRmllbGRzJyApIHsKICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSBlcSAnRGVzY3JpcHRpb24nICkgewogICAgICAgICAgICAgICAgICAgICREZXNjcmlwdGlvbiA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWN0aW9uLT57VHlwZX0gZXEgJ0NvbmZpZ0l0ZW1MaW5rcycgKSB7CiAgICAgICAgICAgICAgICAgICAgcHVzaCBATGlua1NlY3Rpb25zLCAkU2VjdGlvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIHB1c2ggQERGU2VjdGlvbnMsICRTZWN0aW9uOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgRGVzY3JpcHRpb24gID0+ICREZXNjcmlwdGlvbiwKICAgICAgICBERlNlY3Rpb25zICAgPT4gXEBERlNlY3Rpb25zLAogICAgICAgIExpbmtTZWN0aW9ucyA9PiBcQExpbmtTZWN0aW9ucywKICAgICk7Cn0KCnN1YiBfUERGT3V0cHV0VmVyc2lvbkluZm9zIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KFBhZ2UgVmVyc2lvbiBWZXJzaW9uTnVtYmVyKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgcGRmIG9iamVjdAogICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgIFkgICAgPT4gLTE1LAogICAgKTsKCiAgICAjIGdldCBsYXlvdXQgb2JqZWN0CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgIFRleHQgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdWZXJzaW9uJykgLiAnICcKICAgICAgICAgICAgLiAkUGFyYW17VmVyc2lvbk51bWJlcn0sCiAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICBUeXBlICAgICA9PiAnQ3V0JywKICAgICAgICBGb250ICAgICA9PiAnUHJvcG9ydGlvbmFsQm9sZEl0YWxpYycsCiAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICBDb2xvciAgICA9PiAnIzY2NjY2NicsCiAgICApOwoKICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgWSAgICA9PiAtNCwKICAgICk7CgogICAgIyBjcmVhdGUgdGFibGUKICAgIG15ICRUYWJsZSA9IFsKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlZCcpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAnWyUgRGF0YS5DcmVhdGVUaW1lIHwgTG9jYWxpemUoIlRpbWVMb25nIikgJV0nLAogICAgICAgICAgICAgICAgRGF0YSAgICAgPT4gXCV7ICRQYXJhbXtWZXJzaW9ufSB9LAogICAgICAgICAgICApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NyZWF0ZWQgYnknKSAuICc6JywKICAgICAgICAgICAgVmFsdWUgPT4gJFBhcmFte1ZlcnNpb259LT57Q3JlYXRlQnlOYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJyAnLAogICAgICAgICAgICBWYWx1ZSA9PiAnICcsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTmFtZScpIC4gJzonLAogICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17VmVyc2lvbn0tPntOYW1lfSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZlcnNpb259LT57RGVwbFN0YXRlfSApLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0luY2lkZW50IFN0YXRlJykgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJFBhcmFte1ZlcnNpb259LT57SW5jaVN0YXRlfSApLAogICAgICAgIH0sCiAgICBdOwoKICAgIGlmICggJFBhcmFte0Rlc2NyaXB0aW9ufSAmJiAkUGFyYW17VmVyc2lvbn17RGVzY3JpcHRpb259ICkgewogICAgICAgIG15ICRQbGFpbkRlc2NyaXB0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpLT5Ub0FzY2lpKCBTdHJpbmcgPT4gJFBhcmFte1ZlcnNpb259e0Rlc2NyaXB0aW9ufSApOwogICAgICAgICRQbGFpbkRlc2NyaXB0aW9uICAgID1+IHMvXltcblxyXSsvLzsKICAgICAgICAkUGxhaW5EZXNjcmlwdGlvbiAgICA9fiBzL1tcblxyXSskLy87CgogICAgICAgIHB1c2ggJFRhYmxlLT5AKiwgKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnICcsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAnICcsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnRGVzY3JpcHRpb24nKSAuICc6JywKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRQbGFpbkRlc2NyaXB0aW9uLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgIyBhZGQgZHluYW1pYyBmaWVsZCBkYXRhIHRvIHRhYmxlCiAgICAkU2VsZi0+X1BERk91dHB1dERGT3V0cHV0KAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJFBhcmFte1ZlcnNpb259LAogICAgICAgIERGU2VjdGlvbnMgPT4gJFBhcmFte0RGU2VjdGlvbnN9LAogICAgICAgIFRhYmxlRGF0YSAgPT4gJFRhYmxlLAogICAgKTsKCiAgICBteSAlVGFibGVQYXJhbTsKICAgIG15ICRSb3dzID0gQHskVGFibGV9OwoKICAgIGZvciBteSAkUm93ICggMSAuLiAkUm93cyApIHsKICAgICAgICAkUm93LS07CiAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJFRhYmxlLT5bJFJvd10tPntLZXl9OwogICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVswXXtGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMV17Q29udGVudH0gPSAkVGFibGUtPlskUm93XS0+e1ZhbHVlfTsKICAgIH0KCiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVswXXtXaWR0aH0gPSAxMDA7CiAgICAkVGFibGVQYXJhbXtDb2x1bW5EYXRhfVsxXXtXaWR0aH0gPSA0MTE7CiAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICRUYWJsZVBhcmFte0JvcmRlcn0gICAgICAgICAgICAgICA9IDA7CiAgICAkVGFibGVQYXJhbXtGb250U2l6ZX0gICAgICAgICAgICAgPSA2OwogICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSAgICAgID0gJyNEREREREQnOwogICAgJFRhYmxlUGFyYW17UGFkZGluZ30gICAgICAgICAgICAgID0gMTsKICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgICA9IDM7CiAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICAgPSAzOwoKICAgICMgb3V0cHV0IHRhYmxlCiAgICBQQUdFOgogICAgZm9yICggJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSAuLiAkUGFyYW17UGFnZX0tPntNYXhQYWdlc30gKSB7CgogICAgICAgICMgb3V0cHV0IHRhYmxlIChvciBhIGZyYWdtZW50IG9mIGl0KQogICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICBsYXN0IFBBR0UgaWYgJFRhYmxlUGFyYW17U3RhdGV9OwoKICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAleyAkUGFyYW17UGFnZX0gfSwKICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhcmFte1BhZ2V9LT57UGFnZVRleHR9IC4gJyAnIC4gJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSwKICAgICAgICApOwogICAgICAgICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0rKzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRERk91dHB1dCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRQYXJhbXtDb25maWdJdGVtfXtEZWZpbml0aW9uSUR9LAogICAgKTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfTsKICAgIHJldHVybiBpZiAhJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfTsKCiAgICBteSBAREZPcmRlcmVkOwogICAgbXkgJURGU2VlbjsKICAgIG15ICRHcmVwREY7CiAgICAkR3JlcERGID0gc3ViIHsKICAgICAgICBFTlRSWToKICAgICAgICBmb3IgbXkgJEVudHJ5IChAXykgewogICAgICAgICAgICBpZiAoICRFbnRyeS0+e0RGfSApIHsKICAgICAgICAgICAgICAgIG5leHQgRU5UUlkgaWYgJERGU2VlbnsgJEVudHJ5LT57REZ9IH0rKzsKCiAgICAgICAgICAgICAgICBwdXNoIEBERk9yZGVyZWQsICRFbnRyeS0+e0RGfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRFbnRyeS0+e0dyaWR9ICYmICRFbnRyeS0+e0dyaWR9e1Jvd3N9ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkRW50cnktPntHcmlkfXtSb3dzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgJEdyZXBERi0+KCAkUm93LT5AKiApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfTsKCiAgICBTRUNUSU9OOgogICAgZm9yIG15ICRTZWN0aW9uICggQHsgJFBhcmFte0RGU2VjdGlvbnN9IC8vIFtdIH0gKSB7CiAgICAgICAgbmV4dCBTRUNUSU9OIGlmICEkU2VjdGlvbi0+e0NvbnRlbnR9OwoKICAgICAgICAkR3JlcERGLT4oICRTZWN0aW9uLT57Q29udGVudH0tPkAqICk7CiAgICB9CgogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBERk5BTUU6CiAgICBmb3IgbXkgJERGTmFtZSAoQERGT3JkZXJlZCkgewogICAgICAgIG5leHQgREZOQU1FIHVubGVzcyAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRERk5hbWUgfTsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfTsKCiAgICAgICAgbXkgJERpc3BsYXlWYWx1ZSA9ICRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkREZOYW1lIH0sCiAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkTGF5b3V0T2JqZWN0LAogICAgICAgICk7CgogICAgICAgIG15ICRWYWx1ZSA9ICREaXNwbGF5VmFsdWUtPntWYWx1ZX07CgogICAgICAgICMgcmVwbGFjZSBuZXdsaW5lcyB3aXRoIDxici8+IChmaXggZm9yIGJ1ZyMgNTkyOCkKICAgICAgICAkVmFsdWUgPX4gc3sgXG4gfXs8YnIvPn1neG1zOwoKICAgICAgICAjIGNvbnZlcnQgdmFsdWUgdG8gYXNjaWkKICAgICAgICAkVmFsdWUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SFRNTFV0aWxzJyktPlRvQXNjaWkoIFN0cmluZyA9PiAkVmFsdWUgKTsKCiAgICAgICAgIyBuZXcgcm93CiAgICAgICAgbXkgJE5ld1JvdyA9IHsKICAgICAgICAgICAgS2V5ICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICkgLiAnOicsCiAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICB9OwoKICAgICAgICAjIGFkZCByb3cgZGF0YQogICAgICAgIHB1c2ggQHsgJFBhcmFte1RhYmxlRGF0YX0gfSwgJE5ld1JvdzsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9QREZPdXRwdXRCYWNrbGlua3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoUGFnZSBDb25maWdJdGVtKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERlZmluaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+RGVmaW5pdGlvbkdldCgKICAgICAgICBEZWZpbml0aW9uSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgIG15IEBCYWNrbGlua1NlY3Rpb25zID0gQHsgJFBhcmFte0xpbmtTZWN0aW9uc30gLy8gW10gfTsKCiAgICByZXR1cm4gaWYgISREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn07CiAgICByZXR1cm4gMSBpZiAhQEJhY2tsaW5rU2VjdGlvbnM7CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRQREZPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlBERicpOwogICAgbXkgJExheW91dE9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgbXkgJERlZmF1bHRIZWFkZXIgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1JlZmVyZW5jZWQgYnknKTsKCiAgICBTRUNUSU9OOgogICAgZm9yIG15ICRTZWN0aW9uICggQEJhY2tsaW5rU2VjdGlvbnMgKSB7CgogICAgICAgIG15ICREaXJlY3Rpb24gPSAkU2VjdGlvbi0+e0xpbmtlZEFzfSB8fCAnU291cmNlJzsKICAgICAgICBteSAkVHlwZXMgICAgID0gSXNBcnJheVJlZldpdGhEYXRhKCAkU2VjdGlvbi0+e0xpbmtUeXBlc30gKSA/ICRTZWN0aW9uLT57TGlua1R5cGVzfSA6IHVuZGVmOwogICAgICAgIG15ICRIZWFkZXIgICAgPSAkU2VjdGlvbi0+e0hlYWRlcn0gPyAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRTZWN0aW9uLT57SGVhZGVyfSApIDogJERlZmF1bHRIZWFkZXI7CgogICAgICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtfXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBEaXJlY3Rpb24gICAgPT4gJERpcmVjdGlvbiwKICAgICAgICAgICAgVHlwZXMgICAgICAgID0+ICRUeXBlcywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBTRUNUSU9OIGlmICFAeyAkTGlua2VkQ29uZmlnSXRlbXMgLy8gW10gfTsKCiAgICAgICAgbXkgJUxpbmtlZENsYXNzZXM7CgogICAgICAgIGZvciBteSAkTGluayAoICRMaW5rZWRDb25maWdJdGVtcy0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcHVzaCBAeyAkTGlua2VkQ2xhc3Nlc3sgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSB9LCB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkTGluay0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIHNldCBuZXcgcG9zaXRpb24KICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgIFkgICAgPT4gLTE1LAogICAgICAgICk7CgogICAgICAgICMgb3V0cHV0IGhlYWRsaW5lCiAgICAgICAgJFBERk9iamVjdC0+VGV4dCgKICAgICAgICAgICAgVGV4dCAgICAgPT4gJEhlYWRlciwKICAgICAgICAgICAgSGVpZ2h0ICAgPT4gNywKICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0N1dCcsCiAgICAgICAgICAgIEZvbnQgICAgID0+ICdQcm9wb3J0aW9uYWxCb2xkSXRhbGljJywKICAgICAgICAgICAgRm9udFNpemUgPT4gNywKICAgICAgICAgICAgQ29sb3IgICAgPT4gJyM2NjY2NjYnLAogICAgICAgICk7CgogICAgICAgICMgc2V0IG5ldyBwb3NpdGlvbgogICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgWSAgICA9PiAtNCwKICAgICAgICApOwoKICAgICAgICAjIGNyZWF0ZSB0YWJsZQogICAgICAgIG15ICRUYWJsZSA9IFtdOwoKICAgICAgICBmb3IgbXkgJENsYXNzICgga2V5cyAlTGlua2VkQ2xhc3NlcyApIHsKICAgICAgICAgICAgcHVzaCAkVGFibGUtPkAqLCB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRDbGFzcyApLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJExpbmtlZENsYXNzZXN7ICRDbGFzcyB9WzBde05hbWV9LAogICAgICAgICAgICB9OwoKICAgICAgICAgICAgZm9yIG15ICRpICggMSAuLiAkI3sgJExpbmtlZENsYXNzZXN7ICRDbGFzcyB9IH0gKSB7CiAgICAgICAgICAgICAgICBwdXNoICRUYWJsZS0+QCosIHsKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnICcsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJExpbmtlZENsYXNzZXN7ICRDbGFzcyB9WyRpXXtOYW1lfSwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgIG15ICRSb3dzID0gQHskVGFibGV9OwoKICAgICAgICBmb3IgbXkgJFJvdyAoIDEgLi4gJFJvd3MgKSB7CiAgICAgICAgICAgICRSb3ctLTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Q2VsbERhdGF9WyRSb3ddWzBde0NvbnRlbnR9ID0gJFRhYmxlLT5bJFJvd10tPntLZXl9OwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX1bJFJvd11bMF17Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0NlbGxEYXRhfVskUm93XVsxXXtDb250ZW50fSA9ICRUYWJsZS0+WyRSb3ddLT57VmFsdWV9OwogICAgICAgIH0KCiAgICAgICAgJFRhYmxlUGFyYW17Q29sdW1uRGF0YX1bMF17V2lkdGh9ID0gMTAwOwogICAgICAgICRUYWJsZVBhcmFte0NvbHVtbkRhdGF9WzFde1dpZHRofSA9IDQxMTsKICAgICAgICAkVGFibGVQYXJhbXtUeXBlfSAgICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICAgPSAwOwogICAgICAgICRUYWJsZVBhcmFte0ZvbnRTaXplfSAgICAgICAgICAgICA9IDY7CiAgICAgICAgJFRhYmxlUGFyYW17QmFja2dyb3VuZENvbG9yfSAgICAgID0gJyNEREREREQnOwogICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmd9ICAgICAgICAgICAgICA9IDE7CiAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ1RvcH0gICAgICAgICAgID0gMzsKICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nQm90dG9tfSAgICAgICAgPSAzOwoKICAgICAgICAjIG91dHB1dCB0YWJsZQogICAgICAgIFBBR0U6CiAgICAgICAgZm9yICggJFBhcmFte1BhZ2V9LT57UGFnZUNvdW50fSAuLiAkUGFyYW17UGFnZX0tPntNYXhQYWdlc30gKSB7CgogICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgJVRhYmxlUGFyYW0gPSAkUERGT2JqZWN0LT5UYWJsZSglVGFibGVQYXJhbSk7CgogICAgICAgICAgICAjIHN0b3Agb3V0cHV0IG9yIG91dHB1dCBuZXh0IHBhZ2UKICAgICAgICAgICAgbGFzdCBQQUdFIGlmICRUYWJsZVBhcmFte1N0YXRlfTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAleyAkUGFyYW17UGFnZX0gfSwKICAgICAgICAgICAgICAgIEZvb3RlclJpZ2h0ID0+ICRQYXJhbXtQYWdlfS0+e1BhZ2VUZXh0fSAuICcgJyAuICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtQYWdlfS0+e1BhZ2VDb3VudH0rKzsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Modules/AgentITSMConfigItemSearch.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSB1bmlxKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0geyVQYXJhbX07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CiAgICBteSAkT3V0cHV0OwoKICAgICMgZ2V0IG5lY2Vzc2FyeSBvYmplY3RzCiAgICBteSAkQmFja2VuZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgIG15ICRMYXlvdXRPYmplY3QgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKICAgIG15ICRQYXJhbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKICAgIG15ICRTZWFyY2hQcm9maWxlT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTZWFyY2hQcm9maWxlJyk7CgogICAgIyBnZXQgY29uZmlnIG9mIGZyb250ZW5kIG1vZHVsZQogICAgJFNlbGYtPntDb25maWd9ID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgICMgdXNlIGNvbHVtbiBjb25maWdzIGZyb20gQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgJFNlbGYtPntDb25maWd9e0NsYXNzQ29sdW1uc0F2YWlsYWJsZX0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbScpLT57Q2xhc3NDb2x1bW5zQXZhaWxhYmxlfTsKICAgICRTZWxmLT57Q29uZmlnfXtDbGFzc0NvbHVtbnNEZWZhdWx0fSAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkFnZW50SVRTTUNvbmZpZ0l0ZW0nKS0+e0NsYXNzQ29sdW1uc0RlZmF1bHR9OwoKICAgICMgZ2V0IGNvbmZpZyBkYXRhCiAgICAkU2VsZi0+e1N0YXJ0SGl0fSAgICA9IGludCggJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDEgKTsKICAgICRTZWxmLT57U2VhcmNoTGltaXR9ID0gJFNlbGYtPntDb25maWd9LT57U2VhcmNoTGltaXR9IHx8IDEwMDAwOwogICAgJFNlbGYtPntTb3J0Qnl9ICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57J1NvcnRCeTo6RGVmYXVsdCd9CiAgICAgICAgfHwgJ051bWJlcic7CiAgICAkU2VsZi0+e09yZGVyQnl9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ09yZGVyQnknICkKICAgICAgICB8fCAkU2VsZi0+e0NvbmZpZ30tPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdEb3duJzsKICAgICRTZWxmLT57UHJvZmlsZX0gICAgICAgID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1Byb2ZpbGUnICkgICAgIHx8ICcnOwogICAgJFNlbGYtPntTYXZlUHJvZmlsZX0gICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU2F2ZVByb2ZpbGUnICkgfHwgJyc7CiAgICAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdUYWtlTGFzdFNlYXJjaCcgKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBhY2Nlc3MgcmlnaHRzIG9uIHRoZSBjbGFzc2VzCiAgICBmb3IgbXkgJENsYXNzSUQgKCBzb3J0IGtleXMgJXskQ2xhc3NMaXN0fSApIHsKICAgICAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgICAgIFR5cGUgICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgIFNjb3BlICAgPT4gJ0NsYXNzJywKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgVXNlcklEICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgZGVsZXRlICRDbGFzc0xpc3QtPnskQ2xhc3NJRH0gaWYgISRIYXNBY2Nlc3M7CiAgICB9CgogICAgIyBnZXQgY2xhc3MgaWQKICAgIG15ICRDbGFzc0lEID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NsYXNzSUQnICk7CgogICAgIyBjaGVjayBpZiBjbGFzcyBpZCBpcyB2YWxpZAogICAgaWYgKCAkQ2xhc3NJRCAmJiAhJENsYXNzTGlzdC0+eyRDbGFzc0lEfSApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdJbnZhbGlkIENsYXNzSUQhJyksCiAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHNpbmdsZSBwYXJhbXMKICAgIG15ICVHZXRQYXJhbTsKICAgIG15ICREZWZpbml0aW9uOwoKICAgIGlmICgkQ2xhc3NJRCkgewoKICAgICAgICAjIHNldCBmaWx0ZXIgcGFyYW1zIGZvciBzaG93aW5nIGNvcnJlY3QgY29sdW1ucwogICAgICAgICRTZWxmLT57RmlsdGVyfSA9ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgJFNlbGYtPntGaWx0ZXJzfS0+JSogPSBtYXAgewogICAgICAgICAgICAkXyA9PiB7CiAgICAgICAgICAgICAgICBOYW1lID0+ICRfLAogICAgICAgICAgICB9CiAgICAgICAgfSB2YWx1ZXMgJENsYXNzTGlzdC0+JSo7CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZGVmaW5pdGlvbgogICAgICAgICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBhYm9ydCwgaWYgbm8gZGVmaW5pdGlvbiBpcyBkZWZpbmVkCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJywgJENsYXNzSUQgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVTZXRJbm5lckZpZWxkczsKICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCB2YWx1ZXMgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntGaWVsZFR5cGV9IGVxICdTZXQnOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfSApOwoKICAgICAgICAgICAgIyBpdGVyYXRlIHRoZSBlbnRpcmUgSW5jbHVkZSBzdHJ1Y3R1cmUgdG8gZ2V0IHRoZSB2ZXJzaW9uZWQgZHluYW1pYyBmaWVsZCBjb25maWdzCiAgICAgICAgICAgIElOQ0xVREVFTEVNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEluY2x1ZGVFbGVtZW50ICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0tPkAqICkgewoKICAgICAgICAgICAgICAgIGlmICggJEluY2x1ZGVFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgICRJbmNsdWRlRWxlbWVudC0+e0RlZmluaXRpb259e0xhYmVsfSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSApIC4gJzo6JwogICAgICAgICAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ICk7CiAgICAgICAgICAgICAgICAgICAgJFNldElubmVyRmllbGRzeyAkSW5jbHVkZUVsZW1lbnQtPntERn0gfSA9ICRJbmNsdWRlRWxlbWVudC0+e0RlZmluaXRpb259OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfSApIHsKCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJTkNMVURFRUxFTUVOVCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBJTkNMVURFRUxFTUVOVCB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfXtSb3dzfSApOwoKICAgICAgICAgICAgICAgICAgICBST1c6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKCAkSW5jbHVkZUVsZW1lbnQtPntHcmlkfXtSb3dzfS0+QCogKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFJPVyB1bmxlc3MgSXNBcnJheVJlZldpdGhEYXRhKCRSb3cpOwoKICAgICAgICAgICAgICAgICAgICAgICAgUk9XRUxFTUVOVDoKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRSb3dFbGVtZW50ICggJFJvdy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRSb3dFbGVtZW50LT57REZ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkgLiAnOjonCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkUm93RWxlbWVudC0+e0RlZmluaXRpb259e0xhYmVsfSApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTZXRJbm5lckZpZWxkc3sgJFJvd0VsZW1lbnQtPntERn0gfSA9ICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfSA9IHsKICAgICAgICAgICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9LT4lKiwKICAgICAgICAgICAgJVNldElubmVyRmllbGRzLAogICAgICAgIH07CgogICAgICAgICMgbG9hZCBwcm9maWxlcyBzdHJpbmcgcGFyYW1zCiAgICAgICAgaWYgKCAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnTG9hZFByb2ZpbGUnICYmICRTZWxmLT57UHJvZmlsZX0gKSB8fCAkU2VsZi0+e1Rha2VMYXN0U2VhcmNofSApIHsKICAgICAgICAgICAgJUdldFBhcmFtID0gJFNlYXJjaFByb2ZpbGVPYmplY3QtPlNlYXJjaFByb2ZpbGVHZXQoCiAgICAgICAgICAgICAgICBCYXNlICAgICAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnIC4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGNvbnZlcnQgYXR0cmlidXRlcwogICAgICAgICAgICBpZiAoICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9ICYmIHJlZiAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gPSBqb2luICc7JywgQHsgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgZGVmYXVsdCBwYXJhbXMgb2YgZGVmYXVsdCBhdHRyaWJ1dGVzCiAgICAgICAgICAgIGlmICggJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfSApIHsKICAgICAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRTZWxmLT57Q29uZmlnfXtEZWZhdWx0c30gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAhJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0R5bmFtaWNGaWVsZCc7CgogICAgICAgICAgICAgICAgICAgIGlmICggJEtleSA9fiAvXihDb25maWdJdGVtKShDcmVhdGV8Q2hhbmdlKS8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBJdGVtcyA9IHNwbGl0IC87LywgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEl0ZW0gKEBJdGVtcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgKCAkS2V5LCAkVmFsdWUgKSA9IHNwbGl0IC89LywgJEl0ZW07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gfHw9ICRWYWx1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9IHx8PSAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIHN0cmluZyBwYXJhbXMgKGdldCBzdWJtaXR0ZWQgcGFyYW1zKQogICAgICAgICAgICBmb3IgbXkgJEtleSAocXcoTnVtYmVyIE5hbWUgUHJldmlvdXNWZXJzaW9uU2VhcmNoIFJlc3VsdEZvcm0gU2hvd25BdHRyaWJ1dGVzKSkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBzdHJpbmcgcGFyYW1zIChnZXQgc3VibWl0dGVkIHBhcmFtcykKICAgICAgICAgICAgICAgICRHZXRQYXJhbXskS2V5fSA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICRLZXkgKTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSB3aGl0ZSBzcGFjZSBvbiB0aGUgc3RhcnQgYW5kIGVuZAogICAgICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID1+IHMvXHMrJC8vZzsKICAgICAgICAgICAgICAgICAgICAkR2V0UGFyYW17JEtleX0gPX4gcy9eXHMrLy9nOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBhcnJheSBwYXJhbXMKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3KERlcGxTdGF0ZUlEcyBJbmNpU3RhdGVJRHMpKSB7CgogICAgICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGFycmF5IHBhcmFtcyAoZ2V0IHN1Ym1pdHRlZCBwYXJhbXMpCiAgICAgICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkS2V5ICk7CiAgICAgICAgICAgICAgICBpZiAoQEFycmF5KSB7CiAgICAgICAgICAgICAgICAgICAgJEdldFBhcmFteyRLZXl9ID0gXEBBcnJheTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBnZXQgRHluYW1pYyBmaWVsZHMgZnJvbSBwYXJhbSBvYmplY3QKICAgICAgICAgICAgIyBjeWNsZSB0cm91Z2ggdGhlIGFjdGl2YXRlZCBEeW5hbWljIEZpZWxkcyBmb3IgdGhpcyBzY3JlZW4KICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+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+JSogKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIGNyZWF0ZSBhIHNlcGFyYXRvciBmb3IgZHluYW1pYyBmaWVsZHMgYXR0cmlidXRlcwogICAgICAgICAgICBpZiAoJER5bmFtaWNGaWVsZFNlcGFyYXRvcikgewogICAgICAgICAgICAgICAgcHVzaCBAQXR0cmlidXRlcywgKAogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgPT4gJycsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgID0+ICctJywKICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZXBhcmF0b3IgPSAwOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgZHluYW1pYyBmaWVsZCBsYWJlbAogICAgICAgICAgICBteSAkVHJhbnNsYXRlZER5bmFtaWNGaWVsZExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBzdWZmaXgKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkU3VmZml4ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgICAgICRQcmVmZXJlbmNlLT57TGFiZWxTdWZmaXh9LAogICAgICAgICAgICAgICAgKSB8fCAnJzsKCiAgICAgICAgICAgICAgICBpZiAoJFRyYW5zbGF0ZWRTdWZmaXgpIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFN1ZmZpeCA9ICcgKCcgLiAkVHJhbnNsYXRlZFN1ZmZpeCAuICcpJzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBwdXNoIEBBdHRyaWJ1dGVzLCAoCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBLZXkgPT4gJ1NlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFRyYW5zbGF0ZWREeW5hbWljRmllbGRMYWJlbCAuICRUcmFuc2xhdGVkU3VmZml4LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNyZWF0ZSBIVE1MIHN0cmluZ3MgZm9yIGFsbCBkeW5hbWljIGZpZWxkcwogICAgICAgIG15ICVEeW5hbWljRmllbGRIVE1MOwoKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGhhcyBQb3NzaWJsZVZhbHVlcyBwcm9wZXJ0eSBpbiBpdHMgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUG9zc2libGVWYWx1ZXMpICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBoaXN0b3JpY2FsIHZhbHVlcyBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgICAgICAgICAgbXkgJEhpc3RvcmljYWxWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+SGlzdG9yaWNhbFZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJERhdGEgPSAkUG9zc2libGVWYWx1ZXM7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGhpc3RvcmljIHZhbHVlcyB0byBjdXJyZW50IHZhbHVlcyAoaWYgdGhleSBkb24ndCBleGlzdCBhbnltb3JlKQogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEhpc3RvcmljYWxWYWx1ZXMpICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRIaXN0b3JpY2FsVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREYXRhLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGEtPnskS2V5fSA9ICRIaXN0b3JpY2FsVmFsdWVzLT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY29udmVydCBwb3NzaWJsZSB2YWx1ZXMga2V5ID0+IHZhbHVlIHRvIGtleSA9PiBrZXkgZm9yIEFDTHMgdXNpbmcgYSBIYXNoIHNsaWNlCiAgICAgICAgICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAleyREYXRhfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICAgICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgID0+IFwlQWNsRGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlRmlsdGVyID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnZlcnQgRmlsZXIga2V5ID0+IGtleSBiYWNrIHRvIGtleSA9PiB2YWx1ZSB1c2luZyBtYXAKICAgICAgICAgICAgICAgICAgICAgICAgJXskUG9zc2libGVWYWx1ZXNGaWx0ZXJ9ID0gbWFwIHsgJF8gPT4gJERhdGEtPnskX30gfSBrZXlzICVGaWx0ZXI7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBIVE1MCiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9ID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgICAgPT4gXCVHZXRQYXJhbSwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlc0ZpbHRlciA9PiAkUG9zc2libGVWYWx1ZXNGaWx0ZXIsCiAgICAgICAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlICAgICAgICAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntDb25maWd9e0RlZmF1bHRzfXtEeW5hbWljRmllbGR9eyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSwKICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgPT4gJFByZWZlcmVuY2UtPntUeXBlfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYnVpbGQgYXR0cmlidXRlcyBzdHJpbmcgZm9yIGF0dHJpYnV0ZXMgbGlzdAogICAgICAgICRQYXJhbXtBdHRyaWJ1dGVzU3RyZ30gPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcQEF0dHJpYnV0ZXMsCiAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQXR0cmlidXRlJywKICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDAsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAjIGJ1aWxkIGF0dHJpYnV0ZXMgc3RyaW5nIGZvciByZWNvdmVyeSBvbiBhZGQgb3Igc3VidHJhY3Qgc2VhcmNoIGZpZWxkcwogICAgICAgICRQYXJhbXtBdHRyaWJ1dGVzT3JpZ1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBBdHRyaWJ1dGVzLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0F0dHJpYnV0ZU9yaWcnLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgIG15ICVQcm9maWxlcyA9ICRTZWFyY2hQcm9maWxlT2JqZWN0LT5TZWFyY2hQcm9maWxlTGlzdCgKICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICBVc2VyTG9naW4gPT4gJFNlbGYtPntVc2VyTG9naW59LAogICAgICAgICk7CgogICAgICAgICRQYXJhbXtQcm9maWxlc1N0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgICA9PiBcJVByb2ZpbGVzLAogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ1Byb2ZpbGUnLAogICAgICAgICAgICBJRCAgICAgICAgICAgPT4gJ1NlYXJjaFByb2ZpbGUnLAogICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIGdldCBkZXBsb3ltZW50IHN0YXRlIGxpc3QKICAgICAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGRlcGxveW1lbnQgc3RhdGVzCiAgICAgICAgbXkgJEN1ckRlcGxTdGF0ZU9wdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGVwbFN0YXRlTGlzdCwKICAgICAgICAgICAgTmFtZSAgICAgICA9PiAnRGVwbFN0YXRlSURzJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17RGVwbFN0YXRlSURzfSB8fCBbXSwKICAgICAgICAgICAgU2l6ZSAgICAgICA9PiA1LAogICAgICAgICAgICBNdWx0aXBsZSAgID0+IDEsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgIyBnZXQgaW5jaWRlbnQgc3RhdGUgbGlzdAogICAgICAgIG15ICRJbmNpU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgZHJvcGRvd24gZm9yIHNlbGVjdGluZyB0aGUgd2FudGVkIGluY2lkZW50IHN0YXRlcwogICAgICAgIG15ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgICAgICAgPT4gJEluY2lTdGF0ZUxpc3QsCiAgICAgICAgICAgIE5hbWUgICAgICAgPT4gJ0luY2lTdGF0ZUlEcycsCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte0luY2lTdGF0ZUlEc30gfHwgW10sCiAgICAgICAgICAgIFNpemUgICAgICAgPT4gNSwKICAgICAgICAgICAgTXVsdGlwbGUgICA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICMgZ2VuZXJhdGUgUHJldmlvdXNWZXJzaW9uT3B0aW9uU3RyZwogICAgICAgIG15ICRQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIE5hbWUgPT4gJ1ByZXZpb3VzVmVyc2lvblNlYXJjaCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgMCA9PiBUcmFuc2xhdGFibGUoJ05vJyksCiAgICAgICAgICAgICAgICAxID0+IFRyYW5zbGF0YWJsZSgnWWVzJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFNlbGVjdGVkSUQgPT4gJEdldFBhcmFte1ByZXZpb3VzVmVyc2lvblNlYXJjaH0gfHwgJzAnLAogICAgICAgICAgICBDbGFzcyAgICAgID0+ICdNb2Rlcm5pemUnLAogICAgICAgICk7CgogICAgICAgICMgYnVpbGQgb3V0cHV0IGZvcm1hdCBzdHJpbmcKICAgICAgICAkUGFyYW17UmVzdWx0Rm9ybVN0cmd9ID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgTm9ybWFsID0+IFRyYW5zbGF0YWJsZSgnTm9ybWFsJyksCiAgICAgICAgICAgICAgICBQcmludCAgPT4gVHJhbnNsYXRhYmxlKCdQcmludCcpLAogICAgICAgICAgICAgICAgQ1NWICAgID0+IFRyYW5zbGF0YWJsZSgnQ1NWJyksCiAgICAgICAgICAgICAgICBFeGNlbCAgPT4gVHJhbnNsYXRhYmxlKCdFeGNlbCcpLAogICAgICAgICAgICB9LAogICAgICAgICAgICBOYW1lICAgICAgID0+ICdSZXN1bHRGb3JtJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCA9PiAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gfHwgJ05vcm1hbCcsCiAgICAgICAgICAgIENsYXNzICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0FKQVhDb250ZW50JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICAgICAgICAgICAgICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICAgICAgQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyAgICA9PiAkQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZywKICAgICAgICAgICAgICAgIEN1ckluY2lTdGF0ZU9wdGlvblN0cmcgICAgPT4gJEN1ckluY2lTdGF0ZU9wdGlvblN0cmcsCiAgICAgICAgICAgICAgICBQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnID0+ICRQcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnLAogICAgICAgICAgICAgICAgQXR0cmlidXRlc1N0cmcgICAgICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlc1N0cmd9LAogICAgICAgICAgICAgICAgQXR0cmlidXRlc09yaWdTdHJnICAgICAgICA9PiAkUGFyYW17QXR0cmlidXRlc09yaWdTdHJnfSwKICAgICAgICAgICAgICAgIFJlc3VsdEZvcm1TdHJnICAgICAgICAgICAgPT4gJFBhcmFte1Jlc3VsdEZvcm1TdHJnfSwKICAgICAgICAgICAgICAgIFByb2ZpbGVzU3RyZyAgICAgICAgICAgICAgPT4gJFBhcmFte1Byb2ZpbGVzU3RyZ30sCiAgICAgICAgICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICAgICAgID0+ICRHZXRQYXJhbXtOdW1iZXJ9IHx8ICcnLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgICAgICA9PiAkR2V0UGFyYW17TmFtZX0gICB8fCAnJywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBEeW5hbWljIGZpZWxkcyBibG9ja3MKICAgICAgICAjIGN5Y2xlIHRyb3VnaCB0aGUgYWN0aXZhdGVkIER5bmFtaWMgRmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFNlbGYtPntDb25maWd9e0R5bmFtaWNGaWVsZH17ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJFBlcm1pdHRlZER5bmFtaWNGaWVsZHN7ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9OwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBza2lwIGZpZWxkcyB0aGF0IEhUTUwgY291bGQgbm90IGJlIHJldHJpZXZlZAogICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSFRNTHsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJFByZWZlcmVuY2UtPntUeXBlfSB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPntGaWVsZH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgYXR0cmlidXRlcyBmb3Igc2VhcmNoCiAgICAgICAgbXkgQFNlYXJjaEF0dHJpYnV0ZXM7CgogICAgICAgIG15ICVHZXRQYXJhbUJhY2t1cCA9ICVHZXRQYXJhbTsKCiAgICAgICAgIyBzaG93IGF0dHJpYnV0ZXMKICAgICAgICBteSBAU2hvd25BdHRyaWJ1dGVzOwogICAgICAgIGlmICggJEdldFBhcmFtQmFja3Vwe1Nob3duQXR0cmlidXRlc30gKSB7CiAgICAgICAgICAgIEBTaG93bkF0dHJpYnV0ZXMgPSBzcGxpdCAvOy8sICRHZXRQYXJhbUJhY2t1cHtTaG93bkF0dHJpYnV0ZXN9OwogICAgICAgIH0KICAgICAgICBteSAlQWxyZWFkeVNob3duOwoKICAgICAgICBpZiAoJENsYXNzSUQpIHsKICAgICAgICAgICAgSVRFTToKICAgICAgICAgICAgZm9yIG15ICRJdGVtIChAQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgbXkgJEtleSA9ICRJdGVtLT57S2V5fTsKICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAhJEtleTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHNob3duCiAgICAgICAgICAgICAgICBpZiAoQFNob3duQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgICAgIG15ICRTaG93ID0gMDsKICAgICAgICAgICAgICAgICAgICBTSE9XTl9BVFRSSUJVVEU6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRTaG93bkF0dHJpYnV0ZSAoQFNob3duQXR0cmlidXRlcykgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICdMYWJlbCcgLiAkS2V5IGVxICRTaG93bkF0dHJpYnV0ZSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRTaG93ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgU0hPV05fQVRUUklCVVRFOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAhJFNob3c7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAjIFNraXAgdW5kZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgbmV4dCBJVEVNIGlmICFkZWZpbmVkICRHZXRQYXJhbUJhY2t1cHskS2V5fTsKCiAgICAgICAgICAgICAgICAgICAgIyBTa2lwIGVtcHR5IHN0cmluZ3MKICAgICAgICAgICAgICAgICAgICBuZXh0IElURU0gaWYgJEdldFBhcmFtQmFja3VweyRLZXl9IGVxICcnOwoKICAgICAgICAgICAgICAgICAgICAjIFNraXAgZW1wdHkgYXJyYXlzCiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYgJEdldFBhcmFtQmFja3VweyRLZXl9IGVxICdBUlJBWScgJiYgIUB7ICRHZXRQYXJhbUJhY2t1cHskS2V5fSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IElURU07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2hvdyBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIG5leHQgSVRFTSBpZiAkQWxyZWFkeVNob3dueyRLZXl9OwogICAgICAgICAgICAgICAgJEFscmVhZHlTaG93bnskS2V5fSA9IDE7CgogICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoQXR0cmlidXRlcywgJEtleTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBObyBwcm9maWxlLCBzaG93IGRlZmF1bHQgc2NyZWVuCiAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAjIE1lcmdlIHJlZ3VsYXIgc2hvdy9oaWRlIHNldHRpbmdzIGFuZCB0aGUgc2V0dGluZ3MgZm9yIHRoZSBkeW5hbWljIGZpZWxkcwogICAgICAgICAgICBteSAlRGVmYXVsdHMgPSAleyAkU2VsZi0+e0NvbmZpZ317RGVmYXVsdHN9IHx8IHt9IH07CiAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkcyAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfSB8fCB7fSB9ICkgewogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfS0+eyREeW5hbWljRmllbGRzfSA9PSAyICkgewogICAgICAgICAgICAgICAgICAgICREZWZhdWx0c3siU2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkcyJ9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgQE9yZGVyZWREZWZhdWx0czsKICAgICAgICAgICAgaWYgKCVEZWZhdWx0cykgewoKICAgICAgICAgICAgICAgICMgb3JkZXJpbmcgYXR0cmlidXRlcyBvbiB0aGUgc2FtZSBvcmRlciBsaWtlIGluIEF0dHJpYnV0ZXMKICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgICAgICAgICBteSAkS2V5QXRyID0gJEl0ZW0tPntLZXl9OwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVEZWZhdWx0cyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkS2V5IGVxICRLZXlBdHIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBPcmRlcmVkRGVmYXVsdHMsICRLZXk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgS0VZOgogICAgICAgICAgICAgICAgZm9yIG15ICRLZXkgKEBPcmRlcmVkRGVmYXVsdHMpIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAkS2V5IGVxICdEeW5hbWljRmllbGQnOyAgICAjIElnbm9yZSBlbnRyeSBmb3IgREYgY29uZmlnCiAgICAgICAgICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEFscmVhZHlTaG93bnskS2V5fTsKICAgICAgICAgICAgICAgICAgICAkQWxyZWFkeVNob3dueyRLZXl9ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgcHVzaCBAU2VhcmNoQXR0cmlidXRlcywgJEtleTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBJZiBubyBhdHRyaWJ1dGUgaXMgc2hvd24sIHNob3cgZnVsbHRleHQgc2VhcmNoLgogICAgICAgICAgICBpZiAoICFrZXlzICVBbHJlYWR5U2hvd24gKSB7CiAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hBdHRyaWJ1dGVzLCAnRnVsbHRleHQnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSBAUHJvZmlsZUF0dHJpYnV0ZXM7CgogICAgICAgICMgc2hvdyBhdHRyaWJ1dGVzCiAgICAgICAgbXkgJEF0dHJpYnV0ZUlzVXNlZCA9IDA7CiAgICAgICAgS0VZOgogICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVHZXRQYXJhbSApIHsKICAgICAgICAgICAgbmV4dCBLRVkgaWYgISRLZXk7CiAgICAgICAgICAgIG5leHQgS0VZIGlmICFkZWZpbmVkICRHZXRQYXJhbXskS2V5fTsKICAgICAgICAgICAgbmV4dCBLRVkgaWYgJEdldFBhcmFteyRLZXl9IGVxICcnOwogICAgICAgICAgICBuZXh0IEtFWSBpZiByZWYgJEdldFBhcmFteyRLZXl9IGVxICdBUlJBWScgJiYgISRHZXRQYXJhbXskS2V5fS0+QCo7CgogICAgICAgICAgICAkQXR0cmlidXRlSXNVc2VkID0gMTsKCiAgICAgICAgICAgIHB1c2ggQFByb2ZpbGVBdHRyaWJ1dGVzLCAkS2V5OwogICAgICAgIH0KCiAgICAgICAgIyBpZiBubyBhdHRyaWJ1dGUgaXMgc2hvd24sIHNob3cgY29uZmlnaXRlbSBudW1iZXIKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9ICkgewoKICAgICAgICAgICAgIyBtZXJnZSBzZWFyY2ggYW5kIHByb2ZpbGUgYXR0cmlidXRlcwogICAgICAgICAgICBpZiAoQFNlYXJjaEF0dHJpYnV0ZXMpIHsKICAgICAgICAgICAgICAgIEBQcm9maWxlQXR0cmlidXRlcyA9IHVuaXEoIEBQcm9maWxlQXR0cmlidXRlcywgQFNlYXJjaEF0dHJpYnV0ZXMgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIEBQcm9maWxlQXR0cmlidXRlcyA9IHVuaXEoIEBQcm9maWxlQXR0cmlidXRlcywgJ051bWJlcicgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICBLZXkgICA9PiAnSVRTTVNlYXJjaFByb2ZpbGVBdHRyaWJ1dGVzJywKICAgICAgICAgICAgVmFsdWUgPT4gXEBQcm9maWxlQXR0cmlidXRlcywKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB0ZW1wbGF0ZQogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIEFKQVggICAgICAgICA9PiAxLAogICAgICAgICk7CgogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICBOb0NhY2hlICAgICA9PiAxLAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sJywKICAgICAgICAgICAgQ29udGVudCAgICAgPT4gJE91dHB1dCwKICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIHBlcmZvcm0gc2VhcmNoCiAgICAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBlbHNpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnU2VhcmNoJyApIHsKCiAgICAgICAgbXkgJFNlYXJjaERpYWxvZyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTZWFyY2hEaWFsb2cnICk7CgogICAgICAgICMgZmlsbCB1cCBwcm9maWxlIG5hbWUgKGUuZy4gd2l0aCBsYXN0LXNlYXJjaCkKICAgICAgICBpZiAoICEkU2VsZi0+e1Byb2ZpbGV9IHx8ICEkU2VsZi0+e1NhdmVQcm9maWxlfSApIHsKICAgICAgICAgICAgJFNlbGYtPntQcm9maWxlfSA9ICdsYXN0LXNlYXJjaCc7CiAgICAgICAgfQoKICAgICAgICAjIHN0b3JlIGxhc3Qgb3ZlcnZpZXcgc2NyZWVuCiAgICAgICAgbXkgJFVSTCA9ICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaDtQcm9maWxlPSRTZWxmLT57UHJvZmlsZX07IgogICAgICAgICAgICAuICJUYWtlTGFzdFNlYXJjaD0xO1N0YXJ0SGl0PSRTZWxmLT57U3RhcnRIaXR9O1N1YmFjdGlvbj1TZWFyY2g7IgogICAgICAgICAgICAuICJPcmRlckJ5PSRTZWxmLT57T3JkZXJCeX07U29ydEJ5PSRTZWxmLT57U29ydEJ5fSI7CgogICAgICAgIGlmICgkQ2xhc3NJRCkgewogICAgICAgICAgICAkVVJMIC49ICI7Q2xhc3NJRD0kQ2xhc3NJRCI7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBzZXNzaW9uIG9iamVjdAogICAgICAgIG15ICRTZXNzaW9uT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyk7CgogICAgICAgICRTZXNzaW9uT2JqZWN0LT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnTGFzdFNjcmVlbk92ZXJ2aWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKICAgICAgICAkU2Vzc2lvbk9iamVjdC0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ0xhc3RTY3JlZW5WaWV3JywKICAgICAgICAgICAgVmFsdWUgICAgID0+ICRVUkwsCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGFzc0lEIGlzIHJlcXVpcmVkIGZvciB0aGUgc2VhcmNoIG1hc2sgYW5kIGZvciBhY3R1YWwgc2VhcmNoaW5nCiAgICAgICAgaWYgKCAhJENsYXNzSUQgKSB7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDbGFzc0lEIGlzIGdpdmVuIScpLAogICAgICAgICAgICAgICAgQ29tbWVudCA9PiBUcmFuc2xhdGFibGUoJ1BsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLicpLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjaGVjayBpZiB1c2VyIGlzIGFsbG93ZWQgdG8gc2VhcmNoIGNsYXNzCiAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICBUeXBlICAgID0+ICRTZWxmLT57Q29uZmlnfS0+e1Blcm1pc3Npb259LAogICAgICAgICAgICBTY29wZSAgID0+ICdDbGFzcycsCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIFVzZXJJRCAgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgc2hvdyBlcnJvciBzY3JlZW4KICAgICAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+IFRyYW5zbGF0YWJsZSgnTm8gYWNjZXNzIHJpZ2h0cyBmb3IgdGhpcyBjbGFzcyBnaXZlbiEnKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGN1cnJlbnQgZGVmaW5pdGlvbgogICAgICAgIG15ICREZWZpbml0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkRlZmluaXRpb25HZXQoCiAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBhYm9ydCwgaWYgbm8gZGVmaW5pdGlvbiBpcyBkZWZpbmVkCiAgICAgICAgaWYgKCAhJERlZmluaXRpb24tPntEZWZpbml0aW9uSUR9ICkgewogICAgICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgICAgICAgICBNZXNzYWdlID0+CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAnTm8gZGVmaW5pdGlvbiB3YXMgZGVmaW5lZCBmb3IgY2xhc3MgJXMhJywgJENsYXNzSUQgKSwKICAgICAgICAgICAgICAgIENvbW1lbnQgPT4gVHJhbnNsYXRhYmxlKCdQbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvci4nKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICAgICAgbXkgJVNldElubmVyRmllbGRzOwogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1NldCc7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0luY2x1ZGV9ICk7CgogICAgICAgICAgICAjIGl0ZXJhdGUgdGhlIGVudGlyZSBJbmNsdWRlIHN0cnVjdHVyZSB0byBnZXQgdGhlIHZlcnNpb25lZCBkeW5hbWljIGZpZWxkIGNvbmZpZ3MKICAgICAgICAgICAgSU5DTFVERUVMRU1FTlQ6CiAgICAgICAgICAgIGZvciBteSAkSW5jbHVkZUVsZW1lbnQgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtJbmNsdWRlfS0+QCogKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkSW5jbHVkZUVsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9ICkgLiAnOjonCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCAkSW5jbHVkZUVsZW1lbnQtPntEZWZpbml0aW9ufXtMYWJlbH0gKTsKICAgICAgICAgICAgICAgICAgICAkU2V0SW5uZXJGaWVsZHN7ICRJbmNsdWRlRWxlbWVudC0+e0RGfSB9ID0gJEluY2x1ZGVFbGVtZW50LT57RGVmaW5pdGlvbn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICkgewoKICAgICAgICAgICAgICAgICAgICBuZXh0IElOQ0xVREVFTEVNRU5UIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9ICk7CgogICAgICAgICAgICAgICAgICAgIFJPVzoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvdyAoICRJbmNsdWRlRWxlbWVudC0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgUk9XIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJFJvdyk7CgogICAgICAgICAgICAgICAgICAgICAgICBST1dFTEVNRU5UOgogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJFJvd0VsZW1lbnQgKCAkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFJvd0VsZW1lbnQtPntERn0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFJvd0VsZW1lbnQtPntEZWZpbml0aW9ufXtMYWJlbH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH0gKSAuICc6OicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoICRSb3dFbGVtZW50LT57RGVmaW5pdGlvbn17TGFiZWx9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFNldElubmVyRmllbGRzeyAkUm93RWxlbWVudC0+e0RGfSB9ID0gJFJvd0VsZW1lbnQtPntEZWZpbml0aW9ufTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9ID0gewogICAgICAgICAgICAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqLAogICAgICAgICAgICAlU2V0SW5uZXJGaWVsZHMsCiAgICAgICAgfTsKCiAgICAgICAgIyB3YWxrIHRocm91Z2ggZGVmaW5pdGlvbiB0byBjaGVjayBwZXJtaXNzaW9ucyBvbiBwYWdlcyB3aGljaCBjb250YWluIGR5bmFtaWMgZmllbGRzCiAgICAgICAgbXkgJVBlcm1pdHRlZER5bmFtaWNGaWVsZHM7CiAgICAgICAgbXkgJUdyb3VwTG9va3VwOwoKICAgICAgICBQQUdFOgogICAgICAgIGZvciBteSAkUGFnZSAoICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17UGFnZXN9LT5AKiApIHsKCiAgICAgICAgICAgICMgSW50ZXJmYWNlcyBpcyBvcHRpb25hbCwgZWZmZWN0aXZlbHkgZGVmYXVsdCB0byBbICdBZ2VudCcgXQogICAgICAgICAgICBpZiAoICRQYWdlLT57SW50ZXJmYWNlc30gKSB7CiAgICAgICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzIGFueSB7ICRfIGVxICdBZ2VudCcgfSAkUGFnZS0+e0ludGVyZmFjZXN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUGFnZS0+e0dyb3Vwc30gKSB7CiAgICAgICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdyb3VwTG9va3VwID0gcmV2ZXJzZSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R3JvdXAnKS0+UGVybWlzc2lvblVzZXJHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBncmFudCBhY2Nlc3MgdG8gdGhlIHBhZ2Ugb25seSB3aGVuIHRoZSB1c2VyIGlzIGluIG9uZSBvZiB0aGUgc3BlY2lmaWVkIGdyb3VwcwogICAgICAgICAgICAgICAgbmV4dCBQQUdFIHVubGVzcyBhbnkgeyAkR3JvdXBMb29rdXB7JF99IH0gJFBhZ2UtPntHcm91cHN9LT5AKjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgU0VDVElPTjoKICAgICAgICAgICAgZm9yIG15ICRTZWN0aW9uQ29uZmlnICggJFBhZ2UtPntDb250ZW50fS0+QCogKSB7CiAgICAgICAgICAgICAgICBteSAkU2VjdGlvbiA9ICREZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn17U2VjdGlvbnN9eyAkU2VjdGlvbkNvbmZpZy0+e1NlY3Rpb259IH07CgogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbjsKICAgICAgICAgICAgICAgIGlmICggJFNlY3Rpb24tPntUeXBlfSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWN0aW9uLT57VHlwZX0gbmUgJ0R5bmFtaWNGaWVsZHMnICkgewogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IFNFQ1RJT047CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZG8gbm90IHByb2NlZWQgaWYgY29udGVudCBpcyBlbXB0eQogICAgICAgICAgICAgICAgbmV4dCBTRUNUSU9OIHVubGVzcyAkU2VjdGlvbi0+e0NvbnRlbnR9LT5AKjsKCiAgICAgICAgICAgICAgICBteSAkU2VjdGlvbkRGcyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZExpc3RNYXNrKAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgPT4gJFNlY3Rpb24tPntDb250ZW50fSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoJFNlY3Rpb25ERnMpICkgewogICAgICAgICAgICAgICAgICAgIGZvciBteSAkREZOYW1lICggJFNlY3Rpb25ERnMtPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3skREZOYW1lfSA9IDE7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGFsc28gaW5jbHVkZSBTZXQtaW5uZXIgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJERlZmluaXRpb24tPntEeW5hbWljRmllbGRSZWZ9eyRERk5hbWV9e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkU2V0SW5uZXJGaWVsZHMgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0TWFzaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZW50ID0+ICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfXskREZOYW1lfXtDb25maWd9e0luY2x1ZGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkU2V0SW5uZXJGaWVsZHMpICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkSW5uZXJERiAoICRTZXRJbm5lckZpZWxkcy0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRQZXJtaXR0ZWREeW5hbWljRmllbGRzeyRJbm5lckRGfSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGNvbnZlcnQgYXR0cmlidXRlcwogICAgICAgIGlmICggJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gJiYgcmVmICRHZXRQYXJhbXtTaG93bkF0dHJpYnV0ZXN9IGVxICcnICkgewogICAgICAgICAgICAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSA9IFsgc3BsaXQgLzsvLCAkR2V0UGFyYW17U2hvd25BdHRyaWJ1dGVzfSBdOwogICAgICAgIH0KCiAgICAgICAgIyBzYXZlIHNlYXJjaCBwcm9maWxlICh1bmRlciBsYXN0LXNlYXJjaCBvciByZWFsIHByb2ZpbGUgbmFtZSkKICAgICAgICAkU2VsZi0+e1NhdmVQcm9maWxlfSA9IDE7CgogICAgICAgICMgcmVtZW1iZXIgbGFzdCBzZWFyY2ggdmFsdWVzIG9ubHkgaWYgc2VhcmNoIGlzIGNhbGxlZCBmcm9tIGEgc2VhcmNoIGRpYWxvZwogICAgICAgICMgbm90IGZyb20gcmVzdWx0cyBwYWdlCiAgICAgICAgaWYgKCAkU2VsZi0+e1NhdmVQcm9maWxlfSAmJiAkU2VsZi0+e1Byb2ZpbGV9ICYmICRTZWFyY2hEaWFsb2cgKSB7CgogICAgICAgICAgICAjIHJlbW92ZSBvbGQgcHJvZmlsZSBzdHVmZgogICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZURlbGV0ZSgKICAgICAgICAgICAgICAgIEJhc2UgICAgICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcgLiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIE5hbWUgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVXNlckxvZ2luID0+ICRTZWxmLT57VXNlckxvZ2lufSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgaW5zZXJ0IG5ldyBwcm9maWxlIHBhcmFtcwogICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAlR2V0UGFyYW0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRHZXRQYXJhbXskS2V5fSAmJiAkS2V5IG5lICdXaGF0JyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUHJvZmlsZU9iamVjdC0+U2VhcmNoUHJvZmlsZUFkZCgKICAgICAgICAgICAgICAgICAgICAgICAgQmFzZSAgICAgID0+ICdDb25maWdJdGVtU2VhcmNoJyAuICRDbGFzc0lELAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgS2V5ICAgICAgID0+ICRLZXksCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICA9PiAkR2V0UGFyYW17JEtleX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJMb2dpbiA9PiAkU2VsZi0+e1VzZXJMb2dpbn0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJUF0dHJpYnV0ZUxvb2t1cDsKCiAgICAgICAgIyBjcmVhdGUgYXR0cmlidXRlIGxvb2t1cCB0YWJsZQogICAgICAgIGZvciBteSAkQXR0cmlidXRlICggQHsgJEdldFBhcmFte1Nob3duQXR0cmlidXRlc30gfHwgW10gfSApIHsKICAgICAgICAgICAgJEF0dHJpYnV0ZUxvb2t1cHskQXR0cmlidXRlfSA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIGR5bmFtaWMgZmllbGRzIHNlYXJjaCBwYXJhbWV0ZXJzIGZvciB0aWNrZXQgc2VhcmNoCiAgICAgICAgbXkgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnM7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VsZi0+e0NvbmZpZ317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGVybWl0dGVkRHluYW1pY0ZpZWxkc3sgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH07CgogICAgICAgICAgICAjIGdldCBzZWFyY2ggZmllbGQgcHJlZmVyZW5jZXMKICAgICAgICAgICAgbXkgJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSgkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyk7CgogICAgICAgICAgICBQUkVGRVJFTkNFOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2UgKCBAeyRTZWFyY2hGaWVsZFByZWZlcmVuY2VzfSApIHsKCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgISRBdHRyaWJ1dGVMb29rdXB7CiAgICAgICAgICAgICAgICAgICAgICAgICdMYWJlbFNlYXJjaF9EeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJFByZWZlcmVuY2UtPntUeXBlfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBQUkVGRVJFTkNFOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRTZWFyY2hQYXJhbWV0ZXJzeyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSBAU2VhcmNoUmVzdWx0TGlzdDsKCiAgICAgICAgIyBzdGFydCBzZWFyY2ggaWYgY2FsbGVkIGZyb20gYSBzZWFyY2ggZGlhbG9nIG9yIGZyb20gYSByZXN1bHRzIHBhZ2UKICAgICAgICBpZiAoICRTZWFyY2hEaWFsb2cgfHwgJFNlbGYtPntUYWtlTGFzdFNlYXJjaH0gKSB7CgogICAgICAgICAgICAjIHN0YXJ0IHNlYXJjaAogICAgICAgICAgICBAU2VhcmNoUmVzdWx0TGlzdCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgJUdldFBhcmFtLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnMsCiAgICAgICAgICAgICAgICBPcmRlckJ5ICA9PiBbICRTZWxmLT57T3JkZXJCeX0gXSwKICAgICAgICAgICAgICAgIFNvcnRCeSAgID0+IFsgJFNlbGYtPntTb3J0Qnl9IF0sCiAgICAgICAgICAgICAgICBMaW1pdCAgICA9PiAkU2VsZi0+e1NlYXJjaExpbWl0fSwKICAgICAgICAgICAgICAgIENsYXNzSURzID0+IFskQ2xhc3NJRF0sCiAgICAgICAgICAgICAgICBSZXN1bHQgICA9PiAnQVJSQVknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgdGhlIGNvbmZjb25maWcgaXRlbSBkeW5hbWljIGZpZWxkcyBmb3IgQ1NWIGRpc3BsYXkKICAgICAgICBteSAkQ1NWRHluYW1pY0ZpZWxkID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0R2V0KAogICAgICAgICAgICBWYWxpZCAgICAgICA9PiAxLAogICAgICAgICAgICBPYmplY3RUeXBlICA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICAgICAgICAgIEZpZWxkRmlsdGVyID0+ICRTZWxmLT57Q29uZmlnfXtTZWFyY2hDU1ZEeW5hbWljRmllbGR9IHx8IHt9LAogICAgICAgICk7CgogICAgICAgICMgQ1NWIG91dHB1dAogICAgICAgIGlmICgKICAgICAgICAgICAgJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdDU1YnCiAgICAgICAgICAgIHx8CiAgICAgICAgICAgICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICMgY3JlYXRlIGhlYWQgKGFjdHVhbCBoZWFkIGFuZCBoZWFkIGZvciBkYXRhIGZpbGwpCiAgICAgICAgICAgIG15IEBUbXBDU1ZIZWFkID0gQHsgJFNlbGYtPntDb25maWd9e1NlYXJjaENTVkRhdGF9IH07CiAgICAgICAgICAgIG15IEBDU1ZIZWFkICAgID0gQHsgJFNlbGYtPntDb25maWd9e1NlYXJjaENTVkRhdGF9IH07CgogICAgICAgICAgICAjIGluY2x1ZGUgdGhlIHNlbGVjdGVkIGR5bmFtaWMgZmllbGRzIGluIENWUyByZXN1bHRzCiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGRDb25maWcgKCBAeyRDU1ZEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSBlcSAnJzsKCiAgICAgICAgICAgICAgICBwdXNoIEBUbXBDU1ZIZWFkLCAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZIZWFkLCAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSBAQ1NWRGF0YTsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBTZWFyY2hSZXN1bHRMaXN0KSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICAgICAgICAgICMgZ2V0IHZlcnNpb24KICAgICAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgICAgICBAQ1NWSGVhZCA9IEB7ICRTZWxmLT57Q29uZmlnfS0+e1NlYXJjaENTVkRhdGF9IH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzdG9yZSBkYXRhCiAgICAgICAgICAgICAgICBteSBARGF0YTsKICAgICAgICAgICAgICAgIGZvciBteSAkSGVhZGVyIChAVG1wQ1NWSGVhZCkgewoKICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGhlYWRlciBpcyBhIGR5bmFtaWMgZmllbGQgYW5kIGdldCB0aGUgdmFsdWUgZnJvbSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgIyBiYWNrZW5kCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkSGVhZGVyID1+IG17XEEgRHluYW1pY0ZpZWxkXyAoIFthLXpBLVpcZFwtXSsgKSBcen14bXMgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGxvb3Agb3ZlciB0aGUgZHluYW1pYyBmaWVsZHMgY29uZmlndXJlZCBmb3IgQ1NWIG91dHB1dAogICAgICAgICAgICAgICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHskQ1NWRHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBza2lwIGFsbCBmaWVsZHMgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aXRoIGN1cnJlbnQgZmllbGQgbmFtZSAoJDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggb3V0IHRoZSAnRHluYW1pY0ZpZWxkXycgcHJlZml4CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gbmUgJDE7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBnZXQgdGhlIHZhbHVlIGFzIGZvciBwcmludCAodG8gY29ycmVjdGx5IGRpc3BsYXkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVTdHJnID0gJEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJExhc3RWZXJzaW9uLT57JEhlYWRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARGF0YSwgJFZhbHVlU3RyZy0+e1ZhbHVlfTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRlcm1pbmF0ZSB0aGUgRFlOQU1JQ0ZJRUxEIGxvb3AKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIG90aGVyd2lzZSByZXRyaWV2ZSBkYXRhIGZyb20gYXJ0aWNsZQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBEYXRhLCAkTGFzdFZlcnNpb24tPnskSGVhZGVyfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBDU1ZEYXRhLCBcQERhdGE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3N2IHF1b3RlCiAgICAgICAgICAgICMgdHJhbnNsYXRlIG5vbiBleGlzdGluZyBoZWFkZXIgbWF5IHJlc3VsdCBpbiBhIGdhcmJhZ2UgZmlsZQogICAgICAgICAgICBpZiAoICFAQ1NWSGVhZCApIHsKICAgICAgICAgICAgICAgIEBDU1ZIZWFkID0gQHsgJFNlbGYtPntDb25maWd9LT57U2VhcmNoQ1NWRGF0YX0gfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB0cmFuc2xhdGUgaGVhZGVycwogICAgICAgICAgICBmb3IgbXkgJEhlYWRlciAoQENTVkhlYWQpIHsKCiAgICAgICAgICAgICAgICAjIHJlcGxhY2UgQ29uZmlnSXRlbU51bWJlciBoZWFkZXIgd2l0aCB0aGUgY3VycmVudCBDb25maWdJdGVtTnVtYmVyIGhvb2sgZnJvbSBzeXNjb25maWcKICAgICAgICAgICAgICAgIGlmICggJEhlYWRlciBlcSAnQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgJEhlYWRlciA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06Okhvb2snKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRIZWFkZXIgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJEhlYWRlcik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgR2V0IFNlcGFyYXRvciBmcm9tIGxhbmd1YWdlIGZpbGUuCiAgICAgICAgICAgIG15ICRVc2VyQ1NWU2VwYXJhdG9yID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+e1NlcGFyYXRvcn07CgogICAgICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnUHJlZmVyZW5jZXNHcm91cHMnKS0+e0NTVlNlcGFyYXRvcn0tPntBY3RpdmV9ICkgewogICAgICAgICAgICAgICAgbXkgJVVzZXJEYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBpZiAoICRVc2VyRGF0YXtVc2VyQ1NWU2VwYXJhdG9yfSApIHsKICAgICAgICAgICAgICAgICAgICAkVXNlckNTVlNlcGFyYXRvciA9ICRVc2VyRGF0YXtVc2VyQ1NWU2VwYXJhdG9yfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJENTVk9iamVjdCAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNTVicpOwogICAgICAgICAgICBteSAkQ3VyU3lzRFRPYmplY3QgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgaWYgKCAkR2V0UGFyYW17UmVzdWx0Rm9ybX0gZXEgJ0NTVicgKSB7CgogICAgICAgICAgICAgICAgIyBBc3NlbWJsZSBDU1YgZGF0YS4KICAgICAgICAgICAgICAgIG15ICRDU1YgPSAkQ1NWT2JqZWN0LT5BcnJheTJDU1YoCiAgICAgICAgICAgICAgICAgICAgSGVhZCAgICAgID0+IFxAQ1NWSGVhZCwKICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgPT4gXEBDU1ZEYXRhLAogICAgICAgICAgICAgICAgICAgIFNlcGFyYXRvciA9PiAkVXNlckNTVlNlcGFyYXRvciwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBSZXR1cm4gQ1NWIHRvIGRvd25sb2FkLgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZV9zZWFyY2hfJXMuY3N2JywKICAgICAgICAgICAgICAgICAgICAgICAgJEN1clN5c0RUT2JqZWN0LT5Gb3JtYXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3JtYXQgPT4gJyVGXyVILSVNJywKICAgICAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnRUeXBlID0+ICJ0ZXh0L2NzdjsgY2hhcnNldD0iIC4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkQ1NWLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRHZXRQYXJhbXtSZXN1bHRGb3JtfSBlcSAnRXhjZWwnICkgewoKICAgICAgICAgICAgICAgICMgQXNzZW1ibGUgRXhjZWwgZGF0YS4KICAgICAgICAgICAgICAgIG15ICRFeGNlbCA9ICRDU1ZPYmplY3QtPkFycmF5MkNTVigKICAgICAgICAgICAgICAgICAgICBIZWFkICAgPT4gXEBDU1ZIZWFkLAogICAgICAgICAgICAgICAgICAgIERhdGEgICA9PiBcQENTVkRhdGEsCiAgICAgICAgICAgICAgICAgICAgRm9ybWF0ID0+ICdFeGNlbCcsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgUmV0dXJuIEV4Y2VsIHRvIGRvd25sb2FkLgogICAgICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5nZV9zZWFyY2hfJXMueGxzeCcsCiAgICAgICAgICAgICAgICAgICAgICAgICRDdXJTeXNEVE9iamVjdC0+Rm9ybWF0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0ID0+ICclRl8lSC0lTScsCiAgICAgICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICAgICBDb250ZW50VHlwZSA9PiAiYXBwbGljYXRpb24vdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LnNwcmVhZHNoZWV0bWwuc2hlZXQiLAogICAgICAgICAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRFeGNlbCwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcHJpbnQgUERGIG91dHB1dAogICAgICAgIGVsc2lmICggJEdldFBhcmFte1Jlc3VsdEZvcm19IGVxICdQcmludCcgKSB7CgogICAgICAgICAgICBteSBAUERGRGF0YTsKCiAgICAgICAgICAgICMgZ2V0IHBkZiBvYmplY3QKICAgICAgICAgICAgbXkgJFBERk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpQREYnKTsKCiAgICAgICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKEBTZWFyY2hSZXN1bHRMaXN0KSB7CgogICAgICAgICAgICAgICAgIyBjaGVjayBmb3IgYWNjZXNzIHJpZ2h0cwogICAgICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgICAgIFNjb3BlICA9PiAnSXRlbScsCiAgICAgICAgICAgICAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgPT4gJFNlbGYtPntDb25maWd9LT57UGVybWlzc2lvbn0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICEkSGFzQWNjZXNzOwoKICAgICAgICAgICAgICAgICMgZ2V0IHZlcnNpb24KICAgICAgICAgICAgICAgIG15ICRMYXN0VmVyc2lvbiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHNldCBwZGYgcm93cwogICAgICAgICAgICAgICAgbXkgQFBERlJvdzsKICAgICAgICAgICAgICAgIGZvciBteSAkU3RvcmVEYXRhIChxdyhDbGFzcyBJbmNpU3RhdGUgTmFtZSBOdW1iZXIgRGVwbFN0YXRlIFZlcnNpb25JRCBDcmVhdGVUaW1lKSkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFBERlJvdywgJExhc3RWZXJzaW9uLT57JFN0b3JlRGF0YX07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBwdXNoIEBQREZEYXRhLCBcQFBERlJvdzsKCiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgUERGIE91dHB1dAogICAgICAgICAgICBteSAkVGl0bGUgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZ3VyYXRpb24gSXRlbScpIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnU2VhcmNoJyk7CiAgICAgICAgICAgIG15ICRQcmludGVkQnkgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ3ByaW50ZWQgYnknKTsKICAgICAgICAgICAgbXkgJFBhZ2UgICAgICA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnUGFnZScpOwogICAgICAgICAgICBteSAkVGltZSAgICAgID0gJExheW91dE9iamVjdC0+e1RpbWV9OwoKICAgICAgICAgICAgIyBnZXQgbWF4aW11bSBudW1iZXIgb2YgcGFnZXMKICAgICAgICAgICAgbXkgJE1heFBhZ2VzID0gJENvbmZpZ09iamVjdC0+R2V0KCdQREY6Ok1heFBhZ2VzJyk7CiAgICAgICAgICAgIGlmICggISRNYXhQYWdlcyB8fCAkTWF4UGFnZXMgPCAxIHx8ICRNYXhQYWdlcyA+IDEwMDAgKSB7CiAgICAgICAgICAgICAgICAkTWF4UGFnZXMgPSAxMDA7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgY3JlYXRlIHRoZSBoZWFkZXIKICAgICAgICAgICAgbXkgJENlbGxEYXRhOwoKICAgICAgICAgICAgIyBvdXRwdXQgJ05vIFJlc3VsdCcsIGlmIG5vIGNvbnRlbnQgd2FzIGdpdmVuCiAgICAgICAgICAgIGlmIChAUERGRGF0YSkgewogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDbGFzcycpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlswXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsxXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlsyXS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdOYW1lJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzJdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzNdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ051bWJlcicpOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPlszXS0+e0ZvbnR9ICAgID0gJ1Byb3BvcnRpb25hbEJvbGQnOwogICAgICAgICAgICAgICAgJENlbGxEYXRhLT5bMF0tPls0XS0+e0NvbnRlbnR9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzRdLT57Rm9udH0gICAgPSAnUHJvcG9ydGlvbmFsQm9sZCc7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzVdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ1ZlcnNpb24nKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNV0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNl0tPntDb250ZW50fSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ3JlYXRlIFRpbWUnKTsKICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WzBdLT5bNl0tPntGb250fSAgICA9ICdQcm9wb3J0aW9uYWxCb2xkJzsKCiAgICAgICAgICAgICAgICAjIGNyZWF0ZSB0aGUgY29udGVudCBhcnJheQogICAgICAgICAgICAgICAgbXkgJENvdW50ZXJSb3cgPSAxOwogICAgICAgICAgICAgICAgZm9yIG15ICRSb3cgKEBQREZEYXRhKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgJENvdW50ZXJDb2x1bW4gPSAwOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkQ29udGVudCAoIEB7JFJvd30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDZWxsRGF0YS0+WyRDb3VudGVyUm93XS0+WyRDb3VudGVyQ29sdW1uXS0+e0NvbnRlbnR9ID0gJENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb3VudGVyQ29sdW1uKys7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICRDb3VudGVyUm93Kys7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkQ2VsbERhdGEtPlswXS0+WzBdLT57Q29udGVudH0gPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ05vIFJlc3VsdCEnKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBwYWdlIHBhcmFtcwogICAgICAgICAgICBteSAlUGFnZVBhcmFtOwogICAgICAgICAgICAkUGFnZVBhcmFte1BhZ2VPcmllbnRhdGlvbn0gPSAnbGFuZHNjYXBlJzsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5Ub3B9ICAgICAgID0gMzA7CiAgICAgICAgICAgICRQYWdlUGFyYW17TWFyZ2luUmlnaHR9ICAgICA9IDQwOwogICAgICAgICAgICAkUGFnZVBhcmFte01hcmdpbkJvdHRvbX0gICAgPSA0MDsKICAgICAgICAgICAgJFBhZ2VQYXJhbXtNYXJnaW5MZWZ0fSAgICAgID0gNDA7CiAgICAgICAgICAgICRQYWdlUGFyYW17SGVhZGVyUmlnaHR9ICAgICA9ICRUaXRsZTsKCiAgICAgICAgICAgICMgdGFibGUgcGFyYW1zCiAgICAgICAgICAgIG15ICVUYWJsZVBhcmFtOwogICAgICAgICAgICAkVGFibGVQYXJhbXtDZWxsRGF0YX0gICAgICAgICAgICA9ICRDZWxsRGF0YTsKICAgICAgICAgICAgJFRhYmxlUGFyYW17VHlwZX0gICAgICAgICAgICAgICAgPSAnQ3V0JzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17Rm9udFNpemV9ICAgICAgICAgICAgPSA2OwogICAgICAgICAgICAkVGFibGVQYXJhbXtCb3JkZXJ9ICAgICAgICAgICAgICA9IDA7CiAgICAgICAgICAgICRUYWJsZVBhcmFte0JhY2tncm91bmRDb2xvckV2ZW59ID0gJyNEREREREQnOwogICAgICAgICAgICAkVGFibGVQYXJhbXtQYWRkaW5nfSAgICAgICAgICAgICA9IDE7CiAgICAgICAgICAgICRUYWJsZVBhcmFte1BhZGRpbmdUb3B9ICAgICAgICAgID0gMzsKICAgICAgICAgICAgJFRhYmxlUGFyYW17UGFkZGluZ0JvdHRvbX0gICAgICAgPSAzOwoKICAgICAgICAgICAgIyBjcmVhdGUgbmV3IHBkZiBkb2N1bWVudAogICAgICAgICAgICAkUERGT2JqZWN0LT5Eb2N1bWVudE5ldygKICAgICAgICAgICAgICAgIFRpdGxlICA9PiAkQ29uZmlnT2JqZWN0LT5HZXQoJ1Byb2R1Y3QnKSAuICc6ICcgLiAkVGl0bGUsCiAgICAgICAgICAgICAgICBFbmNvZGUgPT4gJExheW91dE9iamVjdC0+e1VzZXJDaGFyc2V0fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc3RhcnQgdGFibGUgb3V0cHV0CiAgICAgICAgICAgICRQREZPYmplY3QtPlBhZ2VOZXcoCiAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgRm9vdGVyUmlnaHQgPT4gJFBhZ2UgLiAnIDEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBERk9iamVjdC0+UG9zaXRpb25TZXQoCiAgICAgICAgICAgICAgICBNb3ZlID0+ICdyZWxhdGl2JywKICAgICAgICAgICAgICAgIFkgICAgPT4gLTYsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIG91dHB1dCB0aXRsZQogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gMTMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkUERGT2JqZWN0LT5Qb3NpdGlvblNldCgKICAgICAgICAgICAgICAgIE1vdmUgPT4gJ3JlbGF0aXYnLAogICAgICAgICAgICAgICAgWSAgICA9PiAtNiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb3V0cHV0ICJwcmludGVkIGJ5IgogICAgICAgICAgICAkUERGT2JqZWN0LT5UZXh0KAogICAgICAgICAgICAgICAgVGV4dCA9PiAkUHJpbnRlZEJ5IC4gJyAnCiAgICAgICAgICAgICAgICAgICAgLiAkU2VsZi0+e1VzZXJGdWxsbmFtZX0gLiAnICcKICAgICAgICAgICAgICAgICAgICAuICRUaW1lLAogICAgICAgICAgICAgICAgRm9udFNpemUgPT4gOSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRQREZPYmplY3QtPlBvc2l0aW9uU2V0KAogICAgICAgICAgICAgICAgTW92ZSA9PiAncmVsYXRpdicsCiAgICAgICAgICAgICAgICBZICAgID0+IC0xNCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIFBBR0U6CiAgICAgICAgICAgIGZvciBteSAkQ291bnQgKCAyIC4uICRNYXhQYWdlcyApIHsKCiAgICAgICAgICAgICAgICAjIG91dHB1dCB0YWJsZSAob3IgYSBmcmFnbWVudCBvZiBpdCkKICAgICAgICAgICAgICAgICVUYWJsZVBhcmFtID0gJFBERk9iamVjdC0+VGFibGUoJVRhYmxlUGFyYW0pOwoKICAgICAgICAgICAgICAgICMgc3RvcCBvdXRwdXQgb3IgYW5vdGhlciBwYWdlCiAgICAgICAgICAgICAgICBpZiAoICRUYWJsZVBhcmFte1N0YXRlfSApIHsKICAgICAgICAgICAgICAgICAgICBsYXN0IFBBR0U7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkUERGT2JqZWN0LT5QYWdlTmV3KAogICAgICAgICAgICAgICAgICAgICAgICAlUGFnZVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBGb290ZXJSaWdodCA9PiAkUGFnZSAuICcgJyAuICRDb3VudCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHJldHVybiB0aGUgcGRmIGRvY3VtZW50CiAgICAgICAgICAgIG15ICRDdXJyZW50U3lzdGVtRFRPYmogPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgbXkgJFBERlN0cmluZyAgICAgICAgICA9ICRQREZPYmplY3QtPkRvY3VtZW50T3V0cHV0KCk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5BdHRhY2htZW50KAogICAgICAgICAgICAgICAgRmlsZW5hbWUgPT4gc3ByaW50ZigKICAgICAgICAgICAgICAgICAgICAnY29uZmlnaXRlbV9zZWFyY2hfJXNfJXMucGRmJywKICAgICAgICAgICAgICAgICAgICAkQ3VycmVudFN5c3RlbURUT2JqLT5Gb3JtYXQoIEZvcm1hdCA9PiAnJUZfJUgtJU0nICksCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gImFwcGxpY2F0aW9uL3BkZiIsCiAgICAgICAgICAgICAgICBDb250ZW50ICAgICA9PiAkUERGU3RyaW5nLAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgPT4gJ2lubGluZScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIG5vcm1hbCBIVE1MIG91dHB1dAogICAgICAgIGVsc2UgewoKICAgICAgICAgICAgIyBzdGFydCBodG1sIHBhZ2UKICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkhlYWRlcigpOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPk5hdmlnYXRpb25CYXIoKTsKCiAgICAgICAgICAgICMgdXNlIGNsYXNzbmFtZSBhcyBmaWx0ZXIKICAgICAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ID0gJENsYXNzTGlzdC0+eyRDbGFzc0lEfSAgICAgICAgICAgICAgICAgICAgfHwgJ0FsbCc7CiAgICAgICAgICAgICRTZWxmLT57Vmlld30gICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICAgICAgICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgICAgICAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e0ZpbHRlcn0gKQogICAgICAgICAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntWaWV3fSApCiAgICAgICAgICAgICAgICAuICc7U29ydEJ5PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57U29ydEJ5fSApCiAgICAgICAgICAgICAgICAuICc7T3JkZXJCeT0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntPcmRlckJ5fSApCiAgICAgICAgICAgICAgICAuICc7UHJvZmlsZT0nIC4gJFNlbGYtPntQcm9maWxlfSAuICc7VGFrZUxhc3RTZWFyY2g9MTtTdWJhY3Rpb249U2VhcmNoJwogICAgICAgICAgICAgICAgLiAnO0NsYXNzSUQ9JyAuICRDbGFzc0lECiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtTb3J0ID0gJ0ZpbHRlcj0nCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntGaWx0ZXJ9ICkKICAgICAgICAgICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWxmLT57Vmlld30gKQogICAgICAgICAgICAgICAgLiAnO1Byb2ZpbGU9JyAuICRTZWxmLT57UHJvZmlsZX0gLiAnO1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaCcKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScgLiAkQ2xhc3NJRAogICAgICAgICAgICAgICAgLiAnOyc7CiAgICAgICAgICAgIG15ICRMaW5rRmlsdGVyID0gJ1Rha2VMYXN0U2VhcmNoPTE7U3ViYWN0aW9uPVNlYXJjaDtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2xhc3NJRCApCiAgICAgICAgICAgICAgICAuICc7JzsKICAgICAgICAgICAgbXkgJExpbmtCYWNrID0gJ1N1YmFjdGlvbj1Mb2FkUHJvZmlsZTtQcm9maWxlPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VsZi0+e1Byb2ZpbGV9ICkKICAgICAgICAgICAgICAgIC4gJztDbGFzc0lEPScKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkQ2xhc3NJRCApCiAgICAgICAgICAgICAgICAuICc7VGFrZUxhc3RTZWFyY2g9MTsnOwoKICAgICAgICAgICAgbXkgJENsYXNzTmFtZSA9ICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgIG15ICRUaXRsZSAgICAgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0NvbmZpZyBJdGVtIFNlYXJjaCBSZXN1bHRzJykKICAgICAgICAgICAgICAgIC4gJyAnCiAgICAgICAgICAgICAgICAuICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnQ2xhc3MnKQogICAgICAgICAgICAgICAgLiAnICcKICAgICAgICAgICAgICAgIC4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDbGFzc05hbWUpOwoKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyA9PiBcQFNlYXJjaFJlc3VsdExpc3QsCiAgICAgICAgICAgICAgICBUb3RhbCAgICAgICAgID0+IHNjYWxhciBAU2VhcmNoUmVzdWx0TGlzdCwKICAgICAgICAgICAgICAgIFZpZXcgICAgICAgICAgPT4gJFNlbGYtPntWaWV3fSwKICAgICAgICAgICAgICAgIEZpbHRlciAgICAgICAgPT4gJENsYXNzTmFtZSwKICAgICAgICAgICAgICAgIEVudiAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgICAgICBMaW5rUGFnZSAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgICAgIExpbmtTb3J0ICAgICAgPT4gJExpbmtTb3J0LAogICAgICAgICAgICAgICAgTGlua0ZpbHRlciAgICA9PiAkTGlua0ZpbHRlciwKICAgICAgICAgICAgICAgIExpbmtCYWNrICAgICAgPT4gJExpbmtCYWNrLAogICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICA9PiAkU2VsZi0+e1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgVGl0bGVOYW1lICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgID0+ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntTb3J0Qnl9ICksCiAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgID0+ICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNlbGYtPntPcmRlckJ5fSApLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIFJlcXVlc3RVUkwgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgICAgICAgICAgICAgQnVsayAgICAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICAgICBQcm9maWxlID0+ICRTZWxmLT57UHJvZmlsZX0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgICAgICBBY3Rpb24gID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIGJ1aWxkIGZvb3RlcgogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQogICAgfQoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgY2FsbCBzZWFyY2ggZGlhbG9nIGZyb20gc2VhcmNoIGVtcHR5IHNjcmVlbgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwogICAgZWxzZSB7CgogICAgICAgICMgc2hvdyBkZWZhdWx0IHNlYXJjaCBzY3JlZW4KICAgICAgICAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+SGVhZGVyKCk7CiAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5OYXZpZ2F0aW9uQmFyKCk7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtT3BlblNlYXJjaERpYWxvZycsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFNlbGYtPntQcm9maWxlfSwKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENsYXNzSUQsCiAgICAgICAgICAgICAgICBBY3Rpb24gID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCB0ZW1wbGF0ZQogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICBUZW1wbGF0ZUZpbGUgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXCVQYXJhbSwKICAgICAgICApOwoKICAgICAgICAjIG91dHB1dCBmb290ZXIKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkZvb3RlcigpOwoKICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgIH0KfQoKMTsK</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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+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+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICRWaWV3IHx8PSAnU21hbGwnOwoKICAgICMgQ2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUuCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgaWYgKCAhJEJhY2tlbmRzLT57JFZpZXd9ICkgewoKICAgICAgICAjIFRyeSB0byBmaW5kIGZhbGxiYWNrLCB0YWtlIGZpcnN0IGNvbmZpZ3VyZWQgdmlldyBtb2RlLgogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHBlcnNvbmFsIHBhZ2Ugc2hvd24gY291bnQKICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICBteSAkUGFnZVNob3duICAgICAgICAgICAgICAgPSAkU2VsZi0+eyRQYWdlU2hvd25QcmVmZXJlbmNlc0tleX0gfHwgMTA7CiAgICBteSAlUGFnZU5hdjsKCiAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgbXkgJExpbWl0ID0gMV8wMDA7CgogICAgbXkgJEVsZW1lbnRDaGFuZ2VkID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0VsZW1lbnRDaGFuZ2VkJyApIHx8ICcnOwogICAgbXkgJEhlYWRlckNvbHVtbiAgID0gJEVsZW1lbnRDaGFuZ2VkOwogICAgJEhlYWRlckNvbHVtbiA9fiBze1xBIENvbHVtbkZpbHRlciB9e31tc3hnOwoKICAgICMgZ2V0IGRhdGEgKHZpZXdhYmxlIGNvbmZpZyBpdGVtcy4uLikKICAgICMgc2VhcmNoIGFsbCBjb25maWcgaXRlbXMKICAgIG15IEBWaWV3YWJsZUNvbmZpZ0l0ZW1zOwogICAgbXkgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtczsKCiAgICAjIGJ1aWxkIGxpbmtzCiAgICBteSAkQ29sdW1uRmlsdGVyTGluayA9ICcnOwogICAgQ09MVU1OTkFNRToKICAgIGZvciBteSAkQ29sdW1uTmFtZSAoIHNvcnQga2V5cyAlR2V0Q29sdW1uRmlsdGVyICkgewogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJENvbHVtbk5hbWU7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICFkZWZpbmVkICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9OwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSBlcSAnJzsKICAgICAgICAkQ29sdW1uRmlsdGVyTGluawogICAgICAgICAgICAuPSAnOycgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+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+e0luY2lkZW50U3RhdGV9ICkgewogICAgICAgICAgICBwdXNoIEBBcnJheVNlYXJjaFBhcmFtcywgJ0luY2lTdGF0ZUlEcyc7CiAgICAgICAgfQoKICAgICAgICBmb3IgbXkgJFNlYXJjaFBhcmFtQXJyYXkgKEBBcnJheVNlYXJjaFBhcmFtcykgewoKICAgICAgICAgICAgIyBmZXRjaCBtdWx0aSB2YWx1ZSBwYXJhbXMKICAgICAgICAgICAgbXkgQEFycmF5ID0gJFBhcmFtT2JqZWN0LT5HZXRBcnJheSggUGFyYW0gPT4gJFNlYXJjaFBhcmFtQXJyYXkgKTsKICAgICAgICAgICAgaWYgKCBncmVwIHskX30gQEFycmF5ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbUFycmF5fSA9IFxAQXJyYXk7CiAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gam9pbiggJycsIG1hcCB7ICI7JFNlYXJjaFBhcmFtQXJyYXk9IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9IEBBcnJheSApOwogICAgICAgICAgICAgICAgJExpbmtTb3J0IC49IGpvaW4oICcnLCBtYXAgeyAiOyRTZWFyY2hQYXJhbUFycmF5PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRfICkgfSBAQXJyYXkgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgbXkgJVNlYXJjaENvbmZpZzsKICAgICAgICBteSAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVyczsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgIyBnZXQgc2VhcmNoIGZpZWxkIHByZWZlcmVuY2VzCiAgICAgICAgICAgIG15ICRTZWFyY2hGaWVsZFByZWZlcmVuY2VzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0FycmF5UmVmV2l0aERhdGEoJFNlYXJjaEZpZWxkUHJlZmVyZW5jZXMpOwoKICAgICAgICAgICAgUFJFRkVSRU5DRToKICAgICAgICAgICAgZm9yIG15ICRQcmVmZXJlbmNlICggQHskU2VhcmNoRmllbGRQcmVmZXJlbmNlc30gKSB7CgogICAgICAgICAgICAgICAgIyBleHRyYWN0IHRoZSBkeW5hbWljIGZpZWxkIHZhbHVlIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRmllbGRWYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUGFyYW1PYmplY3QgICAgICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICAgICAgICAgICAgICAgICAgUmV0dXJuUHJvZmlsZVN0cnVjdHVyZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICAgICAgPT4gJExheW91dE9iamVjdCwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHRoZSBjb21wbGV0ZSB2YWx1ZSBzdHJ1Y3R1cmUgaW4gR2V0UGFyYW0gdG8gc3RvcmUgaXQgbGF0ZXIgaW4gdGhlIHNlYXJjaAogICAgICAgICAgICAgICAgIyBwcm9maWxlCiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRWYWx1ZSkgKSB7CiAgICAgICAgICAgICAgICAgICAgJUdldFBhcmFtID0gKCAlR2V0UGFyYW0sICV7JER5bmFtaWNGaWVsZFZhbHVlfSApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZXh0cmFjdCB0aGUgZHluYW1pYyBmaWVsZCB2YWx1ZSBmcm9tIHRoZSBwcm9maWxlCiAgICAgICAgICAgICAgICBteSAkU2VhcmNoUGFyYW1ldGVyID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUGFyYW1ldGVyQnVpbGQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUHJvZmlsZSAgICAgICAgICAgID0+IFwlR2V0UGFyYW0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2V0IHNlYXJjaCBwYXJhbWV0ZXIKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkU2VhcmNoUGFyYW1ldGVyICkgewoKICAgICAgICAgICAgICAgICAgICAjIGFwcGVuZCBzZWFyY2ggcGFyYW1zIHRvIGxpbmtzCiAgICAgICAgICAgICAgICAgICAgaWYgKCByZWYgJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gam9pbigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwIHsgIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkXyApIH0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn17RXF1YWxzfS0+QCoKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgJExpbmtTb3J0IC49IGpvaW4oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcCB7ICI7U2VhcmNoX0R5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX09IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30tPkAqCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gIjtTZWFyY2hfRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGRDb25maWctPntOYW1lfT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkU2VhcmNoUGFyYW1ldGVyLT57UGFyYW1ldGVyfXtFcXVhbHN9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRMaW5rU29ydCAuPSAiO1NlYXJjaF9EeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRTZWFyY2hQYXJhbWV0ZXItPntQYXJhbWV0ZXJ9e0VxdWFsc30gKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZFNlYXJjaFBhcmFtZXRlcnN7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFNlYXJjaFBhcmFtZXRlci0+e1BhcmFtZXRlcn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJExpbmtQYWdlIC49ICc7JzsKICAgICAgICAkTGlua1NvcnQgLj0gJzsnOwoKICAgICAgICAlU2VhcmNoQ29uZmlnID0gKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICAlRHluYW1pY0ZpZWxkU2VhcmNoUGFyYW1ldGVycywKICAgICAgICAgICAgJVNvcnQsCiAgICAgICAgKTsKCiAgICAgICAgIyBtZXJnZSBmaWx0ZXJlZCBjbGFzc2VzIHdpdGggcGVybWlzc2lvbiBjb25kaXRpb24gY2xhc3NlcwogICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkR2V0UGFyYW17Q2xhc3NJRHN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZWFyY2hDbGFzc2VzOwogICAgICAgICAgICBmb3IgbXkgJENsYXNzSUQgKCAkR2V0UGFyYW17Q2xhc3NJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJENsYXNzTGlzdC0+eyRDbGFzc0lEfSB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaENsYXNzZXMsICRDbGFzc0xpc3QtPnskQ2xhc3NJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3tDbGFzc2VzfSA9IFxAU2VhcmNoQ2xhc3NlczsKICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7Q2xhc3Nlc30gPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9OwogICAgICAgIH0KCiAgICAgICAgaWYgKCAhJFNlYXJjaENvbmZpZ3tDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckVycm9yKAogICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24nKSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckZvb3RlcigpOwoKICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgfQoKICAgICAgICAjIG1lcmdlIGZpbHRlcmVkIGRlcGxveW1lbnQgc3RhdGVzIHdpdGggcGVybWlzc2lvbiBjb25kaXRpb24gZGVwbG95bWVudCBzdGF0ZXMKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJEdldFBhcmFte0RlcGxTdGF0ZUlEc30gKSApIHsKICAgICAgICAgICAgbXkgQFNlYXJjaERlcGxTdGF0ZXM7CiAgICAgICAgICAgIGZvciBteSAkRGVwbFN0YXRlSUQgKCAkR2V0UGFyYW17RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfSApICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJF8gZXEgJERlcGxTdGF0ZUxpc3QtPnskRGVwbFN0YXRlSUR9IH0gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFNlYXJjaERlcGxTdGF0ZXMsICREZXBsU3RhdGVMaXN0LT57JERlcGxTdGF0ZUlEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBTZWFyY2hEZXBsU3RhdGVzLCAkRGVwbFN0YXRlTGlzdC0+eyREZXBsU3RhdGVJRH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggIUBTZWFyY2hEZXBsU3RhdGVzICkgewogICAgICAgICAgICAgICAgbXkgJE91dHB1dCA9ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVySGVhZGVyKAogICAgICAgICAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRXJyb3IoCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24nKSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICAgICAgcmV0dXJuICRPdXRwdXQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSBcQFNlYXJjaERlcGxTdGF0ZXM7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggSXNBcnJheVJlZldpdGhEYXRhKCAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgKSB7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7RGVwbFN0YXRlc30gPSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9OwogICAgICAgIH0KCiAgICAgICAgIyBtYXAgZmlsdGVyZWQgaW5jaWRlbnQgc3RhdGUgaWRzCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRHZXRQYXJhbXtJbmNpU3RhdGVJRHN9ICkgKSB7CiAgICAgICAgICAgIG15IEBTZWFyY2hJbmNpU3RhdGVzID0gbWFwIHsgJEluY2lTdGF0ZUxpc3QtPnskX30gfSAkR2V0UGFyYW17SW5jaVN0YXRlSURzfS0+QCo7CiAgICAgICAgICAgICRTZWFyY2hDb25maWd7SW5jaVN0YXRlc30gPSBcQFNlYXJjaEluY2lTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICAkU2VhcmNoQ29uZmlne051bWJlcn0gPSAkR2V0UGFyYW17TnVtYmVyfSA/ICRHZXRQYXJhbXtOdW1iZXJ9IDogdW5kZWY7CiAgICAgICAgJFNlYXJjaENvbmZpZ3tOYW1lfSAgID0gJEdldFBhcmFte05hbWV9ICAgPyAkR2V0UGFyYW17TmFtZX0gICA6IHVuZGVmOwoKICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CgogICAgICAgICAgICBEWU5BTUlDRklFTEQ6CiAgICAgICAgICAgIGZvciBteSAkRmllbGROYW1lICgga2V5cyAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc30tPiUqICkgewoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9eyRGaWVsZE5hbWV9IGVxICcnICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hDb25maWd7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVtcHR5ID0+IDEsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyByZXN0cmljdCBzZWFyY2ggYnkgcGVybWlzc2lvbiBjb25kaXRpb24gY3VzdG9tZXIgY29tcGFueSBhbmQgY3VzdG9tZXIgdXNlcgogICAgICAgICMgTk9URSB0aGlzIG92ZXJ3cml0ZXMgcHJldmlvdXNseSBzZXQgc2VhcmNoIHBhcmFtcyBmb3IgdGhlIGNvbmZpZ3VyZWQgZHluYW1pYyBmaWVsZHMKICAgICAgICBpZiAoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgJFNlYXJjaENvbmZpZ3siRHluYW1pY0ZpZWxkXyRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSJ9ID0gewogICAgICAgICAgICAgICAgRXF1YWxzID0+ICRTZWxmLT57Q3VzdG9tZXJJRH0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9ICkgewogICAgICAgICAgICAkU2VhcmNoQ29uZmlneyJEeW5hbWljRmllbGRfJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9In0gPSB7CiAgICAgICAgICAgICAgICBFcXVhbHMgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgbXkgJUZpbHRlcnMgPSAoCiAgICAgICAgICAgICRGaWx0ZXIgPT4gewogICAgICAgICAgICAgICAgTmFtZSAgID0+ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICBQcmlvICAgPT4gMTAwMCwKICAgICAgICAgICAgICAgIFNlYXJjaCA9PiBcJVNlYXJjaENvbmZpZywKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICBpZiAoICElU2VhcmNoQ29uZmlnICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdTZWFyY2ggcGFyYW1zIGludmFsaWQhJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJGb290ZXIoKTsKCiAgICAgICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBpZiBzZWxlY3RlZCB2aWV3IGlzIGF2YWlsYWJsZS4KICAgICAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKCiAgICAgICAgICAgICMgVHJ5IHRvIGZpbmQgZmFsbGJhY2ssIHRha2UgZmlyc3QgY29uZmlndXJlZCB2aWV3IG1vZGUuCiAgICAgICAgICAgIEtFWToKICAgICAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAgICAgJFZpZXcgPSAkS2V5OwogICAgICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICRQYWdlU2hvd25QcmVmZXJlbmNlc0tleSA9ICdVc2VyQ29uZmlnSXRlbU92ZXJ2aWV3JyAuICRWaWV3IC4gJ1BhZ2VTaG93bic7CiAgICAgICAgbXkgJFBhZ2VTaG93biAgICAgICAgICAgICAgID0gJFNlbGYtPnskUGFnZVNob3duUHJlZmVyZW5jZXNLZXl9IHx8IDEwOwoKICAgICAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgICAgIG15ICRMaW1pdCA9IDFfMDAwOwoKICAgICAgICAjIGdldCBkYXRhICh2aWV3YWJsZSBjb25maWcgaXRlbXMuLi4pCiAgICAgICAgIyBzZWFyY2ggYWxsIGNvbmZpZyBpdGVtcwogICAgICAgIG15IEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgJVNlYXJjaENvbmZpZywKICAgICAgICAgICAgTGltaXQgID0+ICRMaW1pdCwKICAgICAgICAgICAgUmVzdWx0ID0+ICdBUlJBWScsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJFRvdGFsID0gc2NhbGFyIEBPcmlnaW5hbFZpZXdhYmxlQ29uZmlnSXRlbXM7CgogICAgICAgIG15ICRTdGFydEhpdCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICAgICBteSBAVmlld2FibGVDb25maWdJdGVtcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAlU2VhcmNoQ29uZmlnLAogICAgICAgICAgICBMaW1pdCAgPT4gJFN0YXJ0SGl0ICsgJFBhZ2VTaG93biAtIDEsCiAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICk7CgogICAgICAgICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICAgICAgTGltaXQgICAgID0+IDEwMDAwLAogICAgICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgICAgICBQYWdlU2hvd24gPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgQWxsSGl0cyAgID0+IHNjYWxhciBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgPT4gJ0FjdGlvbj1DdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgTGluayAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgSURQcmVmaXggID0+ICdDdXN0b21lcklUU01Db25maWdJdGVtU2VhcmNoJywKICAgICAgICApOwoKICAgICAgICAjIFRPRE8gTWF5YmUgdGhlcmUgaXMgYSBtb3JlIGVsZWdhbnQgd2F5IHRvIGRvIHRoaXM/CiAgICAgICAgJFNlbGYtPntGaWx0ZXJ9ICA9ICRGaWx0ZXI7CiAgICAgICAgJFNlbGYtPntGaWx0ZXJzfSA9IFwlRmlsdGVyczsKCiAgICAgICAgIyBzaG93IGNvbmZpZyBpdGVtcwogICAgICAgIG15ICRDb25maWdJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgICAgICBGaWx0ZXIgICAgICAgICAgICAgICAgPT4gJEZpbHRlciwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEcyAgICAgICAgID0+IFxAVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgICAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgICAgICAgICBMaW5rUGFnZSAgICAgICAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgICAgICBMaW5rU29ydCAgICAgICAgICAgICAgPT4gJExpbmtTb3J0LAogICAgICAgICAgICBFbmFibGVDb2x1bW5GaWx0ZXIgICAgPT4gMCwKICAgICAgICAgICAgVmlldyAgICAgICAgICAgICAgICAgID0+ICRWaWV3LAogICAgICAgICAgICBUb3RhbCAgICAgICAgICAgICAgICAgPT4gJFRvdGFsLAogICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgICA9PiAkU29ydEJ5LAogICAgICAgICAgICBFbnYgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgICAgIEZyb250ZW5kICAgICAgICAgICAgICA9PiAnQ3VzdG9tZXInLAoKICAgICAgICAgICAgIyBkbyBub3QgcHJpbnQgdGhlIHJlc3VsdCBlYXJsaWVyLCBidXQgcmV0dXJuIGNvbXBsZXRlIGNvbnRlbnQKICAgICAgICAgICAgT3V0cHV0ID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaFJlc3VsdCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSVRTTUNvbmZpZ0l0ZW1MaXN0SFRNTCA9PiAkQ29uZmlnSXRlbUxpc3RIVE1MLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnT2JqZWN0LT5HZXQoIkN1c3RvbWVyRnJvbnRlbmQ6Ok1vZHVsZSIpLT57IkN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2gifSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hCb3gnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2lmICggISRTZWxmLT57U3ViYWN0aW9ufSApIHsKCiAgICAgICAgIyBzdG9yZSBkcm9wZG93biByZXN0cmljdGlvbnMgZnJvbSBwZXJtaXNzaW9uIGNvbmRpdGlvbgogICAgICAgIG15ICVTZWFyY2hhYmxlUGFyYW1zID0gKAogICAgICAgICAgICBJbmNpU3RhdGUgPT4gJEluY2lTdGF0ZUxpc3QsCiAgICAgICAgKTsKCiAgICAgICAgIyBzZXQgc2VhcmNoYWJsZSBwYXJhbXMKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICRDbGFzc0xpc3QtPiUqOwogICAgICAgICRTZWFyY2hhYmxlUGFyYW1ze0NsYXNzfSA9IHsKICAgICAgICAgICAgbWFwIHsKICAgICAgICAgICAgICAgICRDbGFzc0xvb2t1cHskX30KICAgICAgICAgICAgICAgICAgICA/ICggJENsYXNzTG9va3VweyRffSA9PiAkXyApCiAgICAgICAgICAgICAgICAgICAgOiAoKQogICAgICAgICAgICB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57Q2xhc3Nlc30tPkAqCiAgICAgICAgfTsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30gKSApIHsKICAgICAgICAgICAgbXkgJURlcGxTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJERlcGxTdGF0ZUxpc3QtPiUqOwogICAgICAgICAgICAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9ID0gewogICAgICAgICAgICAgICAgbWFwIHsKICAgICAgICAgICAgICAgICAgICAkRGVwbFN0YXRlTG9va3VweyRffQogICAgICAgICAgICAgICAgICAgICAgICA/ICggJERlcGxTdGF0ZUxvb2t1cHskX30gPT4gJF8gKQogICAgICAgICAgICAgICAgICAgICAgICA6ICgpCiAgICAgICAgICAgICAgICB9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30tPkAqCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoYWJsZVBhcmFtc3tEZXBsU3RhdGV9ID0gJERlcGxTdGF0ZUxpc3Q7CiAgICAgICAgfQoKICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0N1c3RvbWVyOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpOwoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSgkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MpICkgewogICAgICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgICAgICBUaXRsZSA9PiBUcmFuc2xhdGFibGUoJ0Vycm9yJyksCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBwZXJtaXNzaW9uIScpLAogICAgICAgICAgICApOwogICAgICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgICAgICByZXR1cm4gJE91dHB1dDsKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTZWFyY2hGb3JtJywKICAgICAgICApOwoKICAgICAgICBteSAlRGVmYXVsdHM7CiAgICAgICAgaWYgKCAkQ29uZmlnLT57RGVmYXVsdHN9ICkgewogICAgICAgICAgICBLRVk6CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRDb25maWctPntEZWZhdWx0c30gfSApIHsKICAgICAgICAgICAgICAgIG5leHQgS0VZIGlmICEkQ29uZmlnLT57RGVmYXVsdHN9LT57JEtleX07CiAgICAgICAgICAgICAgICBuZXh0IEtFWSBpZiAkS2V5IGVxICdEeW5hbWljRmllbGQnOwoKICAgICAgICAgICAgICAgIGlmICggJEtleSA9fiAvXkNvbmZpZ0l0ZW0oQ3JlYXRlfENoYW5nZSkvICkgewogICAgICAgICAgICAgICAgICAgIG15IEBJdGVtcyA9IHNwbGl0IC87LywgJENvbmZpZy0+e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkSXRlbSAoQEl0ZW1zKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICggJEtleSwgJFZhbHVlICkgPSBzcGxpdCAvPS8sICRJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAkRGVmYXVsdHN7JEtleX0gPSAkVmFsdWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJERlZmF1bHRzeyRLZXl9ID0gJENvbmZpZy0+e0RlZmF1bHRzfS0+eyRLZXl9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHBlcm1pc3Npb24gY29uZGl0aW9uCiAgICAgICAgbXkgJVBlcm1pc3Npb25Db25kaXRpb25EYXRhID0gbWFwIHsgaW50KCRfKSA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZ3MtPnskX30tPntOYW1lfSB9IGtleXMgJFBlcm1pc3Npb25Db25kaXRpb25Db25maWdzLT4lKjsKICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvblN0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgPT4gXCVQZXJtaXNzaW9uQ29uZGl0aW9uRGF0YSwKICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJ1Blcm1pc3Npb25Db25kaXRpb24nLAogICAgICAgICAgICBTZWxlY3RlZElEICA9PiAkRmlsdGVyIHx8ICcnLAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAxLAogICAgICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnUGVybWlzc2lvbkNvbmRpdGlvbicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgUGVybWlzc2lvbkNvbmRpdGlvblN0cmcgPT4gJFBlcm1pc3Npb25Db25kaXRpb25TdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgRHluYW1pYyBGaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggJFNlbGYtPntEeW5hbWljRmllbGR9LT5AKiApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwoKICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzRmlsdGVyOwoKICAgICAgICAgICAgbXkgJElzQUNMUmVkdWNpYmxlID0gJEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzQUNMUmVkdWNpYmxlJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNBQ0xSZWR1Y2libGUpIHsKCiAgICAgICAgICAgICAgICAjIGdldCBQb3NzaWJsZVZhbHVlcwogICAgICAgICAgICAgICAgbXkgJFBvc3NpYmxlVmFsdWVzID0gJEJhY2tlbmRPYmplY3QtPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGZpZWxkIGhhcyBQb3NzaWJsZVZhbHVlcyBwcm9wZXJ0eSBpbiBpdHMgY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSgkUG9zc2libGVWYWx1ZXMpICkgewoKICAgICAgICAgICAgICAgICAgICAjIGdldCBoaXN0b3JpY2FsIHZhbHVlcyBmcm9tIGRhdGFiYXNlCiAgICAgICAgICAgICAgICAgICAgbXkgJEhpc3RvcmljYWxWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+SGlzdG9yaWNhbFZhbHVlc0dldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJERhdGEgPSAkUG9zc2libGVWYWx1ZXM7CgogICAgICAgICAgICAgICAgICAgICMgYWRkIGhpc3RvcmljIHZhbHVlcyB0byBjdXJyZW50IHZhbHVlcyAoaWYgdGhleSBkb24ndCBleGlzdCBhbnltb3JlKQogICAgICAgICAgICAgICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJEhpc3RvcmljYWxWYWx1ZXMpICkgewogICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRIaXN0b3JpY2FsVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggISREYXRhLT57JEtleX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJERhdGEtPnskS2V5fSA9ICRIaXN0b3JpY2FsVmFsdWVzLT57JEtleX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY29udmVydCBwb3NzaWJsZSB2YWx1ZXMga2V5ID0+IHZhbHVlIHRvIGtleSA9PiBrZXkgZm9yIEFDTHMgdXNpbmcgYSBIYXNoIHNsaWNlCiAgICAgICAgICAgICAgICAgICAgbXkgJUFjbERhdGEgPSAleyREYXRhfTsKICAgICAgICAgICAgICAgICAgICBAQWNsRGF0YXsga2V5cyAlQWNsRGF0YSB9ID0ga2V5cyAlQWNsRGF0YTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZXQgcG9zc2libGUgdmFsdWVzIGZpbHRlciBmcm9tIEFDTHMKICAgICAgICAgICAgICAgICAgICBteSAkQUNMID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+ICRTZWxmLT57QWN0aW9ufSwKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuVHlwZSAgICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSAgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgIEN1c3RvbWVyVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICgkQUNMKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICVGaWx0ZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbERhdGEoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgY29udmVydCBGaWxlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAgICAgICAgICAgICAleyRQb3NzaWJsZVZhbHVlc0ZpbHRlcn0gPSBtYXAgeyAkXyA9PiAkRGF0YS0+eyRffSB9IGtleXMgJUZpbHRlcjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgZ2V0IHNlYXJjaCBmaWVsZCBwcmVmZXJlbmNlcwogICAgICAgICAgICBteSAkU2VhcmNoRmllbGRQcmVmZXJlbmNlcyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hGaWVsZFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCRTZWFyY2hGaWVsZFByZWZlcmVuY2VzKTsKCiAgICAgICAgICAgIFBSRUZFUkVOQ0U6CiAgICAgICAgICAgIGZvciBteSAkUHJlZmVyZW5jZSAoIEB7JFNlYXJjaEZpZWxkUHJlZmVyZW5jZXN9ICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IGZpZWxkIEhUTUwKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXNGaWx0ZXIgPT4gJFBvc3NpYmxlVmFsdWVzRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIFByb2ZpbGUgICAgICAgICAgICAgID0+IHt9LAogICAgICAgICAgICAgICAgICAgIERlZmF1bHRWYWx1ZSAgICAgICAgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWctPntEZWZhdWx0c317RHluYW1pY0ZpZWxkfXsgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0sCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRQcmVmZXJlbmNlLT57VHlwZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIEZpZWxkID0+ICREeW5hbWljRmllbGRIVE1MLT57RmllbGR9LAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCA9PiAkRHluYW1pY0ZpZWxkSFRNTC0+e0xhYmVsfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ051bWJlcicsCiAgICAgICAgKTsKCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ05hbWUnLAogICAgICAgICk7CgogICAgICAgIG15ICRDbGFzc1N0cmcgPSAkTGF5b3V0T2JqZWN0LT5CdWlsZFNlbGVjdGlvbigKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWFyY2hhYmxlUGFyYW1ze0NsYXNzfSwKICAgICAgICAgICAgTmFtZSAgICAgICAgID0+ICdDbGFzc0lEcycsCiAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICREZWZhdWx0c3tDbGFzc0lEc30sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3MnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIENsYXNzU3RyZyA9PiAkQ2xhc3NTdHJnLAogICAgICAgICAgICB9LAogICAgICAgICk7CgogICAgICAgIGlmICggJENvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZX0gKSB7CgogICAgICAgICAgICAjIGdlbmVyYXRlIGRyb3Bkb3duIGZvciBzZWxlY3RpbmcgdGhlIHdhbnRlZCBkZXBsb3ltZW50IHN0YXRlcwogICAgICAgICAgICBteSAkQ3VyRGVwbFN0YXRlT3B0aW9uU3RyZyA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgICAgICAgICAgRGF0YSAgICAgICAgID0+ICRTZWFyY2hhYmxlUGFyYW1ze0RlcGxTdGF0ZX0sCiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJ0RlcGxTdGF0ZUlEcycsCiAgICAgICAgICAgICAgICBTZWxlY3RlZElEICAgPT4gJERlZmF1bHRze0RlcGxveW1lbnRTdGF0ZUlEc30sCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXJEZXBsU3RhdGVPcHRpb25TdHJnID0+ICRDdXJEZXBsU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmZpZy0+e0luY2lkZW50U3RhdGV9ICkgewoKICAgICAgICAgICAgIyBnZW5lcmF0ZSBkcm9wZG93biBmb3Igc2VsZWN0aW5nIHRoZSB3YW50ZWQgaW5jaWRlbnQgc3RhdGVzCiAgICAgICAgICAgIG15ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gJFNlYXJjaGFibGVQYXJhbXN7SW5jaVN0YXRlfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnSW5jaVN0YXRlSURzJywKICAgICAgICAgICAgICAgIFNlbGVjdGVkSUQgICA9PiAkRGVmYXVsdHN7SW5jaWRlbnRTdGF0ZUlEc30sCiAgICAgICAgICAgICAgICBTaXplICAgICAgICAgPT4gNSwKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICAgICAgTXVsdGlwbGUgICAgID0+IDEsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZScsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBDdXJJbmNpU3RhdGVPcHRpb25TdHJnID0+ICRDdXJJbmNpU3RhdGVPcHRpb25TdHJnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoCiAgICAgICAgICAgIFRpdGxlID0+IFRyYW5zbGF0YWJsZSgnRXJyb3InKSwKICAgICAgICApOwogICAgICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJFcnJvcigKICAgICAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ05vIHBlcm1pc3Npb24hJyksCiAgICAgICAgKTsKICAgICAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgICAgIHJldHVybiAkT3V0cHV0OwogICAgfQoKICAgICRPdXRwdXQgLj0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnQ3VzdG9tZXJJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBidWlsZCBOYXZpZ2F0aW9uQmFyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyTmF2aWdhdGlvbkJhcigpOwoKICAgICMgZ2V0IHBhZ2UgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCjE7Cg==</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+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW07Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkgbm9uZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CgpvdXIgJE9iamVjdE1hbmFnZXJEaXNhYmxlZCA9IDE7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHslUGFyYW19OwoKICAgICMgY2xlYXIgYW55IGFjdGl2ZSBsb2dpbiB0byBlbmZvcmNlIHNlY3VyaXR5CiAgICBkZWxldGUgJFNlbGYtPntVc2VySUR9OwoKICAgICRTZWxmLT57Q2FjaGVUeXBlfSA9ICdJVFNNQ29uZmlndXJhdGlvbk1hbmFnZW1lbnQnOwogICAgJFNlbGYtPntDYWNoZVRUTH0gID0gNjAgKiA2MCAqIDI0ICogMjA7CgogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgICMgc2V0IGRlYnVnCiAgICAkU2VsZi0+e0RlYnVnfSA9IDA7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJFBhcmFtT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCJJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OiRTZWxmLT57QWN0aW9ufSIpOwoKICAgIG15ICRTb3J0QnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnU29ydEJ5JyApCiAgICAgICAgfHwgJENvbmZpZy0+eydTb3J0Qnk6OkRlZmF1bHQnfQogICAgICAgIHx8ICdBZ2UnOwoKICAgIGlmICggJFNvcnRCeSBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICRTb3J0QnkgPSAnQ2hhbmdlZCc7CiAgICB9CgogICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgb3JkZXJpbmcgdG8gYmUgdXNlZC4KICAgIG15ICREZWZhdWx0T3JkZXJCeSA9ICRDb25maWctPnsnT3JkZXI6OkRlZmF1bHQnfQogICAgICAgIHx8ICdVcCc7CgogICAgIyBTZXQgdGhlIHNvcnQgb3JkZXIgZnJvbSB0aGUgcmVxdWVzdCBwYXJhbWV0ZXJzLCBvciB0YWtlIHRoZSBkZWZhdWx0LgogICAgbXkgJE9yZGVyQnkgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnT3JkZXJCeScgKQogICAgICAgIHx8ICREZWZhdWx0T3JkZXJCeTsKCiAgICAjIGdldCBmaWx0ZXIgZnJvbSB3ZWIgcmVxdWVzdAogICAgbXkgJEZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdGaWx0ZXInICkgfHwgJyc7CgogICAgIyBnZXQgdGhlIGNvbHVtbiBmaWx0ZXJzIGZyb20gdGhlIHdlYiByZXF1ZXN0CiAgICBteSAlQ29sdW1uRmlsdGVyOwogICAgbXkgJUdldENvbHVtbkZpbHRlcjsKICAgIENPTFVNTk5BTUU6CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKAogICAgICAgIHF3KERlcGxTdGF0ZSBDdXJEZXBsU3RhdGUgSW5jaVN0YXRlIEN1ckluY2lTdGF0ZSBDbGFzcykKICAgICAgICApCiAgICB7CiAgICAgICAgIyBnZXQgY29sdW1uIGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0NvbHVtbkZpbHRlcicgLiAkQ29sdW1uTmFtZSApCiAgICAgICAgICAgIHx8ICcnOwoKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgJEZpbHRlclZhbHVlIGVxICcnOwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAkRmlsdGVyVmFsdWUgZXEgJ0RlbGV0ZUZpbHRlcic7CgogICAgICAgIHB1c2ggQHsgJENvbHVtbkZpbHRlcnsgJENvbHVtbk5hbWUgLiAnSURzJyB9IH0sICRGaWx0ZXJWYWx1ZTsKICAgICAgICAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSA9ICRGaWx0ZXJWYWx1ZTsKICAgIH0KCiAgICAjIGdldCBhbGwgZHluYW1pYyBmaWVsZHMKICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgT2JqZWN0VHlwZSA9PiBbJ0lUU01Db25maWdJdGVtJ10sCiAgICApOwoKICAgIERZTkFNSUNGSUVMRDoKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggQHsgJFNlbGYtPntEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CgogICAgICAgICMgZ2V0IGZpbHRlciBmcm9tIHdlYiByZXF1ZXN0CiAgICAgICAgbXkgJEZpbHRlclZhbHVlID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSgKICAgICAgICAgICAgUGFyYW0gPT4gJ0NvbHVtbkZpbHRlckR5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIWRlZmluZWQgJEZpbHRlclZhbHVlOwogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRGaWx0ZXJWYWx1ZSBlcSAnJzsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRmlsdGVyVmFsdWUgZXEgJ0RlbGV0ZUZpbHRlcic7CgogICAgICAgICRDb2x1bW5GaWx0ZXJ7ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gewogICAgICAgICAgICBFcXVhbHMgPT4gJEZpbHRlclZhbHVlLAogICAgICAgIH07CiAgICAgICAgJEdldENvbHVtbkZpbHRlcnsgJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IH0gPSAkRmlsdGVyVmFsdWU7CiAgICB9CgogICAgIyBidWlsZCBOYXZpZ2F0aW9uQmFyICYgdG8gZ2V0IHRoZSBvdXRwdXQgZmFzdGVyIQogICAgbXkgJFJlZnJlc2ggPSAnJzsKICAgIGlmICggJFNlbGYtPntVc2VyUmVmcmVzaFRpbWV9ICkgewogICAgICAgICRSZWZyZXNoID0gNjAgKiAkU2VsZi0+e1VzZXJSZWZyZXNoVGltZX07CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkT3V0cHV0OwogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gbmUgJ0FKQVhGaWx0ZXJVcGRhdGUnICkgewogICAgICAgICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5DdXN0b21lckhlYWRlcigKICAgICAgICAgICAgUmVmcmVzaCA9PiAkUmVmcmVzaCwKICAgICAgICApOwogICAgfQoKICAgICMgc29ydCBvbiBkZWZhdWx0IGJ5IHVzaW5nIGJvdGggKFByaW9yaXR5LCBBZ2UpIGVsc2UgdXNlIG9ubHkgb25lIHNvcnQgYXJndW1lbnQKICAgIG15ICVTb3J0OwoKICAgICMgZ2V0IGlmIHNlYXJjaCByZXN1bHQgc2hvdWxkIGJlIHByZS1zb3J0ZWQgYnkgcHJpb3JpdHkKICAgIG15ICRQcmVTb3J0QnlQcmlvcml0eSA9ICRDb25maWctPnsnUHJlU29ydDo6QnlQcmlvcml0eSd9OwogICAgaWYgKCAhJFByZVNvcnRCeVByaW9yaXR5ICkgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+ICRTb3J0QnksCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJE9yZGVyQnksCiAgICAgICAgKTsKICAgIH0KICAgIGVsc2UgewogICAgICAgICVTb3J0ID0gKAogICAgICAgICAgICBTb3J0QnkgID0+IFsgJ1ByaW9yaXR5JywgJFNvcnRCeSBdLAogICAgICAgICAgICBPcmRlckJ5ID0+IFsgJ0Rvd24nLCAgICAgJE9yZGVyQnkgXSwKICAgICAgICApOwogICAgfQoKICAgICMgbXkgY29uZmlnIGl0ZW0gb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgICMgZGVmaW5lIHBvc2l0aW9uIG9mIHRoZSBmaWx0ZXIgaW4gdGhlIGZyb250ZW5kCiAgICBteSAkUHJpb0NvdW50ZXIgPSAxMDAwOwoKICAgICMgdG8gc3RvcmUgdGhlIE5hdkJhciBmaWx0ZXJzCiAgICBteSAlRmlsdGVyczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBjbGFzcyBsaXN0CiAgICBteSAkQ2xhc3NMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwoKICAgIG15ICREZXBsU3RhdGVMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKCiAgICBteSBAVmlld2FibGVEZXBsU3RhdGVJRHM7CiAgICBteSBAVmlld2FibGVDbGFzc0lEczsKCiAgICAjIGZldGNoIGZpbHRlcnMgZnJvbSBjb25maWcKICAgIG15ICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpOwoKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnKSApIHsKICAgICAgICBQRVJNQ09ORjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0NvdW50ZXIgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJZGVudGlmaWVyICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkQ29uZmlnQ291bnRlciApOwogICAgICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+eyRDb25maWdJZGVudGlmaWVyfTsKICAgICAgICAgICAgbmV4dCBQRVJNQ09ORiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcpOwoKICAgICAgICAgICAgIyBzZXQgYXMgc2VsZWN0ZWQgZmlsdGVyIGlmIG5vdCBwcmVzZW50CiAgICAgICAgICAgICRGaWx0ZXIgfHw9ICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57TmFtZX07CgogICAgICAgICAgICAjIGNvbGxlY3QgZHluYW1pYyBmaWVsZCBzZWFyY2ggcGFyYW1zCiAgICAgICAgICAgIG15ICVERlNlYXJjaFBhcmFtczsKICAgICAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgKSB7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCBrZXlzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICAgICAkREZTZWFyY2hQYXJhbXN7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbXkgJUZpbHRlclNlYXJjaCA9ICgKICAgICAgICAgICAgICAgIENsYXNzZXMgICAgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfSwKICAgICAgICAgICAgICAgIERlcGxTdGF0ZXMgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntEZXBsb3ltZW50U3RhdGVzfSwKICAgICAgICAgICAgICAgICVERlNlYXJjaFBhcmFtcywKICAgICAgICAgICAgICAgICVTb3J0LAogICAgICAgICAgICAgICAgTGltaXQgPT4gJFNlbGYtPntTZWFyY2hMaW1pdH0gLy8gJzEwMDAnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBhcHBseSBmaWx0ZXIgcmVzdHJpY3Rpb25zIHRvIHNlYXJjaCBmb3IKICAgICAgICAgICAgaWYgKCAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSApIHsKICAgICAgICAgICAgICAgIGlmICggJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkQ2xhc3NMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9IH0gZXEgJF8gfSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0NsYXNzZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgQFZpZXdhYmxlQ2xhc3NJRHMgPSAoICRHZXRDb2x1bW5GaWx0ZXJ7Q2xhc3N9ICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJTZWFyY2h7Q2xhc3Nlc30gPSBbICRDbGFzc0xpc3QtPnsgJEdldENvbHVtbkZpbHRlcntDbGFzc30gfSBdOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEBWaWV3YWJsZUNsYXNzSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0NsYXNzfSApOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJTZWFyY2h7Q2xhc3Nlc30gPSBbICRDbGFzc0xpc3QtPnsgJEdldENvbHVtbkZpbHRlcntDbGFzc30gfSBdOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgQFZpZXdhYmxlQ2xhc3NJRHMgPSBzb3J0IGtleXMgJENsYXNzTGlzdC0+JSo7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICRQZXJtaXNzaW9uQ29uZGl0aW9uQ29uZmlnLT57RGVwbG95bWVudFN0YXRlc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIGlmICggYW55IHsgJERlcGxTdGF0ZUxpc3QtPnsgJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9IH0gZXEgJF8gfSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e0RlcGxveW1lbnRTdGF0ZXN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgQFZpZXdhYmxlRGVwbFN0YXRlSURzID0gKCAkR2V0Q29sdW1uRmlsdGVye0RlcGxTdGF0ZX0gKTsKICAgICAgICAgICAgICAgICAgICAgICAgJEZpbHRlclNlYXJjaHtEZXBsU3RhdGVzfSA9IFsgJERlcGxTdGF0ZUxpc3QtPnsgJEdldENvbHVtbkZpbHRlcntEZXBsU3RhdGV9IH0gXTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBAVmlld2FibGVEZXBsU3RhdGVJRHMgPSAoICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSApOwogICAgICAgICAgICAgICAgICAgICRGaWx0ZXJTZWFyY2h7RGVwbFN0YXRlc30gPSBbICREZXBsU3RhdGVMaXN0LT57ICRHZXRDb2x1bW5GaWx0ZXJ7RGVwbFN0YXRlfSB9IF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBAVmlld2FibGVEZXBsU3RhdGVJRHMgPSBzb3J0IGtleXMgJERlcGxTdGF0ZUxpc3QtPiUqOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgICAgICBpZiAoIEBWaWV3YWJsZUNsYXNzSURzICYmIEBWaWV3YWJsZURlcGxTdGF0ZUlEcyApIHsKICAgICAgICAgICAgICAgICRDb3VudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgICVGaWx0ZXJTZWFyY2gsCiAgICAgICAgICAgICAgICAgICAgUmVzdWx0ID0+ICdDT1VOVCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkRmlsdGVyc3skQ29uZmlnQ291bnRlcn0gPSB7CiAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFBlcm1pc3Npb25Db25kaXRpb25Db25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgIFByaW8gICA9PiAkUHJpb0NvdW50ZXIsCiAgICAgICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICAgICAgU2VhcmNoID0+IFwlRmlsdGVyU2VhcmNoLAogICAgICAgICAgICB9OwogICAgICAgICAgICAkUHJpb0NvdW50ZXIrKzsKICAgICAgICB9CiAgICB9CgogICAgIyBpZiBvbmx5IG9uZSBmaWx0ZXIgZXhpc3RzCiAgICBpZiAoIHNjYWxhciBrZXlzICVGaWx0ZXJzID09IDEgKSB7CgogICAgICAgICMgZ2V0IHRoZSBuYW1lIG9mIHRoZSBvbmx5IGZpbHRlcgogICAgICAgIG15ICgkRmlsdGVyTmFtZSkgPSBrZXlzICVGaWx0ZXJzOwoKICAgICAgICAjIGFjdGl2YXRlIHRoaXMgZmlsdGVyCiAgICAgICAgJEZpbHRlciA9ICRGaWx0ZXJOYW1lOwogICAgfQoKICAgICMgY2hlY2sgaWYgZmlsdGVyIGlzIHZhbGlkCiAgICBpZiAoICRGaWx0ZXIgJiYgIWV4aXN0cyAkRmlsdGVyc3skRmlsdGVyfSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSggJ0ludmFsaWQgRmlsdGVyOiAlcyEnLCAkRmlsdGVyICksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgaGVhZGVyIGZpbHRlcgogICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJUZpbHRlcnMgKSB7CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWx0ZXJIZWFkZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRLZXl9IH0sCiAgICAgICAgICAgICAgICBGaWx0ZXIgPT4gJEtleSwKICAgICAgICAgICAgICAgIENsYXNzQSA9PiAkS2V5IGVxICRGaWx0ZXIgPyAnU2VsZWN0ZWQnIDogJycsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHNob3cgZmlsdGVyIGRlbGV0ZSBpZiBuZWVkZWQKICAgIGlmICglR2V0Q29sdW1uRmlsdGVyKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpbHRlckRlbGV0ZScsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkVmlldyA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWaWV3JyApIHx8ICcnOwoKICAgICMgbG9va3VwIGxhdGVzdCB1c2VkIHZpZXcgbW9kZQogICAgaWYgKCAhJFZpZXcgJiYgJFNlbGYtPnsgJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFNlbGYtPntBY3Rpb259IH0gKSB7CiAgICAgICAgJFZpZXcgPSAkU2VsZi0+eyAnVXNlckNvbmZpZ0l0ZW1PdmVydmlldycgLiAkU2VsZi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSB1c2UgUHJldmlldyBhcyBkZWZhdWx0IGFzIGluIExheW91dENvbmZpZ0l0ZW0KICAgICRWaWV3IHx8PSAnU21hbGwnOwoKICAgICMgQ2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUuCiAgICBteSAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljT3ZlcnZpZXcnKTsKICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKCiAgICAgICAgIyBUcnkgdG8gZmluZCBmYWxsYmFjaywgdGFrZSBmaXJzdCBjb25maWd1cmVkIHZpZXcgbW9kZS4KICAgICAgICBLRVk6CiAgICAgICAgZm9yIG15ICRLZXkgKCBzb3J0IGtleXMgJXskQmFja2VuZHN9ICkgewogICAgICAgICAgICAkVmlldyA9ICRLZXk7CiAgICAgICAgICAgIGxhc3QgS0VZOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCBwYWdlIHNob3duIGNvdW50CiAgICBteSAkUGFnZVNob3duID0gJENvbmZpZy0+e1BhZ2VTaG93bn07CiAgICBteSAlUGFnZU5hdjsKCiAgICAjIGRvIHNob3duIGNvbmZpZyBpdGVtIGxvb2t1cAogICAgbXkgJExpbWl0ID0gMTAwMDsKCiAgICBteSAkRWxlbWVudENoYW5nZWQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRWxlbWVudENoYW5nZWQnICkgfHwgJyc7CiAgICBteSAkSGVhZGVyQ29sdW1uICAgPSAkRWxlbWVudENoYW5nZWQ7CiAgICAkSGVhZGVyQ29sdW1uID1+IHN7XEEgQ29sdW1uRmlsdGVyIH17fW1zeGc7CgogICAgIyBnZXQgZGF0YSAodmlld2FibGUgY29uZmlnIGl0ZW1zLi4uKQogICAgIyBzZWFyY2ggYWxsIGNvbmZpZyBpdGVtcwogICAgbXkgQFZpZXdhYmxlQ29uZmlnSXRlbXM7CiAgICBteSBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zOwoKICAgICMgYnVpbGQgbGlua3MKICAgIG15ICRDb2x1bW5GaWx0ZXJMaW5rID0gJyc7CiAgICBDT0xVTU5OQU1FOgogICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCBrZXlzICVHZXRDb2x1bW5GaWx0ZXIgKSB7CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICEkQ29sdW1uTmFtZTsKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgIWRlZmluZWQgJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX07CiAgICAgICAgbmV4dCBDT0xVTU5OQU1FIGlmICRHZXRDb2x1bW5GaWx0ZXJ7JENvbHVtbk5hbWV9IGVxICcnOwogICAgICAgICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgICAgIC49ICc7JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJ0NvbHVtbkZpbHRlcicgLiAkQ29sdW1uTmFtZSApCiAgICAgICAgICAgIC4gJz0nIC4gJExheW91dE9iamVjdC0+TGlua0VuY29kZSggJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX0gKTsKICAgIH0KCiAgICBteSAkTGlua1BhZ2UgPSAnRmlsdGVyPScKICAgICAgICAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJEZpbHRlciApCiAgICAgICAgLiAnO1ZpZXc9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFZpZXcgKQogICAgICAgIC4gJztTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAuICc7JzsKCiAgICBteSAkTGlua1NvcnQgPSAnVmlldz0nIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkVmlldyApCiAgICAgICAgLiAnO0ZpbHRlcj0nCiAgICAgICAgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRGaWx0ZXIgKQogICAgICAgIC4gJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAuICc7JzsKCiAgICBteSAkTGlua0ZpbHRlciA9ICdTb3J0Qnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJFNvcnRCeSApCiAgICAgICAgLiAnO09yZGVyQnk9JyAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJE9yZGVyQnkgKQogICAgICAgIC4gJztWaWV3PScgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRWaWV3ICkKICAgICAgICAuICc7JzsKCiAgICBteSAkTGFzdENvbHVtbkZpbHRlciA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdMYXN0Q29sdW1uRmlsdGVyJyApIHx8ICcnOwoKICAgIGlmICggISRMYXN0Q29sdW1uRmlsdGVyICYmICRDb2x1bW5GaWx0ZXJMaW5rICkgewoKICAgICAgICAjIGlzIHBsYW5uZWQgdG8gaGF2ZSBhIGxpbmsgdG8gZ28gYmFjayBoZXJlCiAgICAgICAgJExhc3RDb2x1bW5GaWx0ZXIgPSAxOwogICAgfQoKICAgIGlmICggQFZpZXdhYmxlRGVwbFN0YXRlSURzICYmIEBWaWV3YWJsZUNsYXNzSURzICkgewoKICAgICAgICAjIGdldCBjb25maWcgaXRlbSB2YWx1ZXMKICAgICAgICBpZiAoCiAgICAgICAgICAgICFJc1N0cmluZ1dpdGhEYXRhKCRIZWFkZXJDb2x1bW4pCiAgICAgICAgICAgIHx8ICgKICAgICAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoJEhlYWRlckNvbHVtbikKICAgICAgICAgICAgICAgICYmICgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnT2JqZWN0LT5HZXQoJ09ubHlWYWx1ZXNPbkNvbmZpZ0l0ZW0nKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICApCiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyfS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgIExpbWl0ICA9PiAkTGltaXQsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRTdGFydEhpdCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxOwoKICAgICAgICAgICAgJVBhZ2VOYXYgPSAkTGF5b3V0T2JqZWN0LT5QYWdlTmF2QmFyKAogICAgICAgICAgICAgICAgTGltaXQgICAgID0+IDEwMDAwLAogICAgICAgICAgICAgICAgU3RhcnRIaXQgID0+ICRTdGFydEhpdCwKICAgICAgICAgICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgICAgICAgICAgQWxsSGl0cyAgID0+IHNjYWxhciBAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICAgICAgTGluayAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICAgICAgICAgIElEUHJlZml4ICA9PiAnUHVibGljSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgQFZpZXdhYmxlQ29uZmlnSXRlbXMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICV7ICRGaWx0ZXJzeyRGaWx0ZXJ9LT57U2VhcmNofSB9LAogICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgIExpbWl0ICA9PiAkU3RhcnRIaXQgKyAkUGFnZVNob3duIC0gMSwKICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICB9CgogICAgIyBUT0RPIE1heWJlIHRoZXJlIGlzIGEgbW9yZSBlbGVnYW50IHdheSB0byBkbyB0aGlzPwogICAgJFNlbGYtPntGaWx0ZXJ9ICA9ICRGaWx0ZXI7CiAgICAkU2VsZi0+e0ZpbHRlcnN9ID0gXCVGaWx0ZXJzOwoKICAgIG15ICRDb3VudFRvdGFsID0gMDsKICAgIG15ICVOYXZCYXJGaWx0ZXI7CiAgICBmb3IgbXkgJEZpbHRlckNvbHVtbiAoIHNvcnQga2V5cyAlRmlsdGVycyApIHsKICAgICAgICBteSAkQ291bnQgPSAwOwogICAgICAgIGlmIChAVmlld2FibGVEZXBsU3RhdGVJRHMpIHsKICAgICAgICAgICAgJENvdW50ID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1TZWFyY2goCiAgICAgICAgICAgICAgICAleyAkRmlsdGVyc3skRmlsdGVyQ29sdW1ufS0+e1NlYXJjaH0gfSwKICAgICAgICAgICAgICAgICVDb2x1bW5GaWx0ZXIsCiAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgKSB8fCAwOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkRmlsdGVyQ29sdW1uIGVxICRGaWx0ZXIgKSB7CiAgICAgICAgICAgICRDb3VudFRvdGFsID0gJENvdW50OwogICAgICAgIH0KCiAgICAgICAgJE5hdkJhckZpbHRlcnsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0tPntQcmlvfSB9ID0gewogICAgICAgICAgICBDb3VudCAgPT4gJENvdW50LAogICAgICAgICAgICBGaWx0ZXIgPT4gJEZpbHRlckNvbHVtbiwKICAgICAgICAgICAgJXsgJEZpbHRlcnN7JEZpbHRlckNvbHVtbn0gfSwKICAgICAgICB9OwogICAgfQoKICAgICMgc2hvdyBjb25maWcgaXRlbXMKICAgIG15ICRDb25maWdJdGVtTGlzdEhUTUwgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIEZpbHRlciAgICAgICAgICAgICAgICA9PiAkRmlsdGVyLAogICAgICAgIEZpbHRlcnMgICAgICAgICAgICAgICA9PiBcJU5hdkJhckZpbHRlciwKICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgPT4gXEBWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIE9yaWdpbmFsQ29uZmlnSXRlbUlEcyA9PiBcQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtcywKICAgICAgICBHZXRDb2x1bW5GaWx0ZXIgICAgICAgPT4gXCVHZXRDb2x1bW5GaWx0ZXIsCiAgICAgICAgTGFzdENvbHVtbkZpbHRlciAgICAgID0+ICRMYXN0Q29sdW1uRmlsdGVyLAogICAgICAgIEFjdGlvbiAgICAgICAgICAgICAgICA9PiAnUHVibGljSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIFRvdGFsICAgICAgICAgICAgICAgICA9PiAkQ291bnRUb3RhbCwKICAgICAgICBSZXF1ZXN0ZWRVUkwgICAgICAgICAgPT4gJFNlbGYtPntSZXF1ZXN0ZWRVUkx9LAogICAgICAgIFZpZXcgICAgICAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICBUaXRsZU5hbWUgICAgICAgICAgICAgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdPdmVydmlldzogSVRTTSBDb25maWdJdGVtJyksCiAgICAgICAgVGl0bGVWYWx1ZSAgICAgICAgICAgID0+ICRTZWxmLT57RmlsdGVyc317JEZpbHRlcn0tPntOYW1lfSwKICAgICAgICBFbnYgICAgICAgICAgICAgICAgICAgPT4gJFNlbGYsCiAgICAgICAgTGlua1BhZ2UgICAgICAgICAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICBMaW5rU29ydCAgICAgICAgICAgICAgPT4gJExpbmtTb3J0LAogICAgICAgIExpbmtGaWx0ZXIgICAgICAgICAgICA9PiAkTGlua0ZpbHRlciwKICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgID0+ICRTb3J0QnksCiAgICAgICAgRW5hYmxlQ29sdW1uRmlsdGVycyAgID0+IDEsCiAgICAgICAgQ29sdW1uRmlsdGVyRm9ybSAgICAgID0+IHsKICAgICAgICAgICAgRmlsdGVyID0+ICRGaWx0ZXIgfHwgJycsCiAgICAgICAgfSwKICAgICAgICBGcm9udGVuZCA9PiAnUHVibGljJywKCiAgICAgICAgIyBkbyBub3QgcHJpbnQgdGhlIHJlc3VsdCBlYXJsaWVyLCBidXQgcmV0dXJuIGNvbXBsZXRlIGNvbnRlbnQKICAgICAgICBPdXRwdXQgPT4gMSwKICAgICk7CgogICAgbXkgJVB1YmxpY0FjdGlvbnMgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpY0Zyb250ZW5kOjpNb2R1bGUnKSAvLyB7fSB9OwogICAgaWYgKCAkUHVibGljQWN0aW9uc3tQdWJsaWNJVFNNQ29uZmlnSXRlbVNlYXJjaH0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ1NlYXJjaEJveCcsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkSGVhZGVyVGl0bGUgPSAkQ29uZmlnT2JqZWN0LT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljSVRTTUNvbmZpZ0l0ZW0iKS0+e1RpdGxlfSB8fCAiQ29uZmlnSXRlbXMiOwogICAgJE91dHB1dCAuPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICA9PiAkSGVhZGVyVGl0bGUsCiAgICAgICAgICAgIElUU01Db25maWdJdGVtTGlzdEhUTUwgPT4gJENvbmZpZ0l0ZW1MaXN0SFRNTCwKICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgfSwKICAgICk7CgogICAgIyMgZ2V0IHBhZ2UgZm9vdGVyCiAgICAkT3V0cHV0IC49ICRMYXlvdXRPYmplY3QtPkN1c3RvbWVyRm9vdGVyKCk7CiAgICAjCiAgICByZXR1cm4gJE91dHB1dDsKfQoKMTsK</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+ICRTZWFyY2hQYXJhbSApOwoKICAgICAgICAgICAgIyBzdXByZXNzIGZ1enp5IGxvZ2ljIG9wZXJhdG9ycwogICAgICAgICAgICBpZiAoICRDb25maWctPntTdXBwcmVzc0Z1enp5TG9naWN9ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbX0gPX4gcy9bXColX10vL2c7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJExpbmtQYWdlIC49ICI7JFNlYXJjaFBhcmFtPSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+ICRHZXRQYXJhbXskU2VhcmNoUGFyYW19ICk7CiAgICAgICAgICAgICRMaW5rU29ydCAuPSAiOyRTZWFyY2hQYXJhbT0iIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAkR2V0UGFyYW17JFNlYXJjaFBhcmFtfSApOwogICAgICAgIH0KCiAgICAgICAgbXkgQEFycmF5U2VhcmNoUGFyYW1zOwoKICAgICAgICBpZiAoICRDb25maWctPntDbGFzc30gKSB7CiAgICAgICAgICAgIHB1c2ggQEFycmF5U2VhcmNoUGFyYW1zLCAnQ2xhc3NJRHMnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnLT57RGVwbG95bWVudFN0YXRlfSApIHsKICAgICAgICAgICAgcHVzaCBAQXJyYXlTZWFyY2hQYXJhbXMsICdEZXBsU3RhdGVJRHMnOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZmlnLT57SW5jaWRlbnRTdGF0ZX0gKSB7CiAgICAgICAgICAgIHB1c2ggQEFycmF5U2VhcmNoUGFyYW1zLCAnSW5jaVN0YXRlSURzJzsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkU2VhcmNoUGFyYW1BcnJheSAoQEFycmF5U2VhcmNoUGFyYW1zKSB7CgogICAgICAgICAgICAjIGZldGNoIG11bHRpIHZhbHVlIHBhcmFtcwogICAgICAgICAgICBteSBAQXJyYXkgPSAkUGFyYW1PYmplY3QtPkdldEFycmF5KCBQYXJhbSA9PiAkU2VhcmNoUGFyYW1BcnJheSApOwoKICAgICAgICAgICAgaWYgKCBncmVwIHskX30gQEFycmF5ICkgewogICAgICAgICAgICAgICAgJEdldFBhcmFteyRTZWFyY2hQYXJhbUFycmF5fSA9IFxAQXJyYXk7CiAgICAgICAgICAgICAgICAkTGlua1BhZ2UgLj0gam9pbiggJycsIG1hcCB7ICI7JFNlYXJjaFBhcmFtQXJyYXk9IiAuICRMYXlvdXRPYmplY3QtPkFzY2lpMkh0bWwoIFRleHQgPT4gJF8gKSB9IEBBcnJheSApOwogICAgICAgICAgICAgICAgJExpbmtTb3J0IC49IGpvaW4oICcnLCBtYXAgeyAiOyRTZWFyY2hQYXJhbUFycmF5PSIgLiAkTGF5b3V0T2JqZWN0LT5Bc2NpaTJIdG1sKCBUZXh0ID0+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDE5IE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1BdHRhY2htZW50OwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgdjUuMjQ7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKCiAgICAjIGNsZWFyIGFueSBhY3RpdmUgbG9naW4gdG8gZW5mb3JjZSBzZWN1cml0eQogICAgZGVsZXRlICRTZWxmLT57VXNlcklEfTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBjb25maWcgb2YgZnJvbnRlbmQgbW9kdWxlCiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoIklUU01Db25maWdJdGVtOjpGcm9udGVuZDo6JFNlbGYtPntBY3Rpb259Iik7CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRQYXJhbU9iamVjdCAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0Jyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwogICAgbXkgJExvZ09iamVjdCAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICAjIGdldCBJRHMKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJFZlcnNpb25JRCAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICk7CgogICAgIyBjaGVjayBwYXJhbQogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCB8fCAhJFZlcnNpb25JRCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDb25maWdJdGVtSUQgYW5kIFZlcnNpb25JRCBhcmUgbmVlZGVkIScsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICAjIGZldGNoIGNvbmZpZyBpdGVtCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJFZlcnNpb25JRCwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICApOwoKICAgIGlmICggJENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9ICE9ICRDb25maWdJdGVtSUQgKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAnVmVyc2lvbklEIGRvZXMgbm90IGJlbG9uZyB0byBDb25maWdJdGVtSUQhJywKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICApOwoKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oKTsKICAgIH0KCiAgICAjIGNoZWNrIHBlcm1pc3Npb25zCiAgICBteSAkSGFzQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlB1YmxpY1Blcm1pc3Npb24oCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICk7CiAgICBpZiAoICEkSGFzQWNjZXNzICkgewogICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5QdWJsaWNOb1Blcm1pc3Npb24oIFdpdGhIZWFkZXIgPT4gJ3llcycgKTsKICAgIH0KCiAgICBteSAkSFRNTFV0aWxzT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkhUTUxVdGlscycpOwoKICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICAjIEhUTUxWaWV3IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnSFRNTFZpZXcnICkgewoKICAgICAgICAjIEdldCB0aGUgRmllbGQgY29udGVudC4KICAgICAgICBteSAkRmllbGRDb250ZW50ID0gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn07CgogICAgICAgICMgIyBCdWlsZCBiYXNlIFVSTCBmb3IgaW4tbGluZSBpbWFnZXMuCiAgICAgICAgIyBteSAkU2Vzc2lvbklEID0gJyc7CiAgICAgICAgIyBpZiAoICRTZWxmLT57U2Vzc2lvbklEfSAmJiAhJFNlbGYtPntTZXNzaW9uSURDb29raWV9ICkgewogICAgICAgICMgICAgICRTZXNzaW9uSUQgPSAnOycgLiAkU2VsZi0+e1Nlc3Npb25OYW1lfSAuICc9JyAuICRTZWxmLT57U2Vzc2lvbklEfTsKICAgICAgICAjICAgICAkRmllbGRDb250ZW50ID1+IHN7CiAgICAgICAgIyAgICAgICAgIChBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtDb25maWdJdGVtSUQ9XGQrO0ZpbGVuYW1lPVx3KykKICAgICAgICAjICAgICB9eyQxJFNlc3Npb25JRH1nbXN4OwogICAgICAgICMgfQoKICAgICAgICAjIGZldGNoIGNvbmZpZyBpdGVtIGF0dGFjaG1lbnQgbGlzdCBmb3IgaGFuZGxpbmcgaW5saW5lIGF0dGFjaG1lbnRzCiAgICAgICAgbXkgQEF0dGFjaG1lbnRMaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25BdHRhY2htZW50TGlzdCgKICAgICAgICAgICAgVmVyc2lvbklEID0+ICRDb25maWdJdGVtLT57VmVyc2lvbklEfSwKICAgICAgICApOwoKICAgICAgICAjIGZldGNoIGF0dGFjaG1lbnQgZGF0YSBhbmQgc3RvcmUgaW4gaGFzaCBmb3IgUmljaFRleHREb2N1bWVudFNlcnZlCiAgICAgICAgbXkgJUF0dGFjaG1lbnRzOwogICAgICAgIGZvciBteSAkRmlsZW5hbWUgKEBBdHRhY2htZW50TGlzdCkgewogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfSA9ICRDb25maWdJdGVtT2JqZWN0LT5WZXJzaW9uQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH0sCiAgICAgICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQXR0YWNobWVudHN7JEZpbGVuYW1lfXtDb250ZW50SUR9ID0gJEF0dGFjaG1lbnRzeyRGaWxlbmFtZX17UHJlZmVyZW5jZXN9e0NvbnRlbnRJRH07CiAgICAgICAgfQoKICAgICAgICAjIG5lZWRlZCB0byBwcm92aWRlIG5lY2Vzc2FyeSBwYXJhbXMgZm9yIFJpY2hUZXh0RG9jdW1lbnRTZXJ2ZQogICAgICAgIG15ICVEYXRhID0gKAogICAgICAgICAgICBDb250ZW50ICAgICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDb250ZW50VHlwZSA9PiAndGV4dC9odG1sOyBjaGFyc2V0PSJ1dGYtOCInLAogICAgICAgICAgICBEaXNwb3NpdGlvbiA9PiAnaW5saW5lJywKICAgICAgICApOwoKICAgICAgICBteSAkVVJMCiAgICAgICAgICAgID0gIkFjdGlvbj1QdWJsaWNJVFNNQ29uZmlnSXRlbUF0dGFjaG1lbnQ7U3ViYWN0aW9uPURvd25sb2FkQXR0YWNobWVudDtDb25maWdJdGVtSUQ9JENvbmZpZ0l0ZW0tPntDb25maWdJdGVtSUR9O1ZlcnNpb25JRD0kQ29uZmlnSXRlbS0+e1ZlcnNpb25JRH07RmlsZW5hbWU9IjsKCiAgICAgICAgIyByZWZvcm1hdCByaWNoIHRleHQgZG9jdW1lbnQgdG8gaGF2ZSBjb3JyZWN0IGNoYXJzZXQgYW5kIGxpbmtzIHRvCiAgICAgICAgIyBpbmxpbmUgZG9jdW1lbnRzCiAgICAgICAgJURhdGEgPSAkTGF5b3V0T2JqZWN0LT5SaWNoVGV4dERvY3VtZW50U2VydmUoCiAgICAgICAgICAgIERhdGEgICAgICAgICAgICAgICA9PiBcJURhdGEsCiAgICAgICAgICAgIFVSTCAgICAgICAgICAgICAgICA9PiAkVVJMLAogICAgICAgICAgICBBdHRhY2htZW50cyAgICAgICAgPT4gXCVBdHRhY2htZW50cywKICAgICAgICAgICAgTG9hZEV4dGVybmFsSW1hZ2VzID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICREYXRhe0NvbnRlbnR9OwoKICAgICAgICAjIHJlbW92ZSBhY3RpdmUgaHRtbCBjb250ZW50IChzY3JpcHRzLCBhcHBsZXRzLCBldGMuLi4pCiAgICAgICAgbXkgJVNhZmVDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+U2FmZXR5KAogICAgICAgICAgICBTdHJpbmcgICAgICAgPT4gJEZpZWxkQ29udGVudCwKICAgICAgICAgICAgTm9BcHBsZXQgICAgID0+IDEsCiAgICAgICAgICAgIE5vT2JqZWN0ICAgICA9PiAxLAogICAgICAgICAgICBOb0VtYmVkICAgICAgPT4gMSwKICAgICAgICAgICAgTm9JbnRTcmNMb2FkID0+IDAsCiAgICAgICAgICAgIE5vRXh0U3JjTG9hZCA9PiAwLAogICAgICAgICAgICBOb0phdmFTY3JpcHQgPT4gMSwKICAgICAgICApOwoKICAgICAgICAjIHRha2UgdGhlIHNhZmUgY29udGVudCBpZiBuZWNjZXNzYXJ5CiAgICAgICAgaWYgKCAkU2FmZUNvbnRlbnR7UmVwbGFjZX0gKSB7CiAgICAgICAgICAgICRGaWVsZENvbnRlbnQgPSAkU2FmZUNvbnRlbnR7U3RyaW5nfTsKICAgICAgICB9CgogICAgICAgICMgZGV0ZWN0IGFsbCBwbGFpbiB0ZXh0IGxpbmtzIGFuZCBwdXQgdGhlbSBpbnRvIGFuIEhUTUwgPGE+IHRhZwogICAgICAgICRGaWVsZENvbnRlbnQgPSAkSFRNTFV0aWxzT2JqZWN0LT5MaW5rUXVvdGUoCiAgICAgICAgICAgIFN0cmluZyA9PiAkRmllbGRDb250ZW50LAogICAgICAgICk7CgogICAgICAgICMgc2V0IHRhcmdldD0iX2JsYW5rIiBhdHRyaWJ1dGUgdG8gYWxsIEhUTUwgPGE+IHRhZ3MKICAgICAgICAjIHRoZSBMaW5rUXVvdGUgZnVuY3Rpb24gbmVlZHMgdG8gYmUgY2FsbGVkIGFnYWluCiAgICAgICAgJEZpZWxkQ29udGVudCA9ICRIVE1MVXRpbHNPYmplY3QtPkxpbmtRdW90ZSgKICAgICAgICAgICAgU3RyaW5nICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIFRhcmdldEFkZCA9PiAxLAogICAgICAgICk7CgogICAgICAgICMgYWRkIG5lZWRlZCBIVE1MIGhlYWRlcnMKICAgICAgICAkRmllbGRDb250ZW50ID0gJEhUTUxVdGlsc09iamVjdC0+RG9jdW1lbnRDb21wbGV0ZSgKICAgICAgICAgICAgU3RyaW5nICA9PiAkRmllbGRDb250ZW50LAogICAgICAgICAgICBDaGFyc2V0ID0+ICd1dGYtOCcsCiAgICAgICAgKTsKCiAgICAgICAgIyBlc2NhcGUgc2luZ2xlIHF1b3RlcwogICAgICAgICRGaWVsZENvbnRlbnQgPX4gcy8nLyYjMzk7L2c7CgogICAgICAgICMgUmV0dXJuIGNvbXBsZXRlIEhUTUwgYXMgYW4gYXR0YWNobWVudC4KICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+QXR0YWNobWVudCgKICAgICAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvaHRtbCcsCiAgICAgICAgICAgIENvbnRlbnQgICAgID0+ICRGaWVsZENvbnRlbnQsCiAgICAgICAgICAgIFR5cGUgICAgICAgID0+ICdpbmxpbmUnLAogICAgICAgICk7CiAgICB9CgogICAgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKICAgICMgRG93bmxvYWRBdHRhY2htZW50IFN1Yi1hY3Rpb24KICAgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjCiAgICBpZiAoICRTZWxmLT57U3ViYWN0aW9ufSBlcSAnRG93bmxvYWRBdHRhY2htZW50JyApIHsKCiAgICAgICAgbXkgJEZpbGVuYW1lID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0ZpbGVuYW1lJyApOwoKICAgICAgICAjIGNoZWNrIHBhcmFtCiAgICAgICAgaWYgKCAhJEZpbGVuYW1lICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnRmlsZW5hbWUgaXMgbmVlZGVkIScsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBhbiBhdHRhY2htZW50CiAgICAgICAgbXkgJERhdGEgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkF0dGFjaG1lbnRHZXQoCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkVmVyc2lvbklELAogICAgICAgICAgICBGaWxlbmFtZSAgPT4gJEZpbGVuYW1lLAogICAgICAgICk7CiAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJERhdGEpICkgewogICAgICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpLiIsCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkVycm9yU2NyZWVuKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREYXRhKSApIHsKICAgICAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoICREYXRhLT4lKiApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISBNYXkgYmUgYW4gYXR0YWNrISEhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KICAgIH0KCiAgICAjIE5vIChrbm93bikgc3ViYWN0aW9uCiAgICByZXR1cm4gJExheW91dE9iamVjdC0+RXJyb3JTY3JlZW4oCiAgICAgICAgTWVzc2FnZSA9PiBUcmFuc2xhdGFibGUoJ0ludmFsaWQgU3ViYWN0aW9uLicpLAogICAgKTsKfQoKMTsK</File>
        <File Location="Kernel/Modules/PublicITSMConfigItemZoom.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6TW9kdWxlczo6UHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCBxdyhhbnkpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpMYW5ndWFnZSBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgYWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdAogICAgbXkgJFNlbGYgPSB7JVBhcmFtfTsKCiAgICAjIGNsZWFyIGFueSBhY3RpdmUgbG9naW4gdG8gZW5mb3JjZSBzZWN1cml0eQogICAgZGVsZXRlICRTZWxmLT57VXNlcklEfTsKCiAgICAkU2VsZi0+e0NhY2hlVHlwZX0gPSAnSVRTTUNvbmZpZ3VyYXRpb25NYW5hZ2VtZW50JzsKICAgICRTZWxmLT57Q2FjaGVUVEx9ICA9IDYwICogNjAgKiAyNCAqIDIwOwoKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBSdW4gewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBwYXJhbSBvYmplY3QKICAgIG15ICRQYXJhbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKTsKCiAgICAjIGdldCBwYXJhbXMKICAgIG15ICRDb25maWdJdGVtSUQgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnQ29uZmlnSXRlbUlEJyApOwogICAgbXkgJFZlcnNpb25JRCAgICA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdWZXJzaW9uSUQnICk7CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRCApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UHVibGljRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gVHJhbnNsYXRhYmxlKCdObyBDb25maWdJdGVtSUQgaXMgZ2l2ZW4hJyksCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENvbmZpZ09iamVjdCAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgY2hlY2sgZm9yIGFjY2VzcyByaWdodHMKICAgIG15ICRIYXNBY2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+UHVibGljUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgaWYgKCAhJEhhc0FjY2VzcyApIHsKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UHVibGljTm9QZXJtaXNzaW9uKCBXaXRoSGVhZGVyID0+ICd5ZXMnICk7CiAgICB9CgogICAgbXkgJENvbmZpZyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpQdWJsaWNJVFNNQ29uZmlnSXRlbVpvb20nKSAvLyB7fTsKCiAgICBpZiAoICEkQ29uZmlnLT57VmVyc2lvbnNFbmFibGVkfSApIHsKICAgICAgICAkVmVyc2lvbklEID0gdW5kZWY7CiAgICB9CgogICAgIyBnZXQgY29udGVudAogICAgbXkgJENvbmZpZ0l0ZW0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgVmVyc2lvbklEICAgICA9PiAkVmVyc2lvbklELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICk7CiAgICBpZiAoICEkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgYWRkaXRpb25hbCBzYW5pdHkgY2hlY2sgLSBQdWJsaWNQZXJtaXNzaW9uIHNob3VsZCBoYW5kbGUgdGhpcyBjYXNlIHVzdWFsbHkKICAgICAgICByZXR1cm4gJExheW91dE9iamVjdC0+UHVibGljRXJyb3JTY3JlZW4oCiAgICAgICAgICAgIE1lc3NhZ2UgPT4gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDb25maWdJdGVtIG5vdCBmb3VuZCEnKSwKICAgICAgICApOwogICAgfQoKICAgICMgc2V0IGluY2lkZW50IHNpZ25hbAogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIGNvbG9yIGZvciB0aGUgZGVwbG95bWVudCBzdGF0ZXMKICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbG95bWVudFN0YXRlc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIHNldCBkZXBsb3ltZW50IHN0eWxlIGNvbG9ycwogICAgbXkgJFN0eWxlQ2xhc3NlcyA9ICcnOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJFByZWZlcmVuY2Vze0NvbG9yfTsKICAgICAgICBteSAoJENvbG9yKSA9ICRQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY292ZXJ0ZWQgZGVwbG95bWVudCBzdGF0ZSBhcyB2YWx1ZQogICAgICAgICREZXBsU2lnbmFsc3sgJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH0gfSA9ICdDb2xvcicgLiAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvdmVydCB0byBsb3dlciBjYXNlCiAgICAgICAgbXkgJERlcGxTdGF0ZUNvbG9yID0gbGMoJENvbG9yKSA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkNvbG9yJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgIyBvdXRwdXQgaGVhZGVyCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJIZWFkZXIoIFZhbHVlID0+ICRDb25maWdJdGVtLT57TnVtYmVyfSApOwoKICAgIGlmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfSApIHsKICAgICAgICBpZiAoICRDb25maWctPntHZW5lcmFsSW5mb317TnVtYmVyfSApIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdGdWxsU3ViJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE51bWJlciA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgID0+ICRDb25maWctPntHZW5lcmFsSW5mb317Q2xhc3N9ID8gJENvbmZpZ0l0ZW0tPntDbGFzc30gOiAnQ29uZmlnSXRlbScKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJENvbmZpZy0+e0dlbmVyYWxJbmZvfXtDbGFzc30gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnQ2xhc3NTdWInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJENvbmZpZ0l0ZW0tPntDbGFzc30sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGVDb2xvckNsYXNzfSA9ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH07CiAgICAgICAgJENvbmZpZ0l0ZW0tPntJbmNpU3RhdGVDb2xvckNsYXNzfSA9ICRJbmNpU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJJbmNpU3RhdGVUeXBlfSB9OwoKICAgICAgICBJTkZPOgogICAgICAgIGZvciBteSAkSW5mbyAocXcvRGVwbG95bWVudFN0YXRlIEluY2lkZW50U3RhdGUgQ3JlYXRlZFRpbWUgTGFzdENoYW5nZWRUaW1lLykgewogICAgICAgICAgICBuZXh0IElORk8gaWYgISRDb25maWctPntHZW5lcmFsSW5mb317JEluZm99OwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICRJbmZvLAogICAgICAgICAgICAgICAgRGF0YSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJVB1YmxpY0FjdGlvbnMgPSAleyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpY0Zyb250ZW5kOjpNb2R1bGUnKSAvLyB7fSB9OwogICAgaWYgKCAkUHVibGljQWN0aW9uc3tQdWJsaWNJVFNNQ29uZmlnSXRlbX0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TGluaycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGlmIGEgdmVyc2lvbiBhbHJlYWR5IGV4aXN0cyAoVE9ETzogV2hlbiBkb2VzIGl0IG5vdD8pCiAgICBpZiAoICRDb25maWdJdGVtLT57TmFtZX0gKSB7CiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVtLT57RGVmaW5pdGlvbklEfSwKICAgICAgICApOwoKICAgICAgICBteSBAUGFnZXM7CiAgICAgICAgbXkgJFBhZ2VTaG93bjsKICAgICAgICBteSAkUGFnZVJlcXVlc3RlZCA9ICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdQYWdlJyApOwogICAgICAgIFBBR0U6CiAgICAgICAgZm9yIG15ICRQYWdlICggJERlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtQYWdlc30tPkAqICkgewogICAgICAgICAgICBuZXh0IFBBR0UgdW5sZXNzICRQYWdlLT57SW50ZXJmYWNlc307CiAgICAgICAgICAgIG5leHQgUEFHRSB1bmxlc3MgYW55IHsgJF8gZXEgJ1B1YmxpYycgfSAkUGFnZS0+e0ludGVyZmFjZXN9LT5AKjsKCiAgICAgICAgICAgIHB1c2ggQFBhZ2VzLCAkUGFnZTsKCiAgICAgICAgICAgIGlmICggJFBhZ2VSZXF1ZXN0ZWQgJiYgJFBhZ2UtPntOYW1lfSBlcSAkUGFnZVJlcXVlc3RlZCApIHsKICAgICAgICAgICAgICAgICRQYWdlU2hvd24gPSAkUGFnZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFBhZ2VTaG93biAvLz0gQFBhZ2VzID8gJFBhZ2VzWzBdIDogdW5kZWY7CgogICAgICAgIGlmICggc2NhbGFyIEBQYWdlcyA9PSAxICkgewogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1BhZ2VOYW1lJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIFBhZ2VOYW1lID0+ICRQYWdlc1swXXtOYW1lfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBmb3IgbXkgJFBhZ2UgKEBQYWdlcykgewogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUGFnZUxpbmsnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBQYWdlTmFtZSAgICAgPT4gJFBhZ2UtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbklEICAgID0+ICRWZXJzaW9uSUQsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkICAgICA9PiAkUGFnZS0+e05hbWV9IGVxICRQYWdlU2hvd24tPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKEBQYWdlcykgewogICAgICAgICAgICAkQ29uZmlnSXRlbS0+e0R5bmFtaWNGaWVsZEhUTUx9ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpEeW5hbWljRmllbGQnKS0+UGFnZVJlbmRlcigKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgICAgICAgICAgUGFnZVJlZiAgICA9PiAkUGFnZVNob3duLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBwcmVwYXJlIHZlcnNpb24gbGlzdAogICAgICAgIGlmICggJENvbmZpZy0+e1ZlcnNpb25zRW5hYmxlZH0gJiYgJENvbmZpZy0+e1ZlcnNpb25zU2VsZWN0YWJsZX0gKSB7CgogICAgICAgICAgICAjIGdldCB2ZXJzaW9uIGxpc3QKICAgICAgICAgICAgbXkgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25ab29tTGlzdCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgJEJhc2VMaW5rID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgICAgICAgICAgVGVtcGxhdGUgPT4gJ1slIEVudigiQmFzZWxpbmsiKSAlXUFjdGlvbj1QdWJsaWNJVFNNQ29uZmlnSXRlbVpvb207JwogICAgICAgICAgICAgICAgICAgIC4gIkNvbmZpZ0l0ZW1JRD0kQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH07UGFnZT1bJSBEYXRhLk5hbWUgfCB1cmkgJV07IiwKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhZ2VTaG93biA/ICRQYWdlU2hvd24tPntOYW1lfSA6ICcnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBWZXJzaW9uU2VsZWN0aW9uRGF0YSA9IG1hcCB7CiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gKCAkQmFzZUxpbmsgLiAiVmVyc2lvbklEPSRfLT57VmVyc2lvbklEfSIgKSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAoCiAgICAgICAgICAgICAgICAgICAgICAgICIkXy0+e05hbWV9ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gKCAkXy0+e1ZlcnNpb25TdHJpbmd9IHx8ICRfLT57VmVyc2lvbklEfSApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICIgKCRfLT57Q3JlYXRlVGltZX0pIgogICAgICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gJFZlcnNpb25MaXN0LT5AKjsKCiAgICAgICAgICAgIG15ICRWZXJzaW9uU2VsZWN0aW9uID0gJExheW91dE9iamVjdC0+QnVpbGRTZWxlY3Rpb24oCiAgICAgICAgICAgICAgICBEYXRhICAgICAgICAgPT4gXEBWZXJzaW9uU2VsZWN0aW9uRGF0YSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnVmVyc2lvblNlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBDbGFzcyAgICAgICAgPT4gJ01vZGVybml6ZSBBbGlnbkRyb3Bkb3duUmlnaHQnLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRWZXJzaW9uSUQgPyAkQmFzZUxpbmsgLiAiVmVyc2lvbklEPSRWZXJzaW9uSUQiIDogdW5kZWYsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnVmVyc2lvbnMnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVmVyc2lvblNlbGVjdGlvbiA9PiAkVmVyc2lvblNlbGVjdGlvbiwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgQEF0dGFjaG1lbnRzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICk7CgogICAgaWYgKEBBdHRhY2htZW50cykgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnQXR0YWNobWVudHMnLAogICAgICAgICk7CgogICAgICAgIEFUVEFDSE1FTlQ6CiAgICAgICAgZm9yIG15ICRBdHRhY2htZW50IChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgICAgICMgZ2V0IHRoZSBtZXRhZGF0YSBvZiB0aGUgY3VycmVudCBhdHRhY2htZW50CiAgICAgICAgICAgIG15ICRBdHRhY2htZW50RGF0YSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRBdHRhY2htZW50LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdBdHRhY2htZW50Um93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgICAgIEZpbGVuYW1lICAgICA9PiAkQXR0YWNobWVudERhdGEtPntGaWxlbmFtZX0sCiAgICAgICAgICAgICAgICAgICAgRmlsZXNpemUgICAgID0+ICRBdHRhY2htZW50RGF0YS0+e0ZpbGVzaXplfSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgaGFuZGxlIERvd25sb2FkQXR0YWNobWVudAogICAgaWYgKCAkU2VsZi0+e1N1YmFjdGlvbn0gZXEgJ0Rvd25sb2FkQXR0YWNobWVudCcgKSB7CgogICAgICAgICMgZ2V0IGRhdGEgZm9yIGF0dGFjaG1lbnQKICAgICAgICBteSAkRmlsZW5hbWUgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsZW5hbWUnICk7CiAgICAgICAgbXkgJEF0dGFjaG1lbnREYXRhID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BdHRhY2htZW50R2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgRmlsZW5hbWUgICAgID0+ICRGaWxlbmFtZSwKICAgICAgICApOwoKICAgICAgICAjIHJldHVybiBlcnJvciBpZiBmaWxlIGRvZXMgbm90IGV4aXN0CiAgICAgICAgaWYgKCAhJEF0dGFjaG1lbnREYXRhICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBzdWNoIGF0dGFjaG1lbnQgKCRGaWxlbmFtZSkhIiwKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5FcnJvclNjcmVlbigpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuICRMYXlvdXRPYmplY3QtPkF0dGFjaG1lbnQoCiAgICAgICAgICAgICV7JEF0dGFjaG1lbnREYXRhfSwKICAgICAgICAgICAgVHlwZSA9PiAnYXR0YWNobWVudCcsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIHN0YXJ0IHRlbXBsYXRlIG91dHB1dAogICAgcmV0dXJuIGpvaW4gJycsCiAgICAgICAgJE91dHB1dCwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljSVRTTUNvbmZpZ0l0ZW1ab29tJywKICAgICAgICAgICAgRGF0YSAgICAgICAgID0+IHsKICAgICAgICAgICAgICAgICRDb25maWdJdGVtLT4lKiwKICAgICAgICAgICAgICAgIEN1ckluY2lTaWduYWwgPT4gJEluY2lTaWduYWxzeyAkQ29uZmlnSXRlbS0+e0N1ckluY2lTdGF0ZVR5cGV9IH0sCiAgICAgICAgICAgICAgICBDdXJEZXBsU2lnbmFsID0+ICREZXBsU2lnbmFsc3sgJENvbmZpZ0l0ZW0tPntDdXJEZXBsU3RhdGV9IH0sCiAgICAgICAgICAgICAgICBTdHlsZUNsYXNzZXMgID0+ICRTdHlsZUNsYXNzZXMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKSwKICAgICAgICAkTGF5b3V0T2JqZWN0LT5QdWJsaWNGb290ZXI7Cn0KCjE7Cg==</File>
        <File Location="Kernel/Output/HTML/Dashboard/ITSMConfigItemGeneric.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpEYXNoYm9hcmQ6OklUU01Db25maWdJdGVtR2VuZXJpYzsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gXCVQYXJhbTsKICAgIGJsZXNzKCAkU2VsZiwgJFR5cGUgKTsKCiAgICAjIGdldCBuZWVkZWQgcGFyYW1ldGVycwogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZyBOYW1lIFVzZXJJRCkpIHsKICAgICAgICBkaWUgIkdvdCBubyAkTmVlZGVkISIgaWYgKCAhJFNlbGYtPnskTmVlZGVkfSApOwogICAgfQoKICAgICMgZ2V0IHBhcmFtIG9iamVjdAogICAgbXkgJFBhcmFtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpOwoKICAgIG15ICRSZW1vdmVGaWx0ZXJzID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1JlbW92ZUZpbHRlcnMnICkgfHwgJFBhcmFte1JlbW92ZUZpbHRlcnN9IHx8IDA7CgogICAgIyBnZXQgc29ydGluZyBwYXJhbXMKICAgIGZvciBteSAkSXRlbSAocXcoU29ydEJ5IE9yZGVyQnkpKSB7CiAgICAgICAgJFNlbGYtPnskSXRlbX0gPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAkSXRlbSApIHx8ICRQYXJhbXskSXRlbX07CiAgICB9CgogICAgIyBHZXQgYWRkIGZpbHRlcnMgcGFyYW0uCiAgICAkU2VsZi0+e0FkZEZpbHRlcnN9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0FkZEZpbHRlcnMnICkgfHwgJFBhcmFte0FkZEZpbHRlcnN9IHx8IDA7CiAgICAkU2VsZi0+e1RhYkFjdGlvbn0gID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1RhYkFjdGlvbicgKSAgfHwgJFBhcmFte1RhYkFjdGlvbn0gIHx8IDA7CgogICAgIyBHZXQgcHJldmlvdXMgc29ydGluZyBjb2x1bW4uCiAgICAkU2VsZi0+e1NvcnRpbmdDb2x1bW59ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ1NvcnRpbmdDb2x1bW4nICkgfHwgJFBhcmFte1NvcnRpbmdDb2x1bW59OwoKICAgICMgc2V0IGZpbHRlciBzZXR0aW5ncwogICAgZm9yIG15ICRJdGVtIChxdyhDb2x1bW5GaWx0ZXIgR2V0Q29sdW1uRmlsdGVyIEdldENvbHVtbkZpbHRlclNlbGVjdCkpIHsKICAgICAgICAkU2VsZi0+eyRJdGVtfSA9ICRQYXJhbXskSXRlbX07CiAgICB9CgogICAgIyBzYXZlIGNvbHVtbiBmaWx0ZXJzCiAgICAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSAgICAgICAgID0gJ1VzZXJEYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5GaWx0ZXJzJyAuICRTZWxmLT57TmFtZX07CiAgICAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9ID0gJ1VzZXJEYXNoYm9hcmRJVFNNQ29uZmlnSXRlbUdlbmVyaWNDb2x1bW5GaWx0ZXJzUmVhbEtleXMnIC4gJFNlbGYtPntOYW1lfTsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJEpTT05PYmplY3QgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKICAgIG15ICRVc2VyT2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpOwoKICAgIGlmICgkUmVtb3ZlRmlsdGVycykgewogICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgS2V5ICAgID0+ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9LAogICAgICAgICAgICBWYWx1ZSAgPT4gJycsCiAgICAgICAgKTsKICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9LAogICAgICAgICAgICBWYWx1ZSAgPT4gJycsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGp1c3QgaW4gY2FzZSBuZXcgZmlsdGVyIHZhbHVlcyBhcnJpdmUKICAgIGVsc2lmICgKICAgICAgICBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJ9ICkKICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9ICkKICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntDb2x1bW5GaWx0ZXJ9ICkKICAgICAgICApCiAgICB7CgogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgdXNlciBoYXMgZmlsdGVyIHByZWZlcmVuY2VzIGZvciB0aGlzIHdpZGdldAogICAgICAgICAgICBteSAlUHJlZmVyZW5jZXMgPSAkVXNlck9iamVjdC0+R2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAkQ29sdW1uUHJlZlZhbHVlczsKICAgICAgICAgICAgaWYgKCAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgICAgICAkQ29sdW1uUHJlZlZhbHVlcyA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9IH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBQUkVGVkFMVUVTOgogICAgICAgICAgICBmb3IgbXkgJENvbHVtbiAoIHNvcnQga2V5cyAleyAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gfSApIHsKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9LT57JENvbHVtbn0gZXEgJ0RlbGV0ZUZpbHRlcicgKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5QcmVmVmFsdWVzLT57JENvbHVtbn07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBQUkVGVkFMVUVTOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENvbHVtblByZWZWYWx1ZXMtPnskQ29sdW1ufSA9ICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyRDb2x1bW59OwogICAgICAgICAgICB9CgogICAgICAgICAgICAkVXNlck9iamVjdC0+U2V0UHJlZmVyZW5jZXMoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFNlbGYtPntVc2VySUR9LAogICAgICAgICAgICAgICAgS2V5ICAgID0+ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gJENvbHVtblByZWZWYWx1ZXMgKSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2F2ZSByZWFsIGtleSdzIG5hbWUKICAgICAgICAgICAgbXkgJENvbHVtblByZWZSZWFsS2V5c1ZhbHVlczsKICAgICAgICAgICAgaWYgKCAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30gfSApIHsKICAgICAgICAgICAgICAgICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9IH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIFJFQUxLRVlWQUxVRVM6CiAgICAgICAgICAgIGZvciBteSAkQ29sdW1uICggc29ydCBrZXlzICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBSRUFMS0VZVkFMVUVTIGlmICEkQ29sdW1uOwoKICAgICAgICAgICAgICAgIG15ICREZWxldGVGaWx0ZXIgPSAwOwogICAgICAgICAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAnRGVsZXRlRmlsdGVyJyB9IEB7ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICREZWxldGVGaWx0ZXIgPSAxOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggSXNIYXNoUmVmV2l0aERhdGEoICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59ICkgKSB7CgogICAgICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAgICAgYW55IHsgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn0tPnskX30gZXEgJ0RlbGV0ZUZpbHRlcicgfQogICAgICAgICAgICAgICAgICAgICAgICBrZXlzICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IH0KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJERlbGV0ZUZpbHRlciA9IDE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkRGVsZXRlRmlsdGVyKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5QcmVmUmVhbEtleXNWYWx1ZXMtPnskQ29sdW1ufTsKICAgICAgICAgICAgICAgICAgICBkZWxldGUgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn07CiAgICAgICAgICAgICAgICAgICAgbmV4dCBSRUFMS0VZVkFMVUVTOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJENvbHVtblByZWZSZWFsS2V5c1ZhbHVlcy0+eyRDb2x1bW59ID0gJFNlbGYtPntDb2x1bW5GaWx0ZXJ9LT57JENvbHVtbn07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFVzZXJPYmplY3QtPlNldFByZWZlcmVuY2VzKAogICAgICAgICAgICAgICAgVXNlcklEID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICAgICAgICAgIEtleSAgICA9PiAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzUmVhbEtleXN9LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gJENvbHVtblByZWZSZWFsS2V5c1ZhbHVlcyApLAogICAgICAgICAgICApOwoKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiB0aGUgdXNlciBoYXMgZmlsdGVyIHByZWZlcmVuY2VzIGZvciB0aGlzIHdpZGdldAogICAgbXkgJVByZWZlcmVuY2VzID0gJFVzZXJPYmplY3QtPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGNvbHVtbiBuYW1lcyBmcm9tIFByZWZlcmVuY2VzCiAgICBteSAkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzOwogICAgaWYgKCAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnN9IH0gKSB7CiAgICAgICAgJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVycyA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJFByZWZlcmVuY2VzeyAkU2VsZi0+e1ByZWZLZXlDb2x1bW5GaWx0ZXJzfSB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnMpIHsKICAgICAgICAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gPSAkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzOwogICAgICAgIG15IEBDb2x1bW5GaWx0ZXJzID0ga2V5cyAleyRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnN9OwogICAgICAgIGZvciBteSAkRmllbGQgKEBDb2x1bW5GaWx0ZXJzKSB7CiAgICAgICAgICAgICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfS0+eyAkRmllbGQgLiAkU2VsZi0+e05hbWV9IH0gPSAkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzLT57JEZpZWxkfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY29sdW1uIHJlYWwgbmFtZXMgZnJvbSBQcmVmZXJlbmNlcwogICAgbXkgJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzOwogICAgaWYgKCAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbkZpbHRlcnNSZWFsS2V5c30gfSApIHsKICAgICAgICAkUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzUmVhbEtleXMgPSAkSlNPTk9iamVjdC0+RGVjb2RlKAogICAgICAgICAgICBEYXRhID0+ICRQcmVmZXJlbmNlc3sgJFNlbGYtPntQcmVmS2V5Q29sdW1uRmlsdGVyc1JlYWxLZXlzfSB9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCRQcmVmZXJlbmNlc0NvbHVtbkZpbHRlcnNSZWFsS2V5cykgewogICAgICAgIG15IEBDb2x1bW5GaWx0ZXJzUmVhbCA9IGtleXMgJXskUHJlZmVyZW5jZXNDb2x1bW5GaWx0ZXJzUmVhbEtleXN9OwogICAgICAgIGZvciBteSAkRmllbGQgKEBDb2x1bW5GaWx0ZXJzUmVhbCkgewogICAgICAgICAgICAkU2VsZi0+e0NvbHVtbkZpbHRlcn0tPnskRmllbGR9ID0gJFByZWZlcmVuY2VzQ29sdW1uRmlsdGVyc1JlYWxLZXlzLT57JEZpZWxkfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY3VycmVudCBmaWx0ZXIKICAgIG15ICROYW1lICAgICAgICAgICAgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnTmFtZScgKSB8fCAnJzsKICAgIG15ICRQcmVmZXJlbmNlc0tleSAgICAgICAgICAgPSAnVXNlckRhc2hib2FyZElUU01Db25maWdJdGVtR2VuZXJpY0ZpbHRlcicgLiAkU2VsZi0+e05hbWV9OwogICAgbXkgJEFkZGl0aW9uYWxQcmVmZXJlbmNlc0tleSA9ICdVc2VyRGFzaGJvYXJkSVRTTUNvbmZpZ0l0ZW1HZW5lcmljQWRkaXRpb25hbEZpbHRlcicgLiAkU2VsZi0+e05hbWV9OwogICAgaWYgKCAkU2VsZi0+e05hbWV9IGVxICROYW1lICkgewogICAgICAgICRTZWxmLT57RmlsdGVyfSAgICAgICAgICAgPSAkUGFyYW1PYmplY3QtPkdldFBhcmFtKCBQYXJhbSA9PiAnRmlsdGVyJyApICAgICAgICAgICB8fCAnJzsKICAgICAgICAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ID0gJFBhcmFtT2JqZWN0LT5HZXRQYXJhbSggUGFyYW0gPT4gJ0FkZGl0aW9uYWxGaWx0ZXInICkgfHwgJyc7CiAgICB9CgogICAgIyBSZW1lbWJlciB0aGUgc2VsZWN0ZWQgZmlsdGVyIGluIHRoZSBzZXNzaW9uLgogICAgaWYgKCAkU2VsZi0+e0ZpbHRlcn0gKSB7CgogICAgICAgICMgdXBkYXRlIHNlc3Npb24KICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6QXV0aFNlc3Npb24nKS0+VXBkYXRlU2Vzc2lvbklEKAogICAgICAgICAgICBTZXNzaW9uSUQgPT4gJFNlbGYtPntTZXNzaW9uSUR9LAogICAgICAgICAgICBLZXkgICAgICAgPT4gJFByZWZlcmVuY2VzS2V5LAogICAgICAgICAgICBWYWx1ZSAgICAgPT4gJFNlbGYtPntGaWx0ZXJ9LAogICAgICAgICk7CgogICAgICAgICMgdXBkYXRlIHByZWZlcmVuY2VzCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJFByZWZlcmVuY2VzS2V5LAogICAgICAgICAgICAgICAgVmFsdWUgID0+ICRTZWxmLT57RmlsdGVyfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkU2VsZi0+e0ZpbHRlcn0gPSAkU2VsZi0+eyRQcmVmZXJlbmNlc0tleX0gfHwgJFNlbGYtPntDb25maWd9LT57RmlsdGVyfSB8fCAnQXNzaWduZWRUb0VudGl0eSc7CiAgICB9CgogICAgIyBSZW1lbWJlciB0aGUgc2VsZWN0ZWQgZmlsdGVyIGluIHRoZSBzZXNzaW9uLgogICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICkgewoKICAgICAgICAjIHVwZGF0ZSBzZXNzaW9uCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkF1dGhTZXNzaW9uJyktPlVwZGF0ZVNlc3Npb25JRCgKICAgICAgICAgICAgU2Vzc2lvbklEID0+ICRTZWxmLT57U2Vzc2lvbklEfSwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICRBZGRpdGlvbmFsUHJlZmVyZW5jZXNLZXksCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9LAogICAgICAgICk7CgogICAgICAgICMgdXBkYXRlIHByZWZlcmVuY2VzCiAgICAgICAgaWYgKCAhJENvbmZpZ09iamVjdC0+R2V0KCdEZW1vU3lzdGVtJykgKSB7CiAgICAgICAgICAgICRVc2VyT2JqZWN0LT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJEFkZGl0aW9uYWxQcmVmZXJlbmNlc0tleSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gPSAkU2VsZi0+eyRBZGRpdGlvbmFsUHJlZmVyZW5jZXNLZXl9IHx8ICRTZWxmLT57Q29uZmlnfS0+e0FkZGl0aW9uYWxGaWx0ZXJ9IHx8ICdBc3NpZ25lZFRvRW50aXR5JzsKICAgIH0KCiAgICAkU2VsZi0+e1ByZWZLZXlTaG93bn0gICA9ICdVc2VyRGFzaGJvYXJkUHJlZicgLiAkU2VsZi0+e05hbWV9IC4gJy1TaG93bic7CiAgICAkU2VsZi0+e1ByZWZLZXlDb2x1bW5zfSA9ICdVc2VyRGFzaGJvYXJkUHJlZicgLiAkU2VsZi0+e05hbWV9IC4gJy1Db2x1bW5zJzsKICAgICRTZWxmLT57UGFnZVNob3dufSAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57ICRTZWxmLT57UHJlZktleVNob3dufSB9CiAgICAgICAgfHwgJFNlbGYtPntDb25maWd9LT57TGltaXR9OwogICAgJFNlbGYtPntTdGFydEhpdH0gPSBpbnQoICRQYXJhbU9iamVjdC0+R2V0UGFyYW0oIFBhcmFtID0+ICdTdGFydEhpdCcgKSB8fCAxICk7CgogICAgIyBoYXNoIHdpdGggYWxsIHZhbGlkIHNvcnRhYmxlIGNvbHVtbnMgKHRha2VuIGZyb20gSVRTTUNvbmZpZ0l0ZW1TZWFyY2gpCiAgICAjIFNvcnRCeSAgPT4gJ0FnZScsICAgIyBDcmVhdGVkfE51bWJlcnxDaGFuZ2VkfE5hbWV8RGVwbFN0YXRlfEN1ckRlcGxTdGF0ZQogICAgIyB8SW5jaVN0YXRlfEN1ckluY2lTdGF0ZQogICAgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30gPSB7CiAgICAgICAgJ0FnZScgICAgICAgICAgPT4gMSwKICAgICAgICAnTnVtYmVyJyAgICAgICA9PiAxLAogICAgICAgICdOYW1lJyAgICAgICAgID0+IDEsCiAgICAgICAgJ0NyZWF0ZWQnICAgICAgPT4gMSwKICAgICAgICAnTGFzdENoYW5nZWQnICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgICMgZGVmaW5lIGZpbHRlcmFibGUgY29sdW1ucwogICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9ID0gewogICAgICAgICdDbGFzcycgICAgICAgID0+IDEsCiAgICAgICAgJ0RlcGxTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VyRGVwbFN0YXRlJyA9PiAxLAogICAgICAgICdJbmNpU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckluY2lTdGF0ZScgPT4gMSwKICAgIH07CgogICAgaWYgKCAkU2VsZi0+e0NvbmZpZ317Q29uZmlnSXRlbUtleX0gKSB7CiAgICAgICAgJFNlbGYtPntDb25maWdJdGVtS2V5fSA9ICRTZWxmLT57Q29uZmlnfXtDb25maWdJdGVtS2V5fTsKICAgIH0KCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBQcmVmZXJlbmNlcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY29uZmlndXJlIGNvbHVtbnMKICAgIG15IEBDb2x1bW5zRW5hYmxlZDsKICAgIG15IEBDb2x1bW5zQXZhaWxhYmxlOwogICAgbXkgQENvbHVtbnNBdmFpbGFibGVOb3RFbmFibGVkOwoKICAgICMgY2hlY2sgZm9yIGRlZmF1bHQgc2V0dGluZ3MKICAgIGlmICgKICAgICAgICAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30KICAgICAgICAmJiBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9ICkKICAgICAgICApCiAgICB7CiAgICAgICAgQENvbHVtbnNBdmFpbGFibGUgPSBncmVwIHsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9LT57JF99IH0KICAgICAgICAgICAga2V5cyAleyAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfTsKICAgICAgICBAQ29sdW1uc0VuYWJsZWQgPSBncmVwIHsgJFNlbGYtPntDb25maWd9LT57RGVmYXVsdENvbHVtbnN9LT57JF99IGVxICcyJyB9CiAgICAgICAgICAgIHNvcnQgeyAkU2VsZi0+X0RlZmF1bHRDb2x1bW5Tb3J0KCkgfSBrZXlzICV7ICRTZWxmLT57Q29uZmlnfS0+e0RlZmF1bHRDb2x1bW5zfSB9OwogICAgfQoKICAgICMgY2hlY2sgaWYgdGhlIHVzZXIgaGFzIGZpbHRlciBwcmVmZXJlbmNlcyBmb3IgdGhpcyB3aWRnZXQKICAgIG15ICVQcmVmZXJlbmNlcyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyktPkdldFByZWZlcmVuY2VzKAogICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IEpTT04gb2JqZWN0CiAgICBteSAkSlNPTk9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpKU09OJyk7CgogICAgIyBpZiBwcmVmZXJlbmNlIHNldHRpbmdzIGFyZSBhdmFpbGFibGUsIHRha2UgdGhlbQogICAgaWYgKCAkUHJlZmVyZW5jZXN7ICRTZWxmLT57UHJlZktleUNvbHVtbnN9IH0gKSB7CgogICAgICAgIG15ICRDb2x1bW5zRW5hYmxlZCA9ICRKU09OT2JqZWN0LT5EZWNvZGUoCiAgICAgICAgICAgIERhdGEgPT4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpLT57ICRTZWxmLT57UHJlZktleUNvbHVtbnN9IH0sCiAgICAgICAgKTsKCiAgICAgICAgQENvbHVtbnNFbmFibGVkID0gZ3JlcCB7ICRDb2x1bW5zRW5hYmxlZC0+e0NvbHVtbnN9LT57JF99ID09IDEgfQogICAgICAgICAgICBrZXlzICV7ICRDb2x1bW5zRW5hYmxlZC0+e0NvbHVtbnN9IH07CgogICAgICAgIGlmICggJENvbHVtbnNFbmFibGVkLT57T3JkZXJ9ICYmIEB7ICRDb2x1bW5zRW5hYmxlZC0+e09yZGVyfSB9ICkgewogICAgICAgICAgICBAQ29sdW1uc0VuYWJsZWQgPSBAeyAkQ29sdW1uc0VuYWJsZWQtPntPcmRlcn0gfTsKICAgICAgICB9CgogICAgICAgICMgcmVtb3ZlIGR1cGxpY2F0ZSBjb2x1bW5zCiAgICAgICAgbXkgJVVuaXF1ZUNvbHVtbnM7CiAgICAgICAgbXkgQENvbHVtbnNFbmFibGVkQXV4OwoKICAgICAgICBmb3IgbXkgJENvbHVtbiAoQENvbHVtbnNFbmFibGVkKSB7CiAgICAgICAgICAgIGlmICggISRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0VuYWJsZWRBdXgsICRDb2x1bW47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFVuaXF1ZUNvbHVtbnN7JENvbHVtbn0gPSAxOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgZmlsdGVyZWQgY29sdW1uIGxpc3QKICAgICAgICBAQ29sdW1uc0VuYWJsZWQgPSBAQ29sdW1uc0VuYWJsZWRBdXg7CiAgICB9CgogICAgbXkgJUNvbHVtbnM7CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKCBzb3J0IHsgJGEgY21wICRiIH0gQENvbHVtbnNBdmFpbGFibGUgKSB7CiAgICAgICAgJENvbHVtbnN7Q29sdW1uc30tPnskQ29sdW1uTmFtZX0gPSAoIGdyZXAgeyAkQ29sdW1uTmFtZSBlcSAkXyB9IEBDb2x1bW5zRW5hYmxlZCApID8gMSA6IDA7CiAgICAgICAgaWYgKCBub25lIHsgJF8gZXEgJENvbHVtbk5hbWUgfSBAQ29sdW1uc0VuYWJsZWQgKSB7CiAgICAgICAgICAgIHB1c2ggQENvbHVtbnNBdmFpbGFibGVOb3RFbmFibGVkLCAkQ29sdW1uTmFtZTsKICAgICAgICB9CiAgICB9CgogICAgbXkgQFBhcmFtcyA9ICgKICAgICAgICB7CiAgICAgICAgICAgIERlc2MgID0+IFRyYW5zbGF0YWJsZSgnU2hvd24gY29uZmlnIGl0ZW1zJyksCiAgICAgICAgICAgIE5hbWUgID0+ICRTZWxmLT57UHJlZktleVNob3dufSwKICAgICAgICAgICAgQmxvY2sgPT4gJ09wdGlvbicsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIDUgID0+ICcgNScsCiAgICAgICAgICAgICAgICAxMCA9PiAnMTAnLAogICAgICAgICAgICAgICAgMTUgPT4gJzE1JywKICAgICAgICAgICAgICAgIDIwID0+ICcyMCcsCiAgICAgICAgICAgICAgICAyNSA9PiAnMjUnLAogICAgICAgICAgICAgICAgNTAgPT4gJzUwJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFNlbGYtPntQYWdlU2hvd259LAogICAgICAgICAgICBUcmFuc2xhdGlvbiA9PiAwLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBEZXNjICAgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnU2hvd24gQ29sdW1ucycpLAogICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRTZWxmLT57UHJlZktleUNvbHVtbnN9LAogICAgICAgICAgICBCbG9jayAgICAgICAgICAgID0+ICdBbGxvY2F0aW9uTGlzdCcsCiAgICAgICAgICAgIENvbHVtbnMgICAgICAgICAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcJUNvbHVtbnMgKSwKICAgICAgICAgICAgQ29sdW1uc0VuYWJsZWQgICA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+IFxAQ29sdW1uc0VuYWJsZWQgKSwKICAgICAgICAgICAgQ29sdW1uc0F2YWlsYWJsZSA9PiAkSlNPTk9iamVjdC0+RW5jb2RlKCBEYXRhID0+IFxAQ29sdW1uc0F2YWlsYWJsZU5vdEVuYWJsZWQgKSwKICAgICAgICAgICAgVHJhbnNsYXRpb24gICAgICA9PiAxLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiBAUGFyYW1zOwp9CgpzdWIgQ29uZmlnIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBpZiBmcm9udGVuZCBtb2R1bGUgb2YgbGluayBpcyB1c2VkCiAgICBpZiAoICRTZWxmLT57Q29uZmlnfS0+e0xpbmt9ICYmICRTZWxmLT57Q29uZmlnfS0+e0xpbmt9ID1+IC9BY3Rpb249KC4rPykoWyY7XS4rP3wpJC8gKSB7CiAgICAgICAgbXkgJEFjdGlvbiA9ICQxOwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRnJvbnRlbmQ6Ok1vZHVsZScpLT57JEFjdGlvbn0gKSB7CiAgICAgICAgICAgICRTZWxmLT57Q29uZmlnfS0+e0xpbmt9ID0gJyc7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCgogICAgICAgICMgRG9uJ3QgY2FjaGUgdGhpcyBnbG9iYWxseSBhcyBpdCBjb250YWlucyBKUyB0aGF0IGlzIG5vdCBpbnNpZGUgb2YgdGhlIEhUTUwuCiAgICAgICAgQ2FjaGVUVEwgPT4gdW5kZWYsCiAgICAgICAgQ2FjaGVLZXkgPT4gdW5kZWYsCiAgICApOwp9CgpzdWIgRmlsdGVyQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0ZpbHRlckNvbHVtbn07CgogICAgbXkgJEhlYWRlckNvbHVtbiA9ICRQYXJhbXtGaWx0ZXJDb2x1bW59OwogICAgbXkgQE9yaWdpbmFsVmlld2FibGVDb25maWdJdGVtczsKCiAgICBpZiAoCiAgICAgICAgIyBUT0RPIGNoZWNrCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdPbmx5VmFsdWVzT25Db25maWdJdGVtJykKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJVNlYXJjaFBhcmFtcyAgICAgICAgICAgID0gJFNlbGYtPl9TZWFyY2hQYXJhbXNHZXQoJVBhcmFtKTsKICAgICAgICBteSAlQ29uZmlnSXRlbVNlYXJjaCAgICAgICAgPSAleyAkU2VhcmNoUGFyYW1ze0NvbmZpZ0l0ZW1TZWFyY2h9IH07CiAgICAgICAgbXkgJUNvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5ID0gJXsgJFNlYXJjaFBhcmFtc3tDb25maWdJdGVtU2VhcmNoU3VtbWFyeX0gfTsKCiAgICAgICAgIyBBZGQgdGhlIGFkZGl0aW9uYWwgZmlsdGVyIHRvIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggcGFyYW0uCiAgICAgICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICkgewogICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaCA9ICgKICAgICAgICAgICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICAgICAgICAgJXsgJENvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5eyAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9IH0gfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkSGVhZGVyQ29sdW1uID1+IG0vXkR5bmFtaWNGaWVsZF8vICYmICFkZWZpbmVkICRTZWxmLT57RHluYW1pY0ZpZWxkfSApIHsKCiAgICAgICAgIyBnZXQgdGhlIGR5bmFtaWMgZmllbGRzIGZvciB0aGlzIHNjcmVlbgogICAgICAgICRTZWxmLT57RHluYW1pY0ZpZWxkfSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdEdldCgKICAgICAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbHVtbiB2YWx1ZXMgZm9yIHRvIGJ1aWxkIHRoZSBmaWx0ZXJzIGxhdGVyCiAgICBteSAkQ29sdW1uVmFsdWVzID0gJFNlbGYtPl9HZXRDb2x1bW5WYWx1ZXMoCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+IFxAT3JpZ2luYWxWaWV3YWJsZUNvbmZpZ0l0ZW1zLAogICAgICAgIEhlYWRlckNvbHVtbiAgICAgICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgKTsKCiAgICAjIG1ha2Ugc3VyZSB0aGF0IGV2ZW4gYSB2YWx1ZSBvZiAwIGlzIHBhc3NlZCBhcyBhIFNlbGVjdGVkIHZhbHVlLCBlLmcuIFVuY2hlY2tlZCB2YWx1ZSBvZiBhCiAgICAjIGNoZWNrLWJveCBkeW5hbWljIGZpZWxkLgogICAgbXkgJFNlbGVjdGVkVmFsdWUgPSBkZWZpbmVkICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyfS0+eyAkSGVhZGVyQ29sdW1uIC4gJFNlbGYtPntOYW1lfSB9CiAgICAgICAgPyAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0tPnsgJEhlYWRlckNvbHVtbiAuICRTZWxmLT57TmFtZX0gfQogICAgICAgIDogJyc7CgogICAgbXkgJExhYmVsQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJExhYmVsQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtcyApIHsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAkTGFiZWxDb2x1bW4gPX4gc3tcQSBEeW5hbWljRmllbGRfIH17fXhtczsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRMYWJlbENvbHVtbjsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpICkgewogICAgICAgICAgICAkTGFiZWxDb2x1bW4gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgbXkgJENvbHVtbkZpbHRlckpTT04gPSAkU2VsZi0+X0NvbHVtbkZpbHRlckpTT04oCiAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsQ29sdW1uLAogICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LAogICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFNlbGVjdGVkVmFsdWUsCiAgICAgICAgRGFzaGJvYXJkTmFtZSA9PiAkU2VsZi0+e05hbWV9LAogICAgKTsKCiAgICByZXR1cm4gJENvbHVtbkZpbHRlckpTT047Cgp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJVNlYXJjaFBhcmFtcyAgICAgICAgICAgID0gJFNlbGYtPl9TZWFyY2hQYXJhbXNHZXQoJVBhcmFtKTsKICAgIG15IEBDb2x1bW5zICAgICAgICAgICAgICAgICA9IEB7ICRTZWFyY2hQYXJhbXN7Q29sdW1uc30gfTsKICAgIG15ICVDb25maWdJdGVtU2VhcmNoICAgICAgICA9ICV7ICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbVNlYXJjaH0gfTsKICAgIG15ICVDb25maWdJdGVtU2VhcmNoU3VtbWFyeSA9ICV7ICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbVNlYXJjaFN1bW1hcnl9IH07CgogICAgIyBkZWZpbmUgaW5jaWRlbnQgc2lnbmFscwogICAgbXkgJUluY2lTaWduYWxzID0gKAogICAgICAgIFRyYW5zbGF0YWJsZSgnb3BlcmF0aW9uYWwnKSA9PiAnZ3JlZW5sZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnd2FybmluZycpICAgICA9PiAneWVsbG93bGVkJywKICAgICAgICBUcmFuc2xhdGFibGUoJ2luY2lkZW50JykgICAgPT4gJ3JlZGxlZCcsCiAgICApOwoKICAgICMgc3RvcmUgZGVwbG95bWVudCBzaWduYWxzCiAgICBteSAlRGVwbFNpZ25hbHM7CgogICAgIyBnZXQgZ2VuZXJhbCBjYXRhbG9nIG9iamVjdAogICAgbXkgJEdlbmVyYWxDYXRhbG9nT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyk7CgogICAgIyBnZXQgbGlzdCBvZiBkZXBsb3ltZW50IHN0YXRlcwogICAgbXkgJERlcGxveW1lbnRTdGF0ZXNMaXN0ID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICk7CgogICAgIyBzZXQgZGVwbG95bWVudCBzdHlsZSBjb2xvcnMKICAgIG15ICRTdHlsZUNsYXNzZXMgPSAnJzsKCiAgICBJVEVNSUQ6CiAgICBmb3IgbXkgJEl0ZW1JRCAoIHNvcnQga2V5cyAleyREZXBsb3ltZW50U3RhdGVzTGlzdH0gKSB7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUgcHJlZmVyZW5jZXMKICAgICAgICBteSAlR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgSXRlbUlEID0+ICRJdGVtSUQsCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBhIGNvbG9yIGlzIGRlZmluZWQgaW4gcHJlZmVyZW5jZXMKICAgICAgICBuZXh0IElURU1JRCB1bmxlc3MgJEdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXN7Q29sb3J9OwoKICAgICAgICBteSAoJENvbG9yKSA9ICRHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2Vze0NvbG9yfS0+QCo7CgogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY29udmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvbnZlcnQgdG8gbG93ZXIgY2FzZQogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9IGxjICRDb2xvciA9fiBzL1teMC05YS1mXS8vbXNncjsKCiAgICAgICAgIyBhZGQgdG8gc3R5bGUgY2xhc3NlcyBzdHJpbmcKICAgICAgICAkU3R5bGVDbGFzc2VzIC49ICIKICAgICAgICAgICAgLkZsYWcgc3Bhbi4kRGVwbFN0YXRlIHsKICAgICAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMkRGVwbFN0YXRlQ29sb3I7CiAgICAgICAgICAgIH0KICAgICAgICAiOwogICAgfQoKICAgICMgd3JhcCBpbnRvIHN0eWxlIHRhZ3MKICAgIGlmICgkU3R5bGVDbGFzc2VzKSB7CiAgICAgICAgJFN0eWxlQ2xhc3NlcyA9ICI8c3R5bGU+JFN0eWxlQ2xhc3Nlczwvc3R5bGU+IjsKICAgIH0KCiAgICBteSAkQ2FjaGVLZXkgICAgID0gam9pbiAnLScsICRTZWxmLT57TmFtZX0sICRTZWxmLT57QWN0aW9ufSwgJFNlbGYtPntQYWdlU2hvd259LCAkU2VsZi0+e1N0YXJ0SGl0fSwgJFNlbGYtPntVc2VySUR9OwogICAgbXkgJENhY2hlQ29sdW1ucyA9IGpvaW4oCiAgICAgICAgJywnLAogICAgICAgIG1hcCB7ICRfIC4gJz0+JyAuICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyRffSB9IHNvcnQga2V5cyAleyAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gfQogICAgKTsKICAgICRDYWNoZUtleSAuPSAnLScgLiAkQ2FjaGVDb2x1bW5zIGlmICRDYWNoZUNvbHVtbnM7CgogICAgIyBJZiBTb3J0QnkgcGFyYW1ldGVyIGlzIG5vdCBkZWZpbmVkLCBzZXQgdG8gdmFsdWUgZnJvbSAlQ29uZmlnSXRlbVNlYXJjaCwgb3RoZXJ3aXNlIHNldCB0byBkZWZhdWx0IHZhbHVlICdBZ2UnLgogICAgaWYgKCAhZGVmaW5lZCAkU2VsZi0+e1NvcnRCeX0gKSB7CiAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnsgJENvbmZpZ0l0ZW1TZWFyY2h7U29ydEJ5fSB9ICkgewogICAgICAgICAgICAkU2VsZi0+e1NvcnRCeX0gPSAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJFNlbGYtPntTb3J0Qnl9ID0gJ0FnZSc7CiAgICAgICAgfQogICAgfQoKICAgICRDYWNoZUtleSAuPSAnLScgLiAkU2VsZi0+e1NvcnRCeX0gaWYgZGVmaW5lZCAkU2VsZi0+e1NvcnRCeX07CgogICAgIyBTZXQgT3JkZXJCeSBwYXJhbWV0ZXIgdG8gdGhlIHNlYXJjaC4KICAgIG15ICRJc0NhY2hlRm9yVXNlID0gMDsKICAgIGlmICggJFNlbGYtPntPcmRlckJ5fSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRTZWxmLT57QWRkRmlsdGVyc30KICAgICAgICAgICAgfHwgJFNlbGYtPntUYWJBY3Rpb259CiAgICAgICAgICAgIHx8ICFkZWZpbmVkICRTZWxmLT57U29ydGluZ0NvbHVtbn0KICAgICAgICAgICAgfHwgJFNlbGYtPntTb3J0aW5nQ29sdW1ufSBuZSAkU2VsZi0+e1NvcnRCeX0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gPSAkU2VsZi0+e09yZGVyQnl9OwogICAgICAgICAgICAkSXNDYWNoZUZvclVzZSA9IDE7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSA9ICRTZWxmLT57T3JkZXJCeX0gZXEgJ1VwJyA/ICdEb3duJyA6ICdVcCc7CiAgICAgICAgfQogICAgfQoKICAgICMgU2V0IG9yZGVyIGZvciBibG9ja3MuCiAgICAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSA9ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9IHx8ICdEb3duJzsKCiAgICAjIFNldCBwcmV2aW91cyBzb3J0aW5nIGNvbHVtbiBwYXJhbWV0ZXIgZm9yIGFsbCBjb2x1bW5zLgogICAgJFBhcmFte1NvcnRpbmdDb2x1bW59ID0gJFNlbGYtPntTb3J0Qnl9OwoKICAgICRDYWNoZUtleSAuPSAnLScgLiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSBpZiBkZWZpbmVkICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9OwoKICAgICMgQ3VzdG9tZXJJbmZvcm1hdGlvbkNlbnRlciBzaG93cyBkYXRhIHBlciBDdXN0b21lcklECiAgICBpZiAoICRQYXJhbXtDdXN0b21lcklEfSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFBhcmFte0N1c3RvbWVySUR9OwogICAgfQoKICAgICMgQ3VzdG9tZXJVc2VySW5mb3JtYXRpb25DZW50ZXIgc2hvd3MgZGF0YSBwZXIgQ3VzdG9tZXJVc2VySUQKICAgIGlmICggJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAkQ2FjaGVLZXkgLj0gJy0nIC4gJFBhcmFte0N1c3RvbWVyVXNlcklEfTsKICAgIH0KCiAgICAjIEFkZCB0aGUgYWRkaXRpb25hbCBmaWx0ZXIgYWx3YXlzIHRvIHRoZSBjYWNoZSBrZXksIGlmIGEgYWRkaXRpb25hbCBmaWx0ZXIgZXhpc3RzLgogICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICkgewogICAgICAgICRDYWNoZUtleSAuPSAnLScgLiAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9OwogICAgfQoKICAgICMgZ2V0IGNhY2hlIG9iamVjdAogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CgogICAgIyBjaGVjayBjYWNoZQogICAgbXkgJENvbmZpZ0l0ZW1JRHMgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICdEYXNoYm9hcmQnLAogICAgICAgIEtleSAgPT4gJENhY2hlS2V5IC4gJy0nIC4gJFNlbGYtPntGaWx0ZXJ9IC4gJy1MaXN0JywKICAgICk7CgogICAgIyBmaW5kIGFuZCBzaG93IGNvbmZpZyBpdGVtIGxpc3QKICAgIG15ICRDYWNoZVVzZWQgPSAxOwoKICAgICMgZ2V0IHRpY2tldCBvYmplY3QKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW1JRHMgKSB7CgogICAgICAgICMgYWRkIHNvcnQgYnkgcGFyYW1ldGVyIHRvIHRoZSBzZWFyY2gKICAgICAgICBpZiAoICFkZWZpbmVkICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gfHwgISRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57ICRDb25maWdJdGVtU2VhcmNoe1NvcnRCeX0gfSApIHsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1NvcnRCeX0gJiYgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnsgJFNlbGYtPntTb3J0Qnl9IH0gKSB7CiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaHtTb3J0Qnl9ID0gJFNlbGYtPntTb3J0Qnl9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2h7U29ydEJ5fSA9ICdBZ2UnOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAkQ2FjaGVVc2VkID0gJElzQ2FjaGVGb3JVc2UgPyAxIDogMDsKCiAgICAgICAgbXkgQENvbmZpZ0l0ZW1JRHNBcnJheTsKCiAgICAgICAgIyBUT0RPIHVuZGVyc3RhbmQKICAgICAgICBpZiAoICEkU2VsZi0+e0NvbmZpZ30tPntJc1Byb2Nlc3NXaWRnZXR9IHx8IElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntQcm9jZXNzTGlzdH0gKSApIHsKCiAgICAgICAgICAgICMgQ29weSBvcmlnaW5hbCBjb2x1bW4gZmlsdGVyLgogICAgICAgICAgICBteSAlQ29sdW1uRmlsdGVyID0gJXsgJFNlbGYtPntDb2x1bW5GaWx0ZXJ9IHx8IHt9IH07CgogICAgICAgICAgICAjIEV4ZWN1dGUgc2VhcmNoLgogICAgICAgICAgICBpZiAoICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gJiYgSXNIYXNoUmVmV2l0aERhdGEoICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9ICkgKSB7CgogICAgICAgICAgICAgICAgIyBpZiBjbGFzc2VzIGFyZSBmaWx0ZXJlZCwgYWRqdXN0IHNlYXJjaCBjb25maWcgYWNjb3JkaW5nbHkKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbkZpbHRlcntDbGFzc0lEc30gKSB7CiAgICAgICAgICAgICAgICAgICAgbXkgQEZpbHRlcmVkQ2xhc3NJRHM7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRDbGFzc0lEICggJENvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5eyAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9IH0tPntDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICRfID09ICRDbGFzc0lEIH0gJENvbHVtbkZpbHRlcntDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBARmlsdGVyZWRDbGFzc0lEcywgJENsYXNzSUQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1TZWFyY2hTdW1tYXJ5eyAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9IH0tPntDbGFzc0lEc30gPSBcQEZpbHRlcmVkQ2xhc3NJRHM7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgQENvbmZpZ0l0ZW1JRHNBcnJheSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnQVJSQVknLAogICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtU2VhcmNoLAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXsgJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSB9LT4lKiwKICAgICAgICAgICAgICAgICAgICAlQ29sdW1uRmlsdGVyLAogICAgICAgICAgICAgICAgICAgIExpbWl0ID0+ICRTZWxmLT57UGFnZVNob3dufSArICRTZWxmLT57U3RhcnRIaXR9IC0gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgJENvbmZpZ0l0ZW1JRHMgPSBcQENvbmZpZ0l0ZW1JRHNBcnJheTsKICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkU3VtbWFyeSA9ICRDYWNoZU9iamVjdC0+R2V0KAogICAgICAgIFR5cGUgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgS2V5ICA9PiAkQ2FjaGVLZXkgLiAnLVN1bW1hcnknLAogICAgKSAvLyB7fTsKCiAgICAjIElmIG5vIGNhY2hlIG9yIG5ldyBsaXN0IHJlc3VsdCwgZG8gY291bnQgbG9va3VwLgogICAgaWYgKCAhJFN1bW1hcnktPiUqIHx8ICEkQ2FjaGVVc2VkICkgewoKICAgICAgICBUWVBFOgogICAgICAgIGZvciBteSAkVHlwZSAoIHNvcnQga2V5cyAlQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnkgKSB7CgogICAgICAgICAgICBuZXh0IFRZUEUgaWYgISRDb25maWdJdGVtU2VhcmNoU3VtbWFyeXskVHlwZX07CgogICAgICAgICAgICAjIENvcHkgb3JpZ2luYWwgY29sdW1uIGZpbHRlci4KICAgICAgICAgICAgbXkgJUNvbHVtbkZpbHRlciA9ICV7ICRTZWxmLT57Q29sdW1uRmlsdGVyfSB8fCB7fSB9OwoKICAgICAgICAgICAgIyBMb29wIHRocm91Z2ggYWxsIGNvbHVtbiBmaWx0ZXIgZWxlbWVudHMuCiAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQga2V5cyAlQ29sdW1uRmlsdGVyICkgewoKICAgICAgICAgICAgICAgICMgVmVyaWZ5IGlmIGN1cnJlbnQgY29sdW1uIGZpbHRlciBlbGVtZW50IGlzIGFscmVhZHkgcHJlc2VudCBpbiB0aGUgY29uZmlnIGl0ZW0gc2VhcmNoCiAgICAgICAgICAgICAgICAjICAgc3VtbWFyeSwgdG8gZGVsZXRlIGl0IGZyb20gdGhlIGNvbHVtbiBmaWx0ZXIgaGFzaC4KICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBZGRpdGlvbmFsRmlsdGVyfSAmJiAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlICRDb2x1bW5GaWx0ZXJ7JEVsZW1lbnR9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkU3VtbWFyeS0+eyRUeXBlfSA9IDA7CgogICAgICAgICAgICBpZiAoICEkU2VsZi0+e0NvbmZpZ30tPntJc1Byb2Nlc3NXaWRnZXR9IHx8IElzQXJyYXlSZWZXaXRoRGF0YSggJFNlbGYtPntQcm9jZXNzTGlzdH0gKSApIHsKCiAgICAgICAgICAgICAgICAjIEV4ZWN1dGUgc2VhcmNoLgogICAgICAgICAgICAgICAgJFN1bW1hcnktPnskVHlwZX0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbVNlYXJjaCgKICAgICAgICAgICAgICAgICAgICBSZXN1bHQgPT4gJ0NPVU5UJywKICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbVNlYXJjaCwKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbVNlYXJjaFN1bW1hcnl7ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gfS0+JSosCiAgICAgICAgICAgICAgICAgICAgJUNvbHVtbkZpbHRlciwKICAgICAgICAgICAgICAgICkgfHwgMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNldCBjYWNoZQogICAgaWYgKCAhJENhY2hlVXNlZCAmJiAkU2VsZi0+e0NvbmZpZ30tPntDYWNoZVRUTExvY2FsfSApIHsKICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgVHlwZSAgPT4gJ0Rhc2hib2FyZCcsCiAgICAgICAgICAgIEtleSAgID0+ICRDYWNoZUtleSAuICctU3VtbWFyeScsCiAgICAgICAgICAgIFZhbHVlID0+ICRTdW1tYXJ5LAogICAgICAgICAgICBUVEwgICA9PiAkU2VsZi0+e0NvbmZpZ30tPntDYWNoZVRUTExvY2FsfSAqIDYwLAogICAgICAgICk7CiAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgIFR5cGUgID0+ICdEYXNoYm9hcmQnLAogICAgICAgICAgICBLZXkgICA9PiAkQ2FjaGVLZXkgLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn0gLiAnLUxpc3QnLAogICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgVFRMICAgPT4gJFNlbGYtPntDb25maWd9LT57Q2FjaGVUVExMb2NhbH0gKiA2MCwKICAgICAgICApOwogICAgfQoKICAgICMgU2V0IHRoZSBjc3MgY2xhc3MgZm9yIHRoZSBzZWxlY3RlZCBmaWx0ZXIgYW5kIGFkZGl0aW9uYWwgZmlsdGVyLgogICAgJFN1bW1hcnktPnsgJFNlbGYtPntGaWx0ZXJ9IC4gJzo6U2VsZWN0ZWQnIH0gPSAnU2VsZWN0ZWQnOwogICAgaWYgKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICkgewogICAgICAgICRTdW1tYXJ5LT57ICRTZWxmLT57QWRkaXRpb25hbEZpbHRlcn0gLiAnOjpTZWxlY3RlZCcgfSA9ICdTZWxlY3RlZCc7CiAgICB9CgogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGFkZCBwYWdlIG5hdiBiYXIgLSBvbmx5IHBhZ2luYXRpb24gaXMgbmVlZGVkCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0ZpbHRlcicsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCiAgICAgICAgICAgIE5hbWUgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgJXskU3VtbWFyeX0sCiAgICAgICAgfSwKICAgICk7CgogICAgbXkgJFRvdGFsICAgICAgICAgICAgPSAkU3VtbWFyeS0+eyAkU2VsZi0+e0ZpbHRlcn0gfSB8fCAwOwogICAgbXkgJUdldENvbHVtbkZpbHRlciAgPSAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0gPyAleyAkU2VsZi0+e0dldENvbHVtbkZpbHRlcn0gfSA6ICgpOwogICAgbXkgJENvbHVtbkZpbHRlckxpbmsgPSAnJzsKICAgIENPTFVNTk5BTUU6CiAgICBmb3IgbXkgJENvbHVtbk5hbWUgKCBzb3J0IGtleXMgJUdldENvbHVtbkZpbHRlciApIHsKICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRDb2x1bW5OYW1lOwogICAgICAgIG5leHQgQ09MVU1OTkFNRSBpZiAhJEdldENvbHVtbkZpbHRlcnskQ29sdW1uTmFtZX07CiAgICAgICAgJENvbHVtbkZpbHRlckxpbmsKICAgICAgICAgICAgLj0gJzsnIC4gJExheW91dE9iamVjdC0+QXNjaWkySHRtbCggVGV4dCA9PiAnQ29sdW1uRmlsdGVyJyAuICRDb2x1bW5OYW1lICkKICAgICAgICAgICAgLiAnPScgLiAkTGF5b3V0T2JqZWN0LT5MaW5rRW5jb2RlKCAkR2V0Q29sdW1uRmlsdGVyeyRDb2x1bW5OYW1lfSApOwogICAgfQoKICAgIG15ICRMaW5rUGFnZSA9CiAgICAgICAgJ1N1YmFjdGlvbj1FbGVtZW50O05hbWU9JyAuICRTZWxmLT57TmFtZX0KICAgICAgICAuICc7RmlsdGVyPScgLiAkU2VsZi0+e0ZpbHRlcn0KICAgICAgICAuICc7QWRkaXRpb25hbEZpbHRlcj0nIC4gKCAkU2VsZi0+e0FkZGl0aW9uYWxGaWx0ZXJ9ICB8fCAnJyApCiAgICAgICAgLiAnO1NvcnRCeT0nIC4gICAgICAgICAgICggJFNlbGYtPntTb3J0Qnl9ICAgICAgICAgICAgfHwgJycgKQogICAgICAgIC4gJztPcmRlckJ5PScgLiAgICAgICAgICAoICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9IHx8ICcnICkKICAgICAgICAuICRDb2x1bW5GaWx0ZXJMaW5rCiAgICAgICAgLiAnOyc7CgogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJJRH0gKSB7CiAgICAgICAgJExpbmtQYWdlIC49ICJDdXN0b21lcklEPSRQYXJhbXtDdXN0b21lcklEfTsiOwogICAgfQogICAgaWYgKCAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICRMaW5rUGFnZSAuPSAiQ3VzdG9tZXJVc2VySUQ9JFBhcmFte0N1c3RvbWVyVXNlcklEfTsiOwogICAgfQoKICAgIG15ICVQYWdlTmF2ID0gJExheW91dE9iamVjdC0+UGFnZU5hdkJhcigKICAgICAgICBTdGFydEhpdCAgICA9PiAkU2VsZi0+e1N0YXJ0SGl0fSwKICAgICAgICBQYWdlU2hvd24gICA9PiAkU2VsZi0+e1BhZ2VTaG93bn0sCiAgICAgICAgQWxsSGl0cyAgICAgPT4gJFRvdGFsIHx8IDEsCiAgICAgICAgQWN0aW9uICAgICAgPT4gJ0FjdGlvbj0nIC4gJExheW91dE9iamVjdC0+e0FjdGlvbn0sCiAgICAgICAgTGluayAgICAgICAgPT4gJExpbmtQYWdlLAogICAgICAgIEFKQVhSZXBsYWNlID0+ICdEYXNoYm9hcmQnIC4gJFNlbGYtPntOYW1lfSwKICAgICAgICBJRFByZWZpeCAgICA9PiAnRGFzaGJvYXJkJyAuICRTZWxmLT57TmFtZX0sCiAgICAgICAgQUpBWCAgICAgICAgPT4gJFBhcmFte0FKQVh9LAogICAgKTsKICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljRmlsdGVyTmF2QmFyJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgJXsgJFNlbGYtPntDb25maWd9IH0sCiAgICAgICAgICAgIE5hbWUgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzaG93IHRhYmxlIGhlYWRlcgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXInLAogICAgICAgIERhdGEgPT4ge30sCiAgICApOwoKICAgICMgcmVtb3ZlICgtKSBmcm9tIG5hbWUgZm9yIEpTIGNvbmZpZwogICAgbXkgJFdpZGdldE5hbWUgPSAkU2VsZi0+e05hbWV9OwogICAgJFdpZGdldE5hbWUgPX4gc3stfXt9ZzsKCiAgICAjIHNob3cgbm9uLWxhYmVsZWQgdGFibGUgaGVhZGVycwogICAgbXkgJENTUyA9ICcnOwoKICAgICMgU2VuZCBkYXRhIHRvIEpTIGZvciBpbml0IGNvbnRhaW5lci4KICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnSW5pdENvbnRhaW5lckRhc2hib2FyZCcgLiAkU2VsZi0+e05hbWV9LAogICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgU29ydEJ5ICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgIE9yZGVyQnkgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICBLZXkgICA9PiAnSGVhZGVyQ29sdW1uJyAuICRXaWRnZXROYW1lLAogICAgICAgIFZhbHVlID0+IFxAQ29sdW1ucwogICAgKTsKCiAgICAjIHNob3cgYWxsIG5lZWRlZCBoZWFkZXJzCiAgICBIRUFERVJDT0xVTU46CiAgICBmb3IgbXkgJEhlYWRlckNvbHVtbiAoQENvbHVtbnMpIHsKCiAgICAgICAgaWYgKCAkSGVhZGVyQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAkQ1NTID0gJyc7CiAgICAgICAgICAgIG15ICRUaXRsZSA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkSGVhZGVyQ29sdW1uKTsKCiAgICAgICAgICAgICMgU2V0IHRpdGxlIGRlc2NyaXB0aW9uLgogICAgICAgICAgICBpZiAoICRTZWxmLT57U29ydEJ5fSAmJiAkU2VsZi0+e1NvcnRCeX0gZXEgJEhlYWRlckNvbHVtbiApIHsKICAgICAgICAgICAgICAgIG15ICRUaXRsZURlc2MgPSAnJzsKICAgICAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0gZXEgJ0Rvd24nICkgewogICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGFzY2VuZGluZycpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAkVGl0bGUgLj0gJywgJyAuICRUaXRsZURlc2M7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBjb2x1bW4gbmFtZSB0byB3cml0ZSBpdCBpbiB0aGUgY3VycmVudCBsYW5ndWFnZQogICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgIGlmICggJEhlYWRlckNvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEhlYWRlckNvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyB8fCAkSGVhZGVyQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBEZXBsb3ltZW50IFN0YXRlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBTdGF0ZSBUeXBlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEhlYWRlckNvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyB8fCAkSGVhZGVyQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnQ3VycmVudCBJbmNpZGVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEhlYWRlckNvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJEhlYWRlckNvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdMYXN0IGNoYW5nZWQnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkSGVhZGVyQ29sdW1uKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBhZGQgc3Vycm91bmRpbmcgY29udGFpbmVyCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1IZWFkZXInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSAgICAgPSAkVHJhbnNsYXRlZFdvcmQ7CiAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgIGlmICggJFNlbGYtPntHZXRDb2x1bW5GaWx0ZXJTZWxlY3R9ICYmICRTZWxmLT57R2V0Q29sdW1uRmlsdGVyU2VsZWN0fS0+eyRIZWFkZXJDb2x1bW59ICkgewogICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbicsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29sdW1uICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUyAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlIGFuZCBzb3J0YWJsZQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59CiAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskSGVhZGVyQ29sdW1ufQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgbXkgJENzczsKCiAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgIENzcyAgICAgICAgPT4gJENzcywKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRmlsdGVyU29ydCcgLiAkSGVhZGVyQ29sdW1uIC4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRpbmdDb2x1bW4gICAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGp1c3QgZmlsdGVyYWJsZQogICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRIZWFkZXJDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgIG15ICRDc3M7CgogICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICBDc3MgICAgICAgID0+ICRDc3MsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgS2V5ICAgPT4gJ0NvbHVtbkZpbHRlcicgLiAkSGVhZGVyQ29sdW1uIC4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBqdXN0IHNvcnRhYmxlCiAgICAgICAgICAgIGVsc2lmICggJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30tPnskSGVhZGVyQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICAjIHNlbmQgZGF0YSB0byBKUwogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5Tb3J0YWJsZScgLiAkSGVhZGVyQ29sdW1uIC4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydEJ5ICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgU29ydGluZ0NvbHVtbiAgICA9PiAkUGFyYW17U29ydGluZ0NvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAkSGVhZGVyQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJEhlYWRlckNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIER5bmFtaWMgZmllbGRzCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgIG15ICRERkNvbHVtbiA9ICRIZWFkZXJDb2x1bW47CiAgICAgICAgICAgICRERkNvbHVtbiA9fiBzL0R5bmFtaWNGaWVsZF8vL2c7CiAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG5leHQgSEVBREVSQ09MVU1OIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgICAgIG15ICRMYWJlbCA9ICREeW5hbWljRmllbGRDb25maWctPntMYWJlbH07CgogICAgICAgICAgICBteSAkVHJhbnNsYXRlZExhYmVsID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRMYWJlbCk7CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkTmFtZSA9ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKCiAgICAgICAgICAgIG15ICRDU1MgICAgICAgICAgICAgPSAnJzsKICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRMYWJlbDsKICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0gJiYgZGVmaW5lZCAkU2VsZi0+e0dldENvbHVtbkZpbHRlclNlbGVjdH0tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkQ1NTIC49ICdGaWx0ZXJBY3RpdmUgJzsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgbXkgJElzU29ydGFibGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyktPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ0lzU29ydGFibGUnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGl0bGUKICAgICAgICAgICAgbXkgJFRpdGxlID0gJExhYmVsOwoKICAgICAgICAgICAgIyBhZGQgc3Vycm91bmRpbmcgY29udGFpbmVyCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3SGVhZGVyJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0hlYWRlckNvbmZpZ0l0ZW1IZWFkZXInLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgbXkgJFRpdGxlRGVzYyA9ICcnOwogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICRTZWxmLT57U29ydEJ5fQogICAgICAgICAgICAgICAgICAgICYmICggJFNlbGYtPntTb3J0Qnl9IGVxICggJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICkgKQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9IGVxICdEb3duJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnREZXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgZGVzY2VuZGluZycpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgJFRpdGxlIC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHRoZSBkeW5hbWljIGZpZWxkIGlzIHNvcnRhYmxlIGFuZCBmaWx0ZXJhYmxlIChzb3J0YWJsZSBjaGVjayB3YXMgbWFkZSBiZWZvcmUpCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5GaWx0ZXJTb3J0JyAuICREeW5hbWljRmllbGROYW1lIC4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgID0+ICRTZWxmLT57U29ydEJ5fSB8fCAnQWdlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0aW5nQ29sdW1uICAgID0+ICRQYXJhbXtTb3J0aW5nQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAjIG91dHB1dCBzb3J0YWJsZSBhbmQgZmlsdGVyYWJsZSBkeW5hbWljIGZpZWxkCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSAgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRMYWJlbCB8fCAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJ0FnZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBvdGhlcndpc2UgdGhlIGR5bmFtaWMgZmllbGQgaXMgb25seSBzb3J0YWJsZSAoc29ydGFibGUgY2hlY2sgd2FzIG1hZGUgYmVmb3JlKQogICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uU29ydGFibGUnIC4gJER5bmFtaWNGaWVsZE5hbWUgLiAkV2lkZ2V0TmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkQ29uZmlnSXRlbVNlYXJjaHtPcmRlckJ5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRpbmdDb2x1bW4gICAgPT4gJFBhcmFte1NvcnRpbmdDb2x1bW59LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgb3V0cHV0IHNvcnRhYmxlIGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lICAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZExhYmVsIHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1TZWFyY2h7T3JkZXJCeX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTb3J0QnkgICAgICAgICAgICAgICA9PiAkU2VsZi0+e1NvcnRCeX0gfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgICAgICA9PiAkU2VsZi0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaWYgdGhlIGR5bmFtaWMgZmllbGQgd2FzIG5vdCBzb3J0YWJsZSAoY2hlY2sgd2FzIG1hZGUgYW5kIGZhaWwgYmVmb3JlKQogICAgICAgICAgICAjIGl0IG1pZ2h0IGJlIGZpbHRlcmFibGUKICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgID0+ICRDU1MgICAgICAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyBzZW5kIGRhdGEgdG8gSlMKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAnQ29sdW1uRmlsdGVyJyAuICREeW5hbWljRmllbGROYW1lIC4gJFdpZGdldE5hbWUsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJDb2x1bW5OYW1lID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgID0+ICRTZWxmLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNvcnRCeSAgICAgICAgICAgPT4gJFNlbGYtPntTb3J0Qnl9IHx8ICdBZ2UnLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRDb25maWdJdGVtU2VhcmNoe09yZGVyQnl9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICMgb3V0cHV0IGZpbHRlcmFibGUgKG5vdCBzb3J0YWJsZSkgZHluYW1pYyBmaWVsZAogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnQ29udGVudExhcmdlQ29uZmlnSXRlbUdlbmVyaWNIZWFkZXJDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBIZWFkZXJOYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZExhYmVsIHx8ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICAgICAgICAgPT4gJFNlbGYtPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgb3RoZXJ3aXNlIHRoZSBmaWVsZCBpcyBub3QgZmlsdGVyYWJsZSBhbmQgbm90IHNvcnRhYmxlCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgSGVhZGVyQ29sdW1uTmFtZSA9PiAkRHluYW1pY0ZpZWxkTmFtZSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgICB8fCAnJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAjIG91dHB1dCBwbGFpbiBkeW5hbWljIGZpZWxkIGhlYWRlciAobm90IGZpbHRlcmFibGUsIG5vdCBzb3J0YWJsZSkKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljSGVhZGVyQ29sdW1uRW1wdHknLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlck5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkTGFiZWwgfHwgJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgIEhlYWRlckNvbHVtbk5hbWUgICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBzaG93IHRpY2tldHMKICAgIG15ICRDb3VudCA9IDA7CiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIEB7JENvbmZpZ0l0ZW1JRHN9ICkgewogICAgICAgICRDb3VudCsrOwoKICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkQ291bnQgPCAkU2VsZi0+e1N0YXJ0SGl0fTsKCiAgICAgICAgbXkgJENvbmZpZ0l0ZW1SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtUmVmLT4lKjsKCiAgICAgICAgIyBzZXQgZGVwbG95bWVudCBhbmQgaW5jaWRlbnQgc2lnbmFscwogICAgICAgICRDb25maWdJdGVte0N1ckRlcGxTaWduYWx9ID0gJERlcGxTaWduYWxzeyAkQ29uZmlnSXRlbXtDdXJEZXBsU3RhdGV9IH07CiAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVNpZ25hbH0gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICElQ29uZmlnSXRlbTsKCiAgICAgICAgIyBzZXQgYSBkZWZhdWx0IHRpdGxlIGlmIGNvbmZpZyBpdGVtIGhhcyBubyB0aXRsZQogICAgICAgIGlmICggISRDb25maWdJdGVte1RpdGxlfSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17VGl0bGV9ID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKAogICAgICAgICAgICAgICAgJ1RoaXMgdGlja2V0IGhhcyBubyB0aXRsZSBvciBzdWJqZWN0JwogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBzaG93IGNvbmZpZyBpdGVtCiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRMYXJnZUNvbmZpZ0l0ZW1HZW5lcmljUm93JywKICAgICAgICAgICAgRGF0YSA9PiBcJUNvbmZpZ0l0ZW0sCiAgICAgICAgKTsKCiAgICAgICAgIyBzYXZlIGNvbHVtbiBjb250ZW50CiAgICAgICAgbXkgJERhdGFWYWx1ZTsKCiAgICAgICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgIyBzaG93IGFsbCBuZWVkZWQgY29sdW1ucwogICAgICAgIENPTFVNTjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1Db2x1bW4gKEBDb2x1bW5zKSB7CgogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1Db2x1bW4nLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIG15ICRCbG9ja1R5cGUgPSAnJzsKICAgICAgICAgICAgICAgIG15ICRDU1NDbGFzcyAgPSAnJzsKCiAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdOdW1iZXInICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZW50TGFyZ2VDb25maWdJdGVtR2VuZXJpY0NvbmZpZ0l0ZW1OdW1iZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJENvbmZpZ0l0ZW17TnVtYmVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIG5leHQgQ09MVU1OOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQWdlJyApIHsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJExheW91dE9iamVjdC0+Q3VzdG9tZXJBZ2UoCiAgICAgICAgICAgICAgICAgICAgICAgIEFnZSAgID0+ICRDb25maWdJdGVte0FnZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNwYWNlID0+ICcgJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ0N1ckRlcGwnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKAogICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJwogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkQmxvY2tUeXBlID0gJ0N1ckluY2knOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3JlYXRlZCcgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRCbG9ja1R5cGUgPSAnVGltZSc7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnVGl0bGUnICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgojIFRPRE86IE1heWJlIHJlbmFtZSB0byBBZ2VudFpvb20gb3Igc2ltaWxhcgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKdXNlIExpc3Q6OlV0aWwgcXcoZmlyc3QpOwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEgSXNBcnJheVJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06Ok1haW4nLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6RHluYW1pY0ZpZWxkIC0gY29uZmlnaXRlbSBzcGVjaWZpYyBkeW5hbWljIGZpZWxkIG91dHB1dAoKPWhlYWQxIERFU0NSSVBUSU9OCgpGdW5jdGlvbnMgdG8gZ2VuZXJhdGUgRHluYW1pY0ZpZWxkIEhUTUwgZm9yIENvbmZpZ0l0ZW1zCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpjcmVhdGUgYSBEeW5hbWljRmllbGRPdXRwdXQgb2JqZWN0LiBEbyBub3QgdXNlIGl0IGRpcmVjdGx5LCBpbnN0ZWFkIHVzZToKCiAgICBteSAkRHluYW1pY0ZpZWxkT3V0cHV0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpEeW5hbWljRmllbGQnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgUGFnZVJlbmRlcigpCgpSZXR1cm5zIHRoZSBIVE1MIGZvciBhIHBhZ2Ugb2YgQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KCiAgICBteSAkRHluYW1pY0ZpZWxkSFRNTCA9ICREeW5hbWljRmllbGRPdXRwdXRPYmplY3QoCiAgICAgICAgQ29uZmlnSXRlbSA9PiAkQ29uZmlnSXRlbSwKICAgICAgICBEZWZpbml0aW9uID0+ICREZWZpbml0aW9uLAogICAgICAgIFBhZ2VSZWYgICAgPT4gJFBhZ2UsICAgICAgICAjIGVpdGhlciBQYWdlUmVmIG9yIFBhZ2UgaXMgcmVxdWlyZWQKICAgICAgICBQYWdlICAgICAgID0+ICdOYW1lJywKICAgICk7Cgo9Y3V0CgpzdWIgUGFnZVJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQ2hlY2sgbmVlZGVkIHN0dWZmLgogICAgZm9yIG15ICROZWVkZWQgKHF3KENvbmZpZ0l0ZW0gRGVmaW5pdGlvbikpIHsKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFteyROZWVkZWR9ICkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJERlZmluaXRpb25SZWYgPSAkUGFyYW17RGVmaW5pdGlvbn17RGVmaW5pdGlvblJlZn07CiAgICBteSAkUGFnZSAgICAgICAgICA9ICRQYXJhbXtQYWdlUmVmfSAvLyBmaXJzdCB7ICRfLT57TmFtZX0gZXEgJFBhcmFte1BhZ2V9IH0gJERlZmluaXRpb25SZWYtPntQYWdlc30tPkAqOwogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJFBhZ2UpIHx8ICFJc0FycmF5UmVmV2l0aERhdGEoICRQYWdlLT57Q29udGVudH0gKSApIHsKICAgICAgICBteSAkRXJyb3JNZXNzYWdlID0gZGVmaW5lZCAkUGFyYW17UGFnZVJlZn0KICAgICAgICAgICAgPyAnUGFnZVJlZiBub3QgdmFsaWQuJwogICAgICAgICAgICA6ICRQYXJhbXtQYWdlfSA/ICJQYWdlICRQYXJhbXtQYWdlfSBub3QgdmFsaWQgZm9yIERlZmluaXRpb25JRCAkUGFyYW17RGVmaW5pdGlvbn17RGVmaW5pdGlvbklEfSBvZiBjbGFzcyAkUGFyYW17RGVmaW5pdGlvbn17Q2xhc3N9LiIKICAgICAgICAgICAgOiAgICAgICAgICAgICAgICAnTmVlZCBQYWdlIG9yIFBhZ2VSZWYhJzsKCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRFcnJvck1lc3NhZ2UsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICVMYXlvdXQ7CiAgICBpZiAoICRQYWdlLT57TGF5b3V0fSApIHsKICAgICAgICAkTGF5b3V0e0NvbHVtbnN9ID0gJFBhZ2UtPntMYXlvdXR9e0NvbHVtbnN9ID8gaW50KCAkUGFnZS0+e0xheW91dH17Q29sdW1uc30gKSA6IDE7CgogICAgICAgICMgYmFzaWMgY29ycmVjdGlvbnMgZm9yIGdyaWQtdGVtcGxhdGUtcm93cwogICAgICAgIG15IEBXaWR0aHMgPSAkUGFnZS0+e0xheW91dH17Q29sdW1uV2lkdGh9ID8gKCAkUGFnZS0+e0xheW91dH17Q29sdW1uV2lkdGh9ID1+IC8oW1xkXC5dKlx3KykvZyApIDogKCk7CgogICAgICAgIGlmICggQFdpZHRocyA8ICRMYXlvdXR7Q29sdW1uc30gKSB7CiAgICAgICAgICAgIHB1c2ggQFdpZHRocywgKCcxZnInKSB4ICggJExheW91dHtDb2x1bW5zfSAtIEBXaWR0aHMgKTsKICAgICAgICB9CgogICAgICAgICRMYXlvdXR7V2lkdGhzfSA9IGpvaW4oICcgJywgQFdpZHRoc1sgMCAuLiAkTGF5b3V0e0NvbHVtbnN9IC0gMSBdICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAlTGF5b3V0ID0gKAogICAgICAgICAgICBDb2x1bW5zID0+IDEsCiAgICAgICAgICAgIFdpZHRocyAgPT4gJzFmcicsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgIHsKICAgICAgICBteSAkU2VjdGlvbnMgPSAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfSAvLyB7fTsKICAgICAgICBteSAlS2V5VG9Dc3MgPSBxdy9Sb3cgcm93IENvbHVtbiBjb2x1bW4vOwoKICAgICAgICBDT05URU5UQkxPQ0s6CiAgICAgICAgZm9yIG15ICRDb250ZW50QmxvY2sgKCAkUGFnZS0+e0NvbnRlbnR9LT5AKiApIHsKCiAgICAgICAgICAgICMgVGhlIHJvbGUgaXMgaW5jbHVkZWQgaW4gdGhlIHNlY3Rpb24gbmFtZQogICAgICAgICAgICBteSAkU2VjdGlvbiA9ICRTZWN0aW9ucy0+eyAkQ29udGVudEJsb2NrLT57U2VjdGlvbn0gfTsKCiAgICAgICAgICAgIG5leHQgQ09OVEVOVEJMT0NLIHVubGVzcyAkU2VjdGlvbjsKCiAgICAgICAgICAgIG15ICRHcmlkQXJlYTsKICAgICAgICAgICAgZm9yIG15ICRLZXkgKHF3L1JvdyBDb2x1bW4vKSB7CiAgICAgICAgICAgICAgICBpZiAoICRDb250ZW50QmxvY2stPnsgJEtleSAuICdTdGFydCcgfSApIHsKICAgICAgICAgICAgICAgICAgICAkR3JpZEFyZWEgLj0gJ2dyaWQtJyAuICRLZXlUb0Nzc3skS2V5fSAuICctc3RhcnQ6JyAuIGludCggJENvbnRlbnRCbG9jay0+eyAkS2V5IC4gJ1N0YXJ0JyB9ICkgLiAnOyc7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoICRDb250ZW50QmxvY2stPnsgJEtleSAuICdTcGFuJyB9ICkgewogICAgICAgICAgICAgICAgICAgICRHcmlkQXJlYSAuPSAnZ3JpZC0nIC4gJEtleVRvQ3NzeyRLZXl9IC4gJy1lbmQ6c3BhbiAnIC4gaW50KCAkQ29udGVudEJsb2NrLT57ICRLZXkgLiAnU3BhbicgfSApIC4gJzsnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0NvbnRlbnRDZWxsJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEdyaWRBcmVhID0+ICRHcmlkQXJlYSwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICA9PiAkU2VjdGlvbi0+e1R5cGV9CiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFNlbGYtPl9TZWN0aW9uUmVuZGVyKAogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICBTZWN0aW9uICAgICAgPT4gJFNlY3Rpb24sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdJVFNNQ29uZmlnSXRlbURldGFpbHMnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJUxheW91dCwKICAgICk7Cn0KCnN1YiBfU2VjdGlvblJlbmRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e1R5cGV9ICkgewogICAgICAgIGlmICggJFBhcmFte1NlY3Rpb259e1R5cGV9IGVxICdDb25maWdJdGVtTGlua3MnICkgewogICAgICAgICAgICByZXR1cm4gJFNlbGYtPl9SZW5kZXJDSUxpbmtzKCVQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1NlY3Rpb259e1R5cGV9IGVxICdSZWZlcmVuY2VkU2VjdGlvbicgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1JlbmRlclJlZmVyZW5jZWRTZWN0aW9uKCVQYXJhbSk7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1NlY3Rpb259e1R5cGV9IGVxICdEZXNjcmlwdGlvbicgKSB7CiAgICAgICAgICAgIHJldHVybiAkU2VsZi0+X1JlbmRlckRlc2NyaXB0aW9uU2VjdGlvbiglUGFyYW0pOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtTZWN0aW9ufXtUeXBlfSBuZSAnRHluYW1pY0ZpZWxkcycgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHNlY3Rpb24gdHlwZSAnJFBhcmFte1NlY3Rpb259e1R5cGV9JyEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIEdldCBIVE1MIGZyb20gYWRkaXRpb25hbCBtb2R1bGVzCiAgICBlbHNpZiAoICRQYXJhbXtTZWN0aW9ufXtNb2R1bGV9ICkgewogICAgICAgIG15ICRNb2R1bGUgPSAnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpTZWN0aW9uOjonIC4gJFBhcmFte1NlY3Rpb259e01vZHVsZX07CgogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoJE1vZHVsZSkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBsb2FkIHNlY3Rpb24gbW9kdWxlICckTW9kdWxlJyIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgfQoKICAgICAgICBteSAkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgkTW9kdWxlKTsKICAgICAgICBteSAkSFRNTCAgID0gJE9iamVjdC0+UnVuKCVQYXJhbSk7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdHZW5lcmljSFRNTCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgSFRNTCA9PiAkSFRNTCwKICAgICAgICAgICAgfSwKICAgICAgICApOwoKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBteSAkUm93SGFzVmFsdWUgPSBzdWIgewogICAgICAgIHJldHVybiAxIGlmIGdyZXAgeyBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8tPntERn0gfSB9ICRfWzBdLT5AKjsKICAgICAgICByZXR1cm4gMDsKICAgIH07CiAgICBteSAkR3JpZEhhc1ZhbHVlID0gc3ViIHsKICAgICAgICBmb3IgbXkgJFJvdyAoICRfWzBdLT5AKiApIHsKICAgICAgICAgICAgcmV0dXJuIDEgaWYgJFJvd0hhc1ZhbHVlLT4oJFJvdyk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAgfTsKCiAgICBteSAkRHluYW1pY0ZpZWxkTGlzdDsKCiAgICBST1c6CiAgICBmb3IgbXkgJFJvdyAoICRQYXJhbXtTZWN0aW9ufXtDb250ZW50fS0+QCogKSB7CiAgICAgICAgaWYgKCAkUm93LT57SGVhZGVyfSApIHsKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnSGVhZGVyUm93JywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIEhlYWRlciA9PiAkUm93LT57SGVhZGVyfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRMaXN0ID0gMDsKICAgICAgICB9CgogICAgICAgIGVsc2lmICggJFJvdy0+e0RGfSApIHsKICAgICAgICAgICAgbmV4dCBST1cgaWYgIWRlZmluZWQgJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUm93LT57REZ9IH07CgogICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkTGlzdCApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZExpc3QgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn17ICRSb3ctPntERn0gfTsKCiAgICAgICAgICAgIG5leHQgUk9XIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgbXkgJERpc3BsYXlWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRSb3ctPntERn0gfSwKICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICA9PiAkUm93LT57TGFiZWx9IHx8ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgPT4gJ0xhYmVsJywKICAgICAgICAgICAgICAgICAgICBDU1NDbGFzcyA9PiAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyA/ICdEeW5hbWljRmllbGRTZXRMYWJlbCcgOiB1bmRlZiwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnIHx8ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdSaWNoVGV4dCcgKSB7CiAgICAgICAgICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAogICAgICAgICAgICAgICAgICAgICAgICBUeXBlID0+ICdGdWxsUm93JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREaXNwbGF5VmFsdWUtPntMaW5rfSApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZC0+e05hbWV9ID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgICREaXNwbGF5VmFsdWUtPiUqLAoKICAgICAgICAgICAgICAgICAgICAgICAgIyBJbmNsdWRlIHVuaXF1ZSBwYXJhbWV0ZXIgd2l0aCBkeW5hbWljIGZpZWxkIG5hbWUgaW4gY2FzZSBvZiBjb2xsaXNpb24gd2l0aCBvdGhlcnMuCiAgICAgICAgICAgICAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIkR5bmFtaWNGaWVsZF8kRHluYW1pY0ZpZWxkLT57TmFtZX0iID0+ICREaXNwbGF5VmFsdWUtPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PiAnVmFsdWVMaW5rJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdBdHRhY2htZW50JyApIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1ZhbHVlUmF3JywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgPT4gJ1ZhbHVlJywKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgZWxzaWYgKCAkUm93LT57R3JpZH0gKSB7CiAgICAgICAgICAgIG5leHQgUk9XIGlmICEkR3JpZEhhc1ZhbHVlLT4oICRSb3ctPntHcmlkfXtSb3dzfSApOwoKICAgICAgICAgICAgbXkgJENvbHVtbnMgPSBpbnQoICRSb3ctPntHcmlkfXtDb2x1bW5zfSApOwoKICAgICAgICAgICAgIyBiYXNpYyBjb3JyZWN0aW9ucyBmb3IgZ3JpZC10ZW1wbGF0ZS1yb3dzCiAgICAgICAgICAgIG15IEBXaWR0aHMgPSAkUm93LT57R3JpZH17Q29sdW1uV2lkdGh9ID8gKCAkUm93LT57R3JpZH17Q29sdW1uV2lkdGh9ID1+IC8oW1xkXC5dKlx3KykvZyApIDogKCk7CgogICAgICAgICAgICBpZiAoIEBXaWR0aHMgPCAkQ29sdW1ucyApIHsKICAgICAgICAgICAgICAgIHB1c2ggQFdpZHRocywgKCcxZnInKSB4ICggJENvbHVtbnMgLSBAV2lkdGhzICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBXaWR0aHMgPT4gam9pbiggJyAnLCBAV2lkdGhzWyAwIC4uICRDb2x1bW5zIC0gMSBdICksCgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICApOwoKICAgICAgICAgICAgR1JJRFJPVzoKICAgICAgICAgICAgZm9yIG15ICRHcmlkUm93ICggJFJvdy0+e0dyaWR9e1Jvd3N9LT5AKiApIHsKICAgICAgICAgICAgICAgIG5leHQgR1JJRFJPVyBpZiAhJFJvd0hhc1ZhbHVlLT4oJEdyaWRSb3cpOwoKICAgICAgICAgICAgICAgIG15ICRDb2x1bW5JbmRleCA9IDA7CiAgICAgICAgICAgICAgICBteSBARGlzcGxheVZhbHVlczsKICAgICAgICAgICAgICAgIEZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRGaWVsZCAoICRHcmlkUm93LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IEZJRUxEIGlmICEkRmllbGQtPntERn07CgogICAgICAgICAgICAgICAgICAgICRDb2x1bW5JbmRleCsrOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJFBhcmFte0RlZmluaXRpb259e0R5bmFtaWNGaWVsZFJlZn17ICRGaWVsZC0+e0RGfSB9OwoKICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlc1skQ29sdW1uSW5kZXhdID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRGaWVsZC0+e0RGfSB9LAogICAgICAgICAgICAgICAgICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICAgICAgICAgICAgICAgICAgICAgIEhUTUxPdXRwdXQgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICMgVE9ETzogZ3JpZCBjb2x1bW4gZnJvbSBkZWZpbml0aW9uCiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRGaWVsZC0+e0xhYmVsfSB8fCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgR3JpZENvbHVtbiA9PiAiZ3JpZC1jb2x1bW4tc3RhcnQ6ICRDb2x1bW5JbmRleDsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZSAgICAgICA9PiAnTGFiZWwnLAogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBmb3IgbXkgJEluZGV4ICggMSAuLiAkQ29sdW1uSW5kZXggKSB7CiAgICAgICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlc1skSW5kZXhdLT4lKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdyaWRDb2x1bW4gPT4gImdyaWQtY29sdW1uLXN0YXJ0OiAkSW5kZXg7IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGUgICAgICAgPT4gJ1ZhbHVlJywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAkRHluYW1pY0ZpZWxkTGlzdCA9IDA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlbmRlckNJTGlua3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICREaXJlY3Rpb24gPSAkUGFyYW17U2VjdGlvbn17TGlua2VkQXN9IHx8ICdTb3VyY2UnOwogICAgbXkgJFR5cGVzICAgICA9IElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte1NlY3Rpb259e0xpbmtUeXBlc30gKSA/ICRQYXJhbXtTZWN0aW9ufXtMaW5rVHlwZXN9IDogdW5kZWY7CgogICAgbXkgJExpbmtlZENvbmZpZ0l0ZW1zID0gJENvbmZpZ0l0ZW1PYmplY3QtPkxpbmtlZENvbmZpZ0l0ZW1zKAoKICAgICAgICAjIFRPRE86IFdoYXQgYWJvdXQgdmVyc2lvbnMKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRGlyZWN0aW9uICAgID0+ICREaXJlY3Rpb24sCiAgICAgICAgVHlwZXMgICAgICAgID0+ICRUeXBlcywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIGlmICEkTGlua2VkQ29uZmlnSXRlbXM7CgogICAgbXkgJUxpbmtlZENsYXNzZXM7CgogICAgZm9yIG15ICRMaW5rICggJExpbmtlZENvbmZpZ0l0ZW1zLT5AKiApIHsKICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJExpbmstPntDb25maWdJdGVtSUR9LAogICAgICAgICk7CgogICAgICAgICMgVE9ETzogVGhpbmsgYWJvdXQgc29ydGluZwogICAgICAgIHB1c2ggQHsgJExpbmtlZENsYXNzZXN7ICRDb25maWdJdGVtLT57Q2xhc3N9IH0gfSwgewogICAgICAgICAgICBOYW1lICAgICAgICAgPT4gJENvbmZpZ0l0ZW0tPntOYW1lfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRMaW5rLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICB9OwogICAgfQoKICAgICMgVE9ETzogQWNjZXNzIHJpZ2h0czsgY2xhc3NlcyBmb3IgYWdlbnRzOyBmb3IgY3VzdG9tZXJzPwogICAgIyBUT0RPOiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHRoZSB0aWxlOyBjbGFzcyByZXN0cmljdGlvbnMsIGRmIHJlc3RyaWN0aW9ucywgPwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e0hlYWRlcn0gKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdIZWFkZXJSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIEhlYWRlciA9PiAkUGFyYW17U2VjdGlvbn17SGVhZGVyfSwKICAgICAgICAgICAgfQogICAgICAgICk7CiAgICB9CgogICAgbXkgJEFjdGlvbjsKICAgIGlmICggJFBhcmFte0xheW91dE9iamVjdH17VXNlclR5cGV9ICkgewogICAgICAgICRBY3Rpb24gPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtVc2VyVHlwZX0gZXEgJ0N1c3RvbWVyJyA/ICdDdXN0b21lcklUU01Db25maWdJdGVtWm9vbScgOiAnQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20nOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJEFjdGlvbiA9ICdQdWJsaWNJVFNNQ29uZmlnSXRlbVpvb20nOwogICAgfQoKICAgIGZvciBteSAkQ2xhc3MgKCBzb3J0IGtleXMgJUxpbmtlZENsYXNzZXMgKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlSb3cnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIFdpZHRocyA9PiAnMWZyIDFmcicsCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgIExhYmVsID0+ICRDbGFzcywKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdMYWJlbCcsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRDSSAoIHNvcnQgeyAkYS0+e05hbWV9IGNtcCAkYi0+e05hbWV9IH0gJExpbmtlZENsYXNzZXN7JENsYXNzfS0+QCogKSB7CiAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICA9PiAkQ0ktPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgID0+ICRDSS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIExpbmsgICAgICAgPT4gJFBhcmFte0xheW91dE9iamVjdH17QmFzZWxpbmt9IC4gIkFjdGlvbj0kQWN0aW9uO0NvbmZpZ0l0ZW1JRD0kQ0ktPntDb25maWdJdGVtSUR9IiwKICAgICAgICAgICAgICAgICAgICBUeXBlICAgICAgID0+ICdWYWx1ZUxpbmsnLAogICAgICAgICAgICAgICAgICAgIEdyaWRDb2x1bW4gPT4gJ2dyaWQtY29sdW1uLXN0YXJ0OjInLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfUmVuZGVyRGVzY3JpcHRpb25TZWN0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0hlYWRlclJvdycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIEhlYWRlciA9PiAnRGVzY3JpcHRpb24nLAogICAgICAgIH0sCiAgICApOwoKICAgICMgcmVuZGVyIGRlc2NyaXB0aW9uIHJpY2h0ZXh0IGVkaXRvcgogICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgIFdpZHRocyA9PiAnMWZyJywKICAgICAgICB9LAogICAgKTsKICAgIG15ICRGcm9udGVuZDsKICAgIGlmICggJFBhcmFte0xheW91dE9iamVjdH17VXNlclR5cGV9ICkgewogICAgICAgICRGcm9udGVuZCA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e1VzZXJUeXBlfSBlcSAnVXNlcicgPyAnQWdlbnQnIDogJ0N1c3RvbWVyJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRGcm9udGVuZCA9ICdQdWJsaWMnOwogICAgfQogICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheUNlbGwnLAogICAgICAgIERhdGEgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgIFZlcnNpb25JRCAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17VmVyc2lvbklEfSwKICAgICAgICAgICAgRnJvbnRlbmQgICAgID0+ICRGcm9udGVuZCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICdJZnJhbWUnLAogICAgICAgIH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlbmRlclJlZmVyZW5jZWRTZWN0aW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17TGF5b3V0T2JqZWN0fTsKCiAgICBteSAkUmVmZXJlbmNlZENvbmZpZ0l0ZW0gPSAkU2VsZi0+X1JlZmVyZW5jZWRDb25maWdJdGVtR2V0KAogICAgICAgIFNlY3Rpb24gICAgPT4gJFBhcmFte1NlY3Rpb259LAogICAgICAgIENvbmZpZ0l0ZW0gPT4gJFBhcmFte0NvbmZpZ0l0ZW19LAogICAgKTsKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJFJlZmVyZW5jZWRDb25maWdJdGVtKTsKCiAgICAjIGdldCBkZWZpbml0aW9uIG9mIHJlZmVyZW5jZWQgY29uZmlnIGl0ZW0gYW5kIHBhc3MgaXQgb24gdG8gX1NlY3Rpb25SZW5kZXIKICAgIG15ICRSZWZlcmVuY2VkQ0lEZWZpbml0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkRlZmluaXRpb25HZXQoCiAgICAgICAgRGVmaW5pdGlvbklEID0+ICRSZWZlcmVuY2VkQ29uZmlnSXRlbS0+e0RlZmluaXRpb25JRH0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJFJlZmVyZW5jZWRDSURlZmluaXRpb24tPntEZWZpbml0aW9uSUR9OwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFByZX0gJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17U2VjdGlvbn17RmllbGRMaXN0UHJlfSApICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0ZpZWxkRGlzcGxheVJvdycsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgV2lkdGhzID0+ICcxZnIgMWZyJywKICAgICAgICAgICAgfQogICAgICAgICk7CgogICAgICAgIGZvciBteSAkREZFbnRyeSAoICRQYXJhbXtTZWN0aW9ufXtGaWVsZExpc3RQcmV9LT5AKiApIHsKICAgICAgICAgICAgJFNlbGYtPl9SZW5kZXJERigKICAgICAgICAgICAgICAgIFJvdyAgICAgICAgICAgICAgICAgICAgICAgPT4gJERGRW50cnksCiAgICAgICAgICAgICAgICBDb25maWdJdGVtICAgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gICAgICAgICAgICAgICAgPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPT4gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICRTZWxmLT5fU2VjdGlvblJlbmRlcigKICAgICAgICBDb25maWdJdGVtICAgPT4gJFJlZmVyZW5jZWRDb25maWdJdGVtLAogICAgICAgIERlZmluaXRpb24gICA9PiAkUmVmZXJlbmNlZENJRGVmaW5pdGlvbiwKICAgICAgICBTZWN0aW9uICAgICAgPT4gJFJlZmVyZW5jZWRDSURlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfXtTZWN0aW9uc317ICRQYXJhbXtTZWN0aW9ufXtTZWN0aW9uTmFtZX0gfSwKICAgICAgICBMYXlvdXRPYmplY3QgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICApOwoKICAgIGlmICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFBvc3R9ICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFBvc3R9ICkgKSB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Um93JywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICBXaWR0aHMgPT4gJzFmciAxZnInLAogICAgICAgICAgICB9CiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRERkVudHJ5ICggJFBhcmFte1NlY3Rpb259e0ZpZWxkTGlzdFBvc3R9LT5AKiApIHsKICAgICAgICAgICAgJFNlbGYtPl9SZW5kZXJERigKICAgICAgICAgICAgICAgIFJvdyAgICAgICAgICAgICAgICAgICAgICAgPT4gJERGRW50cnksCiAgICAgICAgICAgICAgICBDb25maWdJdGVtICAgICAgICAgICAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtfSwKICAgICAgICAgICAgICAgIERlZmluaXRpb24gICAgICAgICAgICAgICAgPT4gJFBhcmFte0RlZmluaXRpb259LAogICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPT4gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAxOwp9CgpzdWIgX1JlZmVyZW5jZWRDb25maWdJdGVtR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1zCiAgICByZXR1cm4gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17Q29uZmlnSXRlbX0gKTsKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtTZWN0aW9ufSApOwoKICAgICMgZmV0Y2ggY29uZmlnIG9mIHJlZmVyZW5jZWQgZmllbGQKICAgIG15ICRSZWZlcmVuY2VkRmllbGRDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBOYW1lID0+ICRQYXJhbXtTZWN0aW9ufXtSZWZlcmVuY2VGaWVsZH0sCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJFJlZmVyZW5jZWRGaWVsZENvbmZpZyk7CgogICAgIyBmZXRjaCBjb25maWcgaXRlbSBkZXBlbmRpbmcgb24gZmllbGQgdHlwZQogICAgbXkgJUNvbmZpZ0l0ZW1HZXRQYXJhbXMgPSAoCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKICAgIGlmICggJFJlZmVyZW5jZWRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW0nICkgewogICAgICAgICRDb25maWdJdGVtR2V0UGFyYW1ze0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17Q29uZmlnSXRlbX17IkR5bmFtaWNGaWVsZF8kUmVmZXJlbmNlZEZpZWxkQ29uZmlnLT57TmFtZX0ifVswXTsKICAgIH0KICAgIGVsc2lmICggJFJlZmVyZW5jZWRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ0NvbmZpZ0l0ZW1WZXJzaW9uJyApIHsKICAgICAgICAkQ29uZmlnSXRlbUdldFBhcmFtc3tWZXJzaW9uSUR9ID0gJFBhcmFte0NvbmZpZ0l0ZW19eyJEeW5hbWljRmllbGRfJFJlZmVyZW5jZWRGaWVsZENvbmZpZy0+e05hbWV9In1bMF07CiAgICB9CgogICAgcmV0dXJuIHVubGVzcyAoICRDb25maWdJdGVtR2V0UGFyYW1ze0NvbmZpZ0l0ZW1JRH0gfHwgJENvbmZpZ0l0ZW1HZXRQYXJhbXN7VmVyc2lvbklEfSApOwoKICAgICMgcmV0dXJuIHJlZmVyZW5jZWQgY29uZmlnIGl0ZW0KICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAlQ29uZmlnSXRlbUdldFBhcmFtcywKICAgICk7Cn0KCnN1YiBfUmVuZGVyREYgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gaWYgISRQYXJhbXtSb3d9e0RGfTsKICAgIHJldHVybiBpZiAhZGVmaW5lZCAkUGFyYW17Q29uZmlnSXRlbX17ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtSb3d9e0RGfSB9OwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkUGFyYW17RGVmaW5pdGlvbn17RHluYW1pY0ZpZWxkUmVmfXsgJFBhcmFte1Jvd317REZ9IH07CgogICAgcmV0dXJuIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgIG15ICREaXNwbGF5VmFsdWUgPSAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPkRpc3BsYXlWYWx1ZVJlbmRlcigKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17Um93fXtERn0gfSwKICAgICAgICBMYXlvdXRPYmplY3QgICAgICAgPT4gJFBhcmFte0xheW91dE9iamVjdH0sCiAgICAgICAgSFRNTE91dHB1dCAgICAgICAgID0+IDEsCiAgICApOwoKICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgTGFiZWwgPT4gJFBhcmFte1Jvd317TGFiZWx9IHx8ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgIFR5cGUgID0+ICdMYWJlbCcsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnU2V0JyB8fCAkRHluYW1pY0ZpZWxkLT57RmllbGRUeXBlfSBlcSAnUmljaFRleHQnICkgewogICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmllbGREaXNwbGF5Q2VsbCcsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJERpc3BsYXlWYWx1ZS0+JSosCiAgICAgICAgICAgICAgICBUeXBlID0+ICdGdWxsUm93JywKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgfQogICAgZWxzaWYgKCAkRGlzcGxheVZhbHVlLT57TGlua30gKSB7CiAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdGaWVsZERpc3BsYXlDZWxsJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkLT57TmFtZX0gPT4gJERpc3BsYXlWYWx1ZS0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtfS0+JSosCiAgICAgICAgICAgICAgICAkRGlzcGxheVZhbHVlLT4lKiwKCiAgICAgICAgICAgICAgICAjIEluY2x1ZGUgdW5pcXVlIHBhcmFtZXRlciB3aXRoIGR5bmFtaWMgZmllbGQgbmFtZSBpbiBjYXNlIG9mIGNvbGxpc2lvbiB3aXRoIG90aGVycy4KICAgICAgICAgICAgICAgICMgICBQbGVhc2Ugc2VlIGJ1ZyMxMzM2MiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZC0+e05hbWV9IiA9PiAkRGlzcGxheVZhbHVlLT57VGl0bGV9LAogICAgICAgICAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0+ICdWYWx1ZUxpbmsnLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdBdHRhY2htZW50JyApIHsKICAgICAgICAkUGFyYW17TGF5b3V0T2JqZWN0fS0+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpJVFNNQ29uZmlnSXRlbTo6UHVibGljT3ZlcnZpZXdTbWFsbDsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKCiMgY29yZSBtb2R1bGVzCgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6TGFuZ3VhZ2UnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpKU09OJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OkNvbHVtbkZpbHRlcicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IFwlUGFyYW07CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyBzZXQgcHJlZiBmb3IgY29sdW1ucyBrZXkKICAgICRTZWxmLT57UHJlZktleUNvbHVtbnN9ID0gJ1VzZXJGaWx0ZXJDb2x1bW5zRW5hYmxlZCcgLiAnLScgLiAkU2VsZi0+e0FjdGlvbn0gLiAnLScgLiAkU2VsZi0+e0ZpbHRlcn07CgogICAgIyBsb2FkIGJhY2tlbmQgY29uZmlnCiAgICBteSAkQmFja2VuZENvbmZpZ0tleSA9ICdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OicgLiAkU2VsZi0+e0FjdGlvbn07CiAgICAkU2VsZi0+e0NvbmZpZ30gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJEJhY2tlbmRDb25maWdLZXkpOwoKICAgICMgY2hlY2sgZm9yIGZpbHRlcgogICAgbXkgJEZpbHRlck5hbWUgPSBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfSApID8gJFNlbGYtPntGaWx0ZXJzfS0+eyAkU2VsZi0+e0ZpbHRlcn0gfS0+e05hbWV9IDogJ0FsbCc7CgogICAgIyBnZXQgcGVybWlzc2lvbiBjb25kaXRpb24gZm9yIGZpbHRlcgogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnICA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9ucycpOwogICAgbXkgJFBlcm1pc3Npb25Db25kaXRpb25zQ29sdW1ucyA9ICRDb25maWdPYmplY3QtPkdldCgnUHVibGljOjpDb25maWdJdGVtOjpQZXJtaXNzaW9uQ29uZGl0aW9uQ29sdW1ucycpOwoKICAgICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0gPSBbXTsKICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25zQ29uZmlnKSApIHsKICAgICAgICBQRVJNQ09ORjoKICAgICAgICBmb3IgbXkgJENvbmZpZ0NvdW50ZXIgKCAxIC4uIDUgKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJZGVudGlmaWVyICAgICAgICAgID0gc3ByaW50ZiggIiUwMmQiLCAkQ29uZmlnQ291bnRlciApOwogICAgICAgICAgICBteSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZyA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbmZpZy0+eyRDb25maWdJZGVudGlmaWVyfTsKICAgICAgICAgICAgbmV4dCBQRVJNQ09ORiB1bmxlc3MgSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25Db25maWcpOwoKICAgICAgICAgICAgaWYgKCAkRmlsdGVyTmFtZSBlcSAkUGVybWlzc2lvbkNvbmRpdGlvbkNvbmZpZy0+e05hbWV9ICYmIElzSGFzaFJlZldpdGhEYXRhKCRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbHVtbnMpICkgewogICAgICAgICAgICAgICAgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfSA9ICRQZXJtaXNzaW9uQ29uZGl0aW9uc0NvbHVtbnMtPnskQ29uZmlnSWRlbnRpZmllcn0gLy8gW107CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCAhJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCogJiYgSXNIYXNoUmVmV2l0aERhdGEoJFBlcm1pc3Npb25Db25kaXRpb25zQ29sdW1ucykgKSB7CiAgICAgICAgICAgICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ1B1YmxpYzo6Q29uZmlnSXRlbTo6UGVybWlzc2lvbkNvbmRpdGlvbkNvbHVtbnMnKS0+e0RlZmF1bHR9IC8vIFtdOwogICAgICAgIH0KICAgICAgICAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSA9ICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX07CiAgICB9CgogICAgIyBhbHdheXMgc2V0IGNvbmZpZyBpdGVtIG51bWJlcgogICAgaWYgKCAhZ3JlcCB7ICRfIGVxICdOdW1iZXInIH0gJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0tPkAqICkgewogICAgICAgIHVuc2hpZnQgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0tPkAqLCAnTnVtYmVyJzsKICAgIH0KICAgIGlmICggIWdyZXAgeyAkXyBlcSAnTnVtYmVyJyB9ICRTZWxmLT57Q29sdW1uc0F2YWlsYWJsZX0tPkAqICkgewogICAgICAgIHVuc2hpZnQgJFNlbGYtPntDb2x1bW5zQXZhaWxhYmxlfS0+QCosICdOdW1iZXInOwogICAgfQoKICAgICMgZ2V0IG5lY2Vzc2FyeSBkeW5hbWljIGZpZWxkIG9iamVjdHMKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgIyBjb2xsZWN0IGR5bmFtaWMgZmllbGRzIGFuZCBzZXQgYXZhaWxhYmxlIGFuZCB2YWxpZCBmaWx0ZXIgYW5kIHNvcnRhYmxlIGNvbHVtbnMKICAgIERZTkFNSUNGSUVMRE5BTUU6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZE5hbWUgKCAkU2VsZi0+e0NvbHVtbnNBdmFpbGFibGV9LT5AKiApIHsKCiAgICAgICAgbXkgJEZpZWxkTmFtZTsKICAgICAgICBpZiAoICREeW5hbWljRmllbGROYW1lID1+IG17IER5bmFtaWNGaWVsZF8oPzxGaWVsZE5hbWU+W0EtWmEtejAtOVwtXSspIH14bXMgKSB7CiAgICAgICAgICAgICRGaWVsZE5hbWUgPSAkK3tGaWVsZE5hbWV9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEROQU1FOwogICAgICAgIH0KCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZyA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkRmllbGROYW1lLAogICAgICAgICk7CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKCiAgICAgICAgIyBzdG9yZSBmaWVsZCBjb25maWcKICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntPYmplY3RUeXBlfSBlcSAnSVRTTUNvbmZpZ0l0ZW0nICkgewogICAgICAgICAgICBwdXNoICRTZWxmLT57RHluYW1pY0ZpZWxkfS0+QCosICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgfQoKICAgICAgICAjIGNoZWNrIGZpbHRyYWJsZSBhbmQgc29ydGFibGUgYmVoYXZpb3JzCiAgICAgICAgZm9yIG15ICRCZWhhdmlvciAocXcoRmlsdHJhYmxlIFNvcnRhYmxlKSkgewoKICAgICAgICAgICAgbXkgJEhhc0JlaGF2aW9yID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gIklzJEJlaGF2aW9yIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIGlmICgkSGFzQmVoYXZpb3IpIHsKICAgICAgICAgICAgICAgICRTZWxmLT57IkF2YWlsYWJsZSR7QmVoYXZpb3J9Q29sdW1ucyJ9eyAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBoYXNoIHdpdGggYWxsIHZhbGlkIHNvcnRhYmxlIGNvbHVtbnMgKHRha2VuIGZyb20gSVRTTUNvbmZpZ0l0ZW1TZWFyY2gpCiAgICAjIFNvcnRCeSAgPT4gJ0FnZScsICAgIyBDcmVhdGVkfE51bWJlcnxDaGFuZ2VkfE5hbWV8RGVwbFN0YXRlfEN1ckRlcGxTdGF0ZQogICAgIyB8SW5jaVN0YXRlfEN1ckluY2lTdGF0ZQogICAgJFNlbGYtPntWYWxpZFNvcnRhYmxlQ29sdW1uc30gPSB7CiAgICAgICAgJ0FnZScgICAgICAgICAgPT4gMSwKICAgICAgICAnTnVtYmVyJyAgICAgICA9PiAxLAogICAgICAgICdOYW1lJyAgICAgICAgID0+IDEsCiAgICAgICAgJ0NyZWF0ZWQnICAgICAgPT4gMSwKICAgICAgICAnTGFzdENoYW5nZWQnICA9PiAxLAogICAgICAgICdEZXBsU3RhdGUnICAgID0+IDEsCiAgICAgICAgJ0N1ckRlcGxTdGF0ZScgPT4gMSwKICAgICAgICAnSW5jaVN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJJbmNpU3RhdGUnID0+IDEsCiAgICB9OwoKICAgICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30gPSB7CiAgICAgICAgZGVmaW5lZCAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9CiAgICAgICAgPyAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT4lKgogICAgICAgIDogKCksCiAgICAgICAgJ0NsYXNzJyAgICAgICAgPT4gMSwKICAgICAgICAnRGVwbFN0YXRlJyAgICA9PiAxLAogICAgICAgICdDdXJEZXBsU3RhdGUnID0+IDEsCiAgICAgICAgJ0luY2lTdGF0ZScgICAgPT4gMSwKICAgICAgICAnQ3VySW5jaVN0YXRlJyA9PiAxLAogICAgfTsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCnN1YiBBY3Rpb25Sb3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCBuZWVkZWQgb2JqZWN0cwogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CiAgICBteSAkTGF5b3V0T2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpPdXRwdXQ6OkhUTUw6OkxheW91dCcpOwoKICAgICMgY2hlY2sgaWYgYnVsayBmZWF0dXJlIGlzIGVuYWJsZWQKICAgIG15ICRCdWxrRmVhdHVyZSA9IDA7CiAgICBpZiAoICRQYXJhbXtCdWxrfSAmJiAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmUnKSApIHsKICAgICAgICBteSBAR3JvdXBzOwogICAgICAgIGlmICggJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlR3JvdXAnKSApIHsKICAgICAgICAgICAgQEdyb3VwcyA9IEB7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgfTsKICAgICAgICB9CiAgICAgICAgaWYgKCAhQEdyb3VwcyApIHsKICAgICAgICAgICAgJEJ1bGtGZWF0dXJlID0gMTsKICAgICAgICB9CiAgICB9CgogICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3cnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgaWYgKCRCdWxrRmVhdHVyZSkgewogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdEb2N1bWVudEFjdGlvblJvd0J1bGsnLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGNoZWNrIGlmIHRoZXJlIHdhcyBhIGNvbHVtbiBmaWx0ZXIgYW5kIG5vIHJlc3VsdHMsIGFuZCBwcmludCBhIGxpbmsgdG8gYmFjawogICAgaWYgKCBzY2FsYXIgQHsgJFBhcmFte0NvbmZpZ0l0ZW1JRHN9IH0gPT0gMCAmJiAkUGFyYW17TGFzdENvbHVtbkZpbHRlcn0gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ0RvY3VtZW50QWN0aW9uUm93TGFzdENvbHVtbkZpbHRlcicsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9CgogICAgbXkgJExhbmd1YWdlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpMYW5ndWFnZScpOwoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIHJlZ3VsYXIgY29sdW1ucwogICAgbXkgJENvbHVtbnMgPSAkU2VsZi0+e0NvbmZpZ30tPntEZWZhdWx0Q29sdW1uc30gfHwge307CiAgICBpZiAoICRDb2x1bW5zICYmIElzSGFzaFJlZldpdGhEYXRhKCRDb2x1bW5zKSApIHsKCiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29sdW1uICggc29ydCBrZXlzICV7JENvbHVtbnN9ICkgewoKICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkcyB3aWxsIGJlIHRyYW5zbGF0ZWQgaW4gdGhlIG5leHQgYmxvY2sKICAgICAgICAgICAgbmV4dCBDT0xVTU4gaWYgJENvbHVtbiA9fiBteyBcQSBEeW5hbWljRmllbGRfIH14bXM7CgogICAgICAgICAgICBteSAkVHJhbnNsYXRlZFdvcmQgPSAkQ29sdW1uOwogICAgICAgICAgICBpZiAoICRDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckRlcGxTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VyRGVwbFNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnSW5jaVN0YXRlJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZScgfHwgJENvbHVtbiBlcSAnQ3VySW5jaVNpZ25hbCcgKSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSBUcmFuc2xhdGFibGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0N1ckluY2lTdGF0ZVR5cGUnICkgewogICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gVHJhbnNsYXRhYmxlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoICRDb2x1bW4gZXEgJ0xhc3RDaGFuZ2VkJyApIHsKICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9IFRyYW5zbGF0YWJsZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW4nIC4gJENvbHVtbiwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCRUcmFuc2xhdGVkV29yZCksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHRyYW5zbGF0aW9ucyBmb3IgdGhlIGFsbG9jYXRpb24gbGlzdHMgZm9yIGR5bmFtaWMgZmllbGQgY29sdW1ucwogICAgbXkgJENvbHVtbnNEeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZExpc3RHZXQoCiAgICAgICAgVmFsaWQgICAgICA9PiAwLAogICAgICAgIE9iamVjdFR5cGUgPT4gWydJVFNNQ29uZmlnSXRlbSddLAogICAgKTsKCiAgICBpZiAoICRDb2x1bW5zRHluYW1pY0ZpZWxkICYmIElzQXJyYXlSZWZXaXRoRGF0YSgkQ29sdW1uc0R5bmFtaWNGaWVsZCkgKSB7CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkICggc29ydCBAeyRDb2x1bW5zRHluYW1pY0ZpZWxkfSApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICEkRHluYW1pY0ZpZWxkOwoKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkFkZEpTRGF0YSgKICAgICAgICAgICAgICAgIEtleSAgID0+ICdDb2x1bW5EeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGQtPntOYW1lfSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRMYW5ndWFnZU9iamVjdC0+VHJhbnNsYXRlKCAkRHluYW1pY0ZpZWxkLT57TGFiZWx9ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5PdXRwdXQoCiAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdQdWJsaWNJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGwnLAogICAgICAgIERhdGEgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKCiAgICByZXR1cm4gJE91dHB1dDsKfQoKc3ViIFNvcnRPcmRlckJhciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAnJzsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgSWYgJFBhcmFte0VuYWJsZUNvbHVtbkZpbHRlcnN9IGlzIG5vdCBzZW50LCB3ZSB3YW50IHRvIGRpc2FibGUgYWxsIGZpbHRlcnMKICAgICMgICBmb3IgdGhlIGN1cnJlbnQgc2NyZWVuLiBXZSBsb2NhbGl6ZSB0aGUgc2V0dGluZyBmb3IgdGhpcyBzdWIgYW5kIGNoYW5nZSBpdAogICAgIyAgIGFmdGVyIHRoYXQsIGlmIG5lZWRlZC4gVGhlIG9yaWdpbmFsIHZhbHVlIHdpbGwgYmUgcmVzdG9yZWQgYWZ0ZXIgdGhpcyBmdW5jdGlvbi4KICAgIGxvY2FsICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30gPSAkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9OwogICAgaWYgKCAhJFBhcmFte0VuYWJsZUNvbHVtbkZpbHRlcnN9ICkgewogICAgICAgICRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30gPSB7fTsgICAgIyBkaXNhYmxlIGFsbCBjb2x1bW4gZmlsdGVycwogICAgfQoKICAgIGZvciBteSAkSXRlbSAocXcoQ29uZmlnSXRlbUlEcyBQYWdlU2hvd24gU3RhcnRIaXQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRJdGVtfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEl0ZW0hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlZmluZSBpbmNpZGVudCBzaWduYWxzCiAgICBteSAlSW5jaVNpZ25hbHMgPSAoCiAgICAgICAgVHJhbnNsYXRhYmxlKCdvcGVyYXRpb25hbCcpID0+ICdncmVlbmxlZCcsCiAgICAgICAgVHJhbnNsYXRhYmxlKCd3YXJuaW5nJykgICAgID0+ICd5ZWxsb3dsZWQnLAogICAgICAgIFRyYW5zbGF0YWJsZSgnaW5jaWRlbnQnKSAgICA9PiAncmVkbGVkJywKICAgICk7CgogICAgIyBzdG9yZSBkZXBsb3ltZW50IHNpZ25hbHMKICAgIG15ICVEZXBsU2lnbmFsczsKCiAgICAjIGdldCBnZW5lcmFsIGNhdGFsb2cgb2JqZWN0CiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGdldCBsaXN0IG9mIGRlcGxveW1lbnQgc3RhdGVzCiAgICBteSAkRGVwbG95bWVudFN0YXRlc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgKTsKCiAgICAjIHNldCBkZXBsb3ltZW50IHN0eWxlIGNvbG9ycwogICAgbXkgJFN0eWxlQ2xhc3NlcyA9ICcnOwoKICAgIElURU1JRDoKICAgIGZvciBteSAkSXRlbUlEICggc29ydCBrZXlzICV7JERlcGxveW1lbnRTdGF0ZXNMaXN0fSApIHsKCiAgICAgICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBwcmVmZXJlbmNlcwogICAgICAgIG15ICVHZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5HZW5lcmFsQ2F0YWxvZ1ByZWZlcmVuY2VzR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEl0ZW1JRCwKICAgICAgICApOwoKICAgICAgICAjIGNoZWNrIGlmIGEgY29sb3IgaXMgZGVmaW5lZCBpbiBwcmVmZXJlbmNlcwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc3tDb2xvcn07CiAgICAgICAgbXkgKCRDb2xvcikgPSAkR2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc3tDb2xvcn0tPkAqOwogICAgICAgIG5leHQgSVRFTUlEIHVubGVzcyAkQ29sb3I7CgogICAgICAgICMgZ2V0IGRlcGxveW1lbnQgc3RhdGUKICAgICAgICBteSAkRGVwbFN0YXRlID0gJERlcGxveW1lbnRTdGF0ZXNMaXN0LT57JEl0ZW1JRH07CgogICAgICAgICMgcmVtb3ZlIGFueSBub24gYXNjaWkgd29yZCBjaGFyYWN0ZXJzCiAgICAgICAgJERlcGxTdGF0ZSA9fiBzeyBbXmEtekEtWjAtOV0gfXtffW1zeGc7CgogICAgICAgICMgc3RvcmUgdGhlIG9yaWdpbmFsIGRlcGxveW1lbnQgc3RhdGUgYXMga2V5CiAgICAgICAgIyBhbmQgdGhlIHNzIHNhZmUgY29udmVydGVkIGRlcGxveW1lbnQgc3RhdGUgYXMgdmFsdWUKICAgICAgICAkRGVwbFNpZ25hbHN7ICREZXBsb3ltZW50U3RhdGVzTGlzdC0+eyRJdGVtSUR9IH0gPSAkRGVwbFN0YXRlOwoKICAgICAgICAjIGNvbnZlcnQgdG8gbG93ZXIgY2FzZQogICAgICAgIG15ICREZXBsU3RhdGVDb2xvciA9ICggbGMgJENvbG9yICkgPX4gcy9bXjAtOWEtZl0vL21zZ3I7CgogICAgICAgICMgYWRkIHRvIHN0eWxlIGNsYXNzZXMgc3RyaW5nCiAgICAgICAgJFN0eWxlQ2xhc3NlcyAuPSAiCiAgICAgICAgICAgIC5GbGFnIHNwYW4uJERlcGxTdGF0ZSB7CiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjJERlcGxTdGF0ZUNvbG9yOwogICAgICAgICAgICB9CiAgICAgICAgIjsKICAgIH0KCiAgICAjIHdyYXAgaW50byBzdHlsZSB0YWdzCiAgICBpZiAoJFN0eWxlQ2xhc3NlcykgewogICAgICAgICRTdHlsZUNsYXNzZXMgPSAiPHN0eWxlPiRTdHlsZUNsYXNzZXM8L3N0eWxlPiI7CiAgICB9CgogICAgIyBnZXQgbmVlZGVkIG9iamVjdHMKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICAjIGNoZWNrIGlmIGJ1bGsgZmVhdHVyZSBpcyBlbmFibGVkCiAgICBteSAkQnVsa0ZlYXR1cmUgPSAwOwogICAgaWYgKCAkUGFyYW17QnVsa30gJiYgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6OkJ1bGtGZWF0dXJlJykgKSB7CiAgICAgICAgbXkgQEdyb3VwczsKICAgICAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpCdWxrRmVhdHVyZUdyb3VwJykgKSB7CiAgICAgICAgICAgIEBHcm91cHMgPSBAeyAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QnVsa0ZlYXR1cmVHcm91cCcpIH07CiAgICAgICAgfQogICAgICAgIGlmICggIUBHcm91cHMgKSB7CiAgICAgICAgICAgICRCdWxrRmVhdHVyZSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb3VudGVyID0gMDsKICAgIG15IEBDb25maWdJdGVtQm94OwoKICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBAeyAkUGFyYW17Q29uZmlnSXRlbUlEc30gfSApIHsKICAgICAgICAkQ291bnRlcisrOwogICAgICAgIGlmICggJENvdW50ZXIgPj0gJFBhcmFte1N0YXJ0SGl0fSAmJiAkQ291bnRlciA8ICggJFBhcmFte1BhZ2VTaG93bn0gKyAkUGFyYW17U3RhcnRIaXR9ICkgKSB7CgogICAgICAgICAgICAjIEdldCBjb25maWcgaXRlbSBkYXRhLgogICAgICAgICAgICBteSAkQ29uZmlnSXRlbVJlZiA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAwLAogICAgICAgICAgICApOwogICAgICAgICAgICBteSAlQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtUmVmLT4lKjsKCiAgICAgICAgICAgICMgc2V0IGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHNpZ25hbHMKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFNpZ25hbH0gPSAkRGVwbFNpZ25hbHN7ICRDb25maWdJdGVte0N1ckRlcGxTdGF0ZX0gfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17Q3VySW5jaVNpZ25hbH0gPSAkSW5jaVNpZ25hbHN7ICRDb25maWdJdGVte0N1ckluY2lTdGF0ZVR5cGV9IH07CgogICAgICAgICAgICAjIGZpbGwgY29sdW1uIG5hbWUgYXR0cmlidXRlIHdpdGggY29ycmVzcG9uZGluZyBpdGVtIGF0dHJpYnV0ZQogICAgICAgICAgICAkQ29uZmlnSXRlbXtDcmVhdGVkfSAgICAgPSAkQ29uZmlnSXRlbXtDcmVhdGVUaW1lfTsKICAgICAgICAgICAgJENvbmZpZ0l0ZW17TGFzdENoYW5nZWR9ID0gJENvbmZpZ0l0ZW17Q2hhbmdlVGltZX07CgogICAgICAgICAgICAjIGdldCBBQ0wgcmVzdHJpY3Rpb25zCiAgICAgICAgICAgIG15ICVQb3NzaWJsZUFjdGlvbnM7CiAgICAgICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgICAgICMgZ2V0IGFsbCByZWdpc3RlcmVkIEFjdGlvbnMKICAgICAgICAgICAgaWYgKCByZWYgJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok1vZHVsZScpIGVxICdIQVNIJyApIHsKCiAgICAgICAgICAgICAgICBteSAlQWN0aW9ucyA9ICV7ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpNb2R1bGUnKSB9OwoKICAgICAgICAgICAgICAgICMgb25seSB1c2UgdGhvc2UgQWN0aW9ucyB0aGF0IHN0YXRzIHdpdGggQWdlbnRJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgICAgJVBvc3NpYmxlQWN0aW9ucyA9IG1hcCB7ICsrJENvdW50ZXIgPT4gJF8gfQogICAgICAgICAgICAgICAgICAgIGdyZXAgeyBzdWJzdHIoICRfLCAwLCBsZW5ndGggJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nICkgZXEgJ0FnZW50SVRTTUNvbmZpZ0l0ZW0nIH0KICAgICAgICAgICAgICAgICAgICBzb3J0IGtleXMgJUFjdGlvbnM7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICVBY2xBY3Rpb24gPSAlUG9zc2libGVBY3Rpb25zOwoKICAgICAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUJveCwgXCVDb25maWdJdGVtOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGNvbHVtbnNlbmFibGVkIGlzIGEgZmlsbGVkIGFycmF5IHJlZmVyZW5jZAogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57Q29sdW1uc0VuYWJsZWR9ICkgKSB7CgogICAgICAgICMgY2hlY2sgaWYgY29sdW1uIGlzIHJlYWxseSBmaWx0ZXJhYmxlCiAgICAgICAgQ09MVU1OTkFNRToKICAgICAgICBmb3IgbXkgJENvbHVtbk5hbWUgKCBAeyAkU2VsZi0+e0NvbHVtbnNFbmFibGVkfSB9ICkgewogICAgICAgICAgICBuZXh0IENPTFVNTk5BTUUgaWYgISRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPnskQ29sdW1uTmFtZX07CiAgICAgICAgICAgICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDb2x1bW5WYWx1ZXMgPSAkU2VsZi0+X0dldENvbHVtblZhbHVlcygKICAgICAgICBPcmlnaW5hbENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte09yaWdpbmFsQ29uZmlnSXRlbUlEc30sCiAgICApOwoKICAgICMgc2VuZCBkYXRhIHRvIEpTCiAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgS2V5ICAgPT4gJ0xpbmtQYWdlJywKICAgICAgICBWYWx1ZSA9PiAkUGFyYW17TGlua1BhZ2V9LAogICAgKTsKCiAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICBOYW1lID0+ICdEb2N1bWVudENvbnRlbnQnLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBhcnJheSB0byBzYXZlIHRoZSBjb2x1bW4gbmFtZXMgdG8gZG8gdGhlIHF1ZXJ5CiAgICBteSBAQ29sID0gQHsgJFNlbGYtPntDb2x1bW5zRW5hYmxlZH0gfTsKCiAgICAjIGRlZmluZSBzcGVjaWFsIGNvbmZpZyBpdGVtIGNvbHVtbnMKICAgIG15ICVTcGVjaWFsQ29sdW1ucyA9ICgKICAgICAgICBOdW1iZXIgICAgICAgID0+IDEsCiAgICAgICAgQ3VyRGVwbFNpZ25hbCA9PiAxLAogICAgICAgIEN1ckluY2lTaWduYWwgPT4gMSwKICAgICk7CgogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CgogICAgJFBhcmFte09yZGVyQnl9ID0gJFBhcmFte09yZGVyQnl9IHx8ICdVcCc7CiAgICAkUGFyYW17U29ydEJ5fSAgPSAkUGFyYW17U29ydEJ5fSAgfHwgJ051bWJlcic7CgogICAgbXkgJENvbmZpZ0l0ZW1EYXRhID0gc2NhbGFyIEBDb25maWdJdGVtQm94OwogICAgaWYgKCRDb25maWdJdGVtRGF0YSkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdUYWJsZScsCiAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgU3R5bGVDbGFzc2VzID0+ICRTdHlsZUNsYXNzZXMsCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jayggTmFtZSA9PiAnVGFibGVIZWFkZXInICk7CgogICAgICAgIGlmICgkQnVsa0ZlYXR1cmUpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdIZWFkZXInLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0J1bGtOYXZCYXInLAogICAgICAgICAgICAgICAgRGF0YSA9PiBcJVBhcmFtLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgbXkgJENTUyA9ICcnOwoKICAgICAgICAjIHNob3cgc3BlY2lhbCBjb25maWcgaXRlbSBjb2x1bW5zLCBpZiBuZWVkZWQKICAgICAgICBteSAkQ291bnRlciA9IDA7CiAgICAgICAgQ09MVU1OOgogICAgICAgIGZvciBteSAkQ29sdW1uIChAQ29sKSB7CiAgICAgICAgICAgIG15ICRTdGF0aWNDb2x1bW4gPSAhJENvdW50ZXI7CiAgICAgICAgICAgICRDb3VudGVyKys7CgogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0dlbmVyYWxPdmVydmlld0hlYWRlcicsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAkQ1NTID0gJENvbHVtbiAuICggJFN0YXRpY0NvbHVtbiA/ICcgU3RhdGljQ29sdW1uJyA6ICcnICk7CiAgICAgICAgICAgIG15ICRUaXRsZSAgID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRDb2x1bW4pOwogICAgICAgICAgICBteSAkT3JkZXJCeSA9ICRQYXJhbXtPcmRlckJ5fTsKCiAgICAgICAgICAgICMgVHJhbnNmb3JtIGZpbHRlciBuYW1lIHRvIGNvbHVtbiBuYW1lCiAgICAgICAgICAgIGlmICggJFBhcmFte1NvcnRCeX0gZXEgJ0NoYW5nZWQnICkgewogICAgICAgICAgICAgICAgJFBhcmFte1NvcnRCeX0gPSAnTGFzdENoYW5nZWQnOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG91dHB1dCBvdmVyYWxsIGJsb2NrIHNvIE51bWJlciBhcyB3ZWxsIGFzIG90aGVyIGNvbHVtbnMgY2FuIGJlIG9yZGVyZWQKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb25maWdJdGVtSGVhZGVyJywKICAgICAgICAgICAgICAgIERhdGEgPT4ge30sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoICRTcGVjaWFsQ29sdW1uc3skQ29sdW1ufSApIHsKCiAgICAgICAgICAgICAgICBpZiAoICRQYXJhbXtTb3J0Qnl9ICYmICggJFBhcmFte1NvcnRCeX0gZXEgJENvbHVtbiApICkgewogICAgICAgICAgICAgICAgICAgIG15ICRUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICMgQ2hhbmdlIG9yZGVyIGZvciBzb3J0aW5nIGNvbHVtbi4KICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICRPcmRlckJ5IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRPcmRlckJ5IGVxICdEb3duJyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIFNvcnRBc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgJFRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnc29ydGVkIGRlc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgJFRpdGxlIC49ICcsICcgLiAkVGl0bGVEZXNjOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdHJhbnNsYXRlIHRoZSBjb2x1bW4gbmFtZSB0byB3cml0ZSBpdCBpbiB0aGUgY3VycmVudCBsYW5ndWFnZQogICAgICAgICAgICAgICAgbXkgJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkQ29sdW1uKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkRmlsdGVyVGl0bGUgICAgID0gJFRyYW5zbGF0ZWRXb3JkOwogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIG5vdCBhY3RpdmUnKTsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmCiAgICAgICAgICAgICAgICAgICAgKAogICAgICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JENvbHVtbn0gfHwKICAgICAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9IFRyYW5zbGF0YWJsZSgnZmlsdGVyIGFjdGl2ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZSAuPSAnLCAnIC4gJEZpbHRlclRpdGxlRGVzYzsKCiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICJPdmVydmlld05hdkJhclBhZ2UkQ29sdW1uIiwKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiAgICAgICAgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTICAgICAgICAgICAgfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgaHRtbCBjb2RlCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskQ29sdW1ufSwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyRDb2x1bW59IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXJMaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBmaWx0ZXJhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyAgICAgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgdmVyaWZ5IGlmIGNvbHVtbiBpcyBzb3J0YWJsZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5FbXB0eScsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbmV4dCBDT0xVTU47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uICF+IG17XEEgRHluYW1pY0ZpZWxkX314bXMgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17U29ydEJ5fSAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICRDb2x1bW4gKSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAjIENoYW5nZSBvcmRlciBmb3Igc29ydGluZyBjb2x1bW4uCiAgICAgICAgICAgICAgICAgICAgJE9yZGVyQnkgPSAkT3JkZXJCeSBlcSAnVXAnID8gJ0Rvd24nIDogJ1VwJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0QXNjZW5kaW5nTGFyZ2UnOwogICAgICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdzb3J0ZWQgYXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydERlc2NlbmRpbmdMYXJnZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAkVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSB0aGUgY29sdW1uIG5hbWUgdG8gd3JpdGUgaXQgaW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UKICAgICAgICAgICAgICAgIG15ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIGlmICggJENvbHVtbiBlcSAnRGVwbFN0YXRlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VyRGVwbFN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJEZXBsU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgRGVwbG95bWVudCBTdGF0ZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdDdXJEZXBsU3RhdGVUeXBlJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0RlcGxveW1lbnQgU3RhdGUgVHlwZScpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29sdW1uIGVxICdJbmNpU3RhdGUnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJyB8fCAkQ29sdW1uIGVxICdDdXJJbmNpU2lnbmFsJyApIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJ0N1cnJlbnQgSW5jaWRlbnQgU3RhdGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnQ3VySW5jaVN0YXRlVHlwZScgKSB7CiAgICAgICAgICAgICAgICAgICAgJFRyYW5zbGF0ZWRXb3JkID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCdDdXJyZW50IEluY2lkZW50IFN0YXRlIFR5cGUnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJENvbHVtbiBlcSAnTGFzdENoYW5nZWQnICkgewogICAgICAgICAgICAgICAgICAgICRUcmFuc2xhdGVkV29yZCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgnTGFzdCBjaGFuZ2VkJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkVHJhbnNsYXRlZFdvcmQgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENvbHVtbik7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgbXkgJEZpbHRlclRpdGxlICAgICA9ICRUcmFuc2xhdGVkV29yZDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57U3RvcmVkRmlsdGVyc30gJiYgJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyAkQ29sdW1uIC4gJ0lEcycgfSApIHsKICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgRmlsdGVyQWN0aXZlJzsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gVHJhbnNsYXRhYmxlKCdmaWx0ZXIgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGVEZXNjID0gJExheW91dE9iamVjdC0+e0xhbmd1YWdlT2JqZWN0fS0+VHJhbnNsYXRlKCRGaWx0ZXJUaXRsZURlc2MpOwogICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlIC49ICcsICcgLiAkRmlsdGVyVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbicsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIGZpbHRlcmFibGUgYW5kIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JENvbHVtbn0KICAgICAgICAgICAgICAgICAgICAmJiAkU2VsZi0+e1ZhbGlkU29ydGFibGVDb2x1bW5zfS0+eyRDb2x1bW59CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlQ29sdW1uRmlsdGVyTGluaycsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyAgICAgICAgICAgICAgICAgID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lVHJhbnNsYXRlZCA9PiAkVHJhbnNsYXRlZFdvcmQgfHwgJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgICAgID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgICAgICA9PiAkRmlsdGVyVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHZlcmlmeSBpZiBjb2x1bW4gaXMganVzdCBmaWx0ZXJhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyRDb2x1bW59ICkgewoKICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJENvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JENvbHVtbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskQ29sdW1ufSB8fCAnJywKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VDb2x1bW5GaWx0ZXInLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnICAgICA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVGl0bGUgICAgICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyB2ZXJpZnkgaWYgY29sdW1uIGlzIHNvcnRhYmxlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRTZWxmLT57VmFsaWRTb3J0YWJsZUNvbHVtbnN9LT57JENvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkxpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgICAgICAgID0+ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgICAgICAgICAgICAgICAgICA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZVRyYW5zbGF0ZWQgPT4gJFRyYW5zbGF0ZWRXb3JkIHx8ICRDb2x1bW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUNvbHVtbkVtcHR5JywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgICAgICAgICA9PiAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTICAgICAgICAgICAgICAgICAgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWVUcmFuc2xhdGVkID0+ICRUcmFuc2xhdGVkV29yZCB8fCAkQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2hvdyB0aGUgREZzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRDb25maWc7CiAgICAgICAgICAgICAgICBteSAkREZDb2x1bW4gPSAkQ29sdW1uOwogICAgICAgICAgICAgICAgJERGQ29sdW1uID1+IHMvRHluYW1pY0ZpZWxkXy8vZzsKICAgICAgICAgICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICAgICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJERGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkREZDb25maWctPntOYW1lfSBuZSAkREZDb2x1bW47CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBuZXh0IENPTFVNTiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgbXkgJExhYmVsID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0xhYmVsfTsKICAgICAgICAgICAgICAgICRUaXRsZSA9ICRMYWJlbDsKICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZSA9ICRMYWJlbDsKCiAgICAgICAgICAgICAgICAjIGdldCBmaWVsZCBzb3J0YWJsZSBjb25kaXRpb24KICAgICAgICAgICAgICAgIG15ICRJc1NvcnRhYmxlID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgIEJlaGF2aW9yICAgICAgICAgICA9PiAnSXNTb3J0YWJsZScsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICgkSXNTb3J0YWJsZSkgewogICAgICAgICAgICAgICAgICAgIG15ICRDU1MgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17U29ydEJ5fQogICAgICAgICAgICAgICAgICAgICAgICAmJiAoICRQYXJhbXtTb3J0Qnl9IGVxICggJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ICkgKQogICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkVGl0bGVEZXNjOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBDaGFuZ2Ugb3JkZXIgZm9yIHNvcnRpbmcgY29sdW1uLgogICAgICAgICAgICAgICAgICAgICAgICAkT3JkZXJCeSA9ICRPcmRlckJ5IGVxICdVcCcgPyAnRG93bicgOiAnVXAnOwoKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkT3JkZXJCeSBlcSAnRG93bicgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ1NTIC49ICcgU29ydEFzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBhc2NlbmRpbmcnKTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRDU1MgLj0gJyBTb3J0RGVzY2VuZGluZ0xhcmdlJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ3NvcnRlZCBkZXNjZW5kaW5nJyk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZURlc2MgPSAkTGF5b3V0T2JqZWN0LT57TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJFRpdGxlRGVzYyk7CiAgICAgICAgICAgICAgICAgICAgICAgICRUaXRsZSAuPSAnLCAnIC4gJFRpdGxlRGVzYzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBub3QgYWN0aXZlJyk7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9ICYmICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskQ29sdW1ufSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENTUyAuPSAnIEZpbHRlckFjdGl2ZSc7CiAgICAgICAgICAgICAgICAgICAgICAgICRGaWx0ZXJUaXRsZURlc2MgPSBUcmFuc2xhdGFibGUoJ2ZpbHRlciBhY3RpdmUnKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJEZpbHRlclRpdGxlRGVzYyA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkRmlsdGVyVGl0bGVEZXNjKTsKICAgICAgICAgICAgICAgICAgICAkRmlsdGVyVGl0bGUgLj0gJywgJyAuICRGaWx0ZXJUaXRsZURlc2M7CgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGQnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENTUyA9PiAkQ1NTLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJ0R5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkRmlsdHJhYmxlU29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gJE9yZGVyQnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkTmFtZSA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uRmlsdGVyU3RyZyA9PiAkQ29sdW1uRmlsdGVySFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJUaXRsZSAgICAgID0+ICRGaWx0ZXJUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3JkZXJCeSAgICAgICAgICA9PiAkT3JkZXJCeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSAgICAgICAgICAgID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDU1MgPT4gJENTUywKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57VmFsaWRGaWx0cmFibGVDb2x1bW5zfS0+eyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5GaWx0ZXJIVE1MID0gJFNlbGYtPl9Jbml0aWFsQ29sdW1uRmlsdGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uTmFtZSAgICA9PiAkRHluYW1pY0ZpZWxkTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JER5bmFtaWNGaWVsZE5hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkUGFyYW17R2V0Q29sdW1uRmlsdGVyfS0+eyREeW5hbWljRmllbGROYW1lfSB8fCAnJywKICAgICAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJsZVNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkZpbHRlclN0cmcgPT4gJENvbHVtbkZpbHRlckhUTUwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX1NvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcmRlckJ5ICAgICAgICAgID0+ICRPcmRlckJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICAgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZE5hbWUgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZE5hbWUgPSAnRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX07CiAgICAgICAgICAgICAgICAgICAgbXkgJENTUyAgICAgICAgICAgICAgPSAkRHluYW1pY0ZpZWxkTmFtZTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ1NTID0+ICRDU1MsCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnskRHluYW1pY0ZpZWxkTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIHZhcmlhYmxlIHRvIHNhdmUgdGhlIGZpbHRlcidzIEhUTUwgY29kZQogICAgICAgICAgICAgICAgICAgICAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRTZWxmLT5fSW5pdGlhbENvbHVtbkZpbHRlcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbk5hbWUgICAgPT4gJER5bmFtaWNGaWVsZE5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblZhbHVlcyAgPT4gJENvbHVtblZhbHVlcy0+eyREeW5hbWljRmllbGROYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlbGVjdGVkVmFsdWUgPT4gJFBhcmFte0dldENvbHVtbkZpbHRlcn0tPnskRHluYW1pY0ZpZWxkTmFtZX0gfHwgJycsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUR5bmFtaWNGaWVsZEZpbHRyYWJsZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclRpdGxlICAgICAgPT4gJEZpbHRlclRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkTm90U29ydGFibGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaXRsZSA9PiAkVGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgIyBleGFtcGxlIG9mIGR5bmFtaWMgZmllbGRzIG9yZGVyIGN1c3RvbWl6YXRpb24KICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntWYWxpZEZpbHRyYWJsZUNvbHVtbnN9LT57JER5bmFtaWNGaWVsZE5hbWV9ICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZSB0byBzYXZlIHRoZSBmaWx0ZXIncyBIVE1MIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJENvbHVtbkZpbHRlckhUTUwgPSAkU2VsZi0+X0luaXRpYWxDb2x1bW5GaWx0ZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5OYW1lICAgID0+ICREeW5hbWljRmllbGROYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5WYWx1ZXMgID0+ICRDb2x1bW5WYWx1ZXMtPnskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3RlZFZhbHVlID0+ICRQYXJhbXtHZXRDb2x1bW5GaWx0ZXJ9LT57JER5bmFtaWNGaWVsZE5hbWV9IHx8ICcnLAogICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclBhZ2VEeW5hbWljRmllbGRfJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAnX0ZpbHRyYWJsZU5vdFNvcnRhYmxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgID0+ICRMYWJlbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGROYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5GaWx0ZXJTdHJnID0+ICRDb2x1bW5GaWx0ZXJIVE1MLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgPT4gJFRpdGxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJQYWdlRHluYW1pY0ZpZWxkXycKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJ19Ob3RTb3J0YWJsZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGFiZWwgPT4gJExhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRUaXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKCBOYW1lID0+ICdUYWJsZUJvZHknICk7CgogICAgfQogICAgZWxzZSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soIE5hbWUgPT4gJ05vQ29uZmlnSXRlbUZvdW5kJyApOwogICAgfQoKICAgICMgYmFjayBsaW5rCiAgICBpZiAoICRQYXJhbXtMaW5rQmFja30gKSB7CiAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZpbHRlciBzZWxlY3Rpb24KICAgIGlmICggJFBhcmFte0ZpbHRlcnN9ICkgewoKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVycycsCiAgICAgICAgKTsKCiAgICAgICAgbXkgQE5hdkJhckZpbHRlcnM7CiAgICAgICAgZm9yIG15ICRQcmlvICggc29ydCBrZXlzICV7ICRQYXJhbXtGaWx0ZXJzfSB9ICkgewogICAgICAgICAgICBwdXNoIEBOYXZCYXJGaWx0ZXJzLCAkUGFyYW17RmlsdGVyc30tPnskUHJpb307CiAgICAgICAgfQogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVyJywKICAgICAgICApOwogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRGaWx0ZXIgKEBOYXZCYXJGaWx0ZXJzKSB7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgICAgICBpZiAoICRDb3VudCA9PSBzY2FsYXIgQE5hdkJhckZpbHRlcnMgKSB7CiAgICAgICAgICAgICAgICAkRmlsdGVyLT57Q1NTfSA9ICdMYXN0JzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXJJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAkRmlsdGVyLT57RmlsdGVyfSBlcSAkUGFyYW17RmlsdGVyfSApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1NpZGVCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JEZpbHRlcn0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdTaWRlQmFyRmlsdGVySXRlbVNlbGVjdGVkTm90JywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICAgICAleyRGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGZvciBteSAkQ29uZmlnSXRlbVJlZiAoQENvbmZpZ0l0ZW1Cb3gpIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgIG15ICVDb25maWdJdGVtID0gJXskQ29uZmlnSXRlbVJlZn07CgogICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdSZWNvcmQnLAogICAgICAgICAgICBEYXRhID0+IHslQ29uZmlnSXRlbX0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjaGVjayBpZiBidWxrIGZlYXR1cmUgaXMgZW5hYmxlZAogICAgICAgIGlmICgkQnVsa0ZlYXR1cmUpIHsKICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdHZW5lcmFsT3ZlcnZpZXdSb3cnLAogICAgICAgICAgICApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gVHJhbnNsYXRhYmxlKCdCdWxrJyksCiAgICAgICAgICAgICAgICBEYXRhID0+IHslQ29uZmlnSXRlbX0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkVXNlck9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpVc2VyJyk7CgogICAgICAgICMgc2F2ZSBjb2x1bW4gY29udGVudAogICAgICAgIG15ICREYXRhVmFsdWU7CgogICAgICAgIG15ICRDb3VudGVyID0gMDsKCiAgICAgICAgIyBzaG93IGFsbCBuZWVkZWQgY29sdW1ucwogICAgICAgIENPTkZJR0lURU1DT0xVTU46CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtQ29sdW1uIChAQ29sKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnR2VuZXJhbE92ZXJ2aWV3Um93JywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgbXkgJFN0YXRpY0NvbHVtbiA9ICEkQ291bnRlcjsKICAgICAgICAgICAgJENvdW50ZXIrKzsKCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1Db2x1bW4gIX4gbXtcQSBEeW5hbWljRmllbGRffXhtcyApIHsKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZENvbmZpZ0l0ZW1EYXRhJywKICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHt9LAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICRTcGVjaWFsQ29sdW1uc3skQ29uZmlnSXRlbUNvbHVtbn0gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZCcgLiAkQ29uZmlnSXRlbUNvbHVtbiwKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAlQ29uZmlnSXRlbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY0NvbHVtbiA9PiAkU3RhdGljQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTjsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdDcmVhdGVkQnknICkgewoKICAgICAgICAgICAgICAgICAgICBteSAlQ29uZmlnSXRlbUNyZWF0ZWRCeUluZm8gPSAkVXNlck9iamVjdC0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkQ29uZmlnSXRlbXtDcmVhdGVCeX0sCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZENvbmZpZ0l0ZW1DcmVhdGVkQnknLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICVDb25maWdJdGVtQ3JlYXRlZEJ5SW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXRpY0NvbHVtbiA9PiAkU3RhdGljQ29sdW1uLAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNQ09MVU1OOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICRCbG9ja1R5cGUgPSAnJzsKICAgICAgICAgICAgICAgIG15ICRDU1NDbGFzcyAgPSAkU3RhdGljQ29sdW1uID8gJ1N0YXRpY0NvbHVtbicgOiAnJzsKICAgICAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnRGVwbFN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgICAgICAgICAgICAgfHwgJENvbmZpZ0l0ZW1Db2x1bW4gZXEgJ0luY2lTdGF0ZScKICAgICAgICAgICAgICAgICAgICB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgICAgICAgICAgICAgIHx8ICRDb25maWdJdGVtQ29sdW1uIGVxICdDbGFzcycKICAgICAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgJEJsb2NrVHlwZSA9ICdUcmFuc2xhdGFibGUnOwogICAgICAgICAgICAgICAgICAgICREYXRhVmFsdWUgPSAkQ29uZmlnSXRlbXskQ29uZmlnSXRlbUNvbHVtbn07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoICRDb25maWdJdGVtQ29sdW1uIGVxICdDcmVhdGVkJyB8fCAkQ29uZmlnSXRlbUNvbHVtbiBlcSAnQ2hhbmdlZCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJEJsb2NrVHlwZSA9ICdUaW1lJzsKICAgICAgICAgICAgICAgICAgICAkRGF0YVZhbHVlID0gJENvbmZpZ0l0ZW17JENvbmZpZ0l0ZW1Db2x1bW59OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJERhdGFWYWx1ZSA9ICRDb25maWdJdGVteyRDb25maWdJdGVtQ29sdW1ufTsKCiAgICAgICAgICAgICAgICAgICAgIyBJZiB2YWx1ZSBpcyBpbiBkYXRlIGZvcm1hdCwgY2hhbmdlIGJsb2NrIHR5cGUgdG8gJ1RpbWUnIHNvIGl0IGNhbiBiZSBsb2NhbGl6ZWQuIFNlZSBidWcjMTQ1NDIuCiAgICAgICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVkICREYXRhVmFsdWUKICAgICAgICAgICAgICAgICAgICAgICAgJiYgJERhdGFWYWx1ZSA9fiAvXlxkXGRcZFxkLShcZHxcZFxkKS0oXGR8XGRcZClccyhcZHxcZFxkKTooXGR8XGRcZCk6KFxkfFxkXGQpJC8KICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEJsb2NrVHlwZSA9ICdUaW1lJzsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAiUmVjb3JkQ29uZmlnSXRlbUNvbHVtbiRCbG9ja1R5cGUiLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBHZW5lcmljVmFsdWUgPT4gJERhdGFWYWx1ZSB8fCAnLScsCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAkQ1NTQ2xhc3MgIHx8ICcnLAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgY3ljbGUgdHJvdWdoIHRoZSBhY3RpdmF0ZWQgZHluYW1pYyBmaWVsZHMgZm9yIHRoaXMgc2NyZWVuCiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnOwogICAgICAgICAgICAgICAgbXkgJERGQ29sdW1uID0gJENvbmZpZ0l0ZW1Db2x1bW47CiAgICAgICAgICAgICAgICAkREZDb2x1bW4gPX4gcy9EeW5hbWljRmllbGRfLy9nOwogICAgICAgICAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgICAgICAgICAgZm9yIG15ICRERkNvbmZpZyAoIEB7ICRTZWxmLT57RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICFJc0hhc2hSZWZXaXRoRGF0YSgkREZDb25maWcpOwogICAgICAgICAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRERkNvbHVtbjsKCiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZyA9ICRERkNvbmZpZzsKICAgICAgICAgICAgICAgICAgICBsYXN0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUNPTFVNTiBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgICAgICAgICAgIyBnZXQgZmllbGQgdmFsdWUKICAgICAgICAgICAgICAgIG15ICRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5WYWx1ZUdldCgKICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW17VmVyc2lvbklEfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgbXkgJFZhbHVlU3RyZyA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5EaXNwbGF5VmFsdWVSZW5kZXIoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICBWYWx1ZU1heENoYXJzICAgICAgPT4gMjAsCiAgICAgICAgICAgICAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZExpbmsnLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW5rICAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e0xpbmt9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9ID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdSZWNvcmREeW5hbWljRmllbGRQbGFpbicsCiAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGV4YW1wbGUgb2YgZHluYW1pYyBmaWVsZHMgb3JkZXIgY3VzdG9taXphdGlvbgogICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0sCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZVN0cmctPntWYWx1ZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlID0+ICRWYWx1ZVN0cmctPntUaXRsZX0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgaWYgKCAkVmFsdWVTdHJnLT57TGlua30gKSB7CiAgICAgICAgICAgICAgICAgICAgJExheW91dE9iamVjdC0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ1JlY29yZER5bmFtaWNGaWVsZF8nIC4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9IC4gJ19MaW5rJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgPT4gJFZhbHVlU3RyZy0+e1ZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlICAgICAgICAgICAgICAgICAgICAgICA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGluayAgICAgICAgICAgICAgICAgICAgICAgID0+ICRWYWx1ZVN0cmctPntMaW5rfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSA9PiAkVmFsdWVTdHJnLT57VGl0bGV9LAogICAgICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnUmVjb3JkRHluYW1pY0ZpZWxkXycgLiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TmFtZX0gLiAnX1BsYWluJywKICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkVmFsdWVTdHJnLT57VmFsdWV9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVGl0bGUgPT4gJFZhbHVlU3RyZy0+e1RpdGxlfSwKICAgICAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGFkZCBhY3Rpb24gaXRlbXMgYXMganMKICAgICAgICBpZiAoICRDb25maWdJdGVte0FjdGlvbkl0ZW1zfSApIHsKCiAgICAgICAgICAgICMgcmVwbGFjZSBUVCBkaXJlY3RpdmVzIGZyb20gc3RyaW5nIHdpdGggdmFsdWVzCiAgICAgICAgICAgIGZvciBteSAkQWN0aW9uSXRlbSAoIEB7ICRDb25maWdJdGVte0FjdGlvbkl0ZW1zfSB9ICkgewogICAgICAgICAgICAgICAgJEFjdGlvbkl0ZW0tPntMaW5rfSA9ICRMYXlvdXRPYmplY3QtPk91dHB1dCgKICAgICAgICAgICAgICAgICAgICBUZW1wbGF0ZSA9PiAkQWN0aW9uSXRlbS0+e0xpbmt9LAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgJEFjdGlvblJvd0NvbmZpZ0l0ZW1zeyAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9IH0gPSAkTGF5b3V0T2JqZWN0LT5KU09ORW5jb2RlKCBEYXRhID0+ICRDb25maWdJdGVte0FjdGlvbkl0ZW1zfSApOwogICAgICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgICAgICBLZXkgICA9PiAnSVRTTUNvbmZpZ0l0ZW1BY3Rpb25Sb3cuJyAuICRDb25maWdJdGVte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkQ29uZmlnSXRlbXtBY3Rpb25JdGVtc30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IGNvbHVtbiBmaWx0ZXIgZm9ybSwgdG8gY29ycmVjdGx5IGZpbGwgdGhlIGNvbHVtbiBmaWx0ZXJzIGlzIG5lY2Vzc2FyeSB0byBwYXNzIGVhY2gKICAgICMgICAgb3ZlcnZpZXcgc29tZSBpbmZvcm1hdGlvbiBpbiB0aGUgQUpBWCBjYWxsLCBmb3IgZXhhbXBsZSB0aGUgZml4ZWQgRmlsdGVycyBvciBOYXZCYXJGaWx0ZXJzCiAgICAjICAgIGFuZCBhbHNvIG90aGVyIHZhbHVlcyBsaWtlIHRoZSBRdWV1ZSBpbiBBZ2VudElUU01Db25maWdJdGVtUXVldWUsIG90aGVyd2lzZSB0aGUgZmlsdGVycyB3aWxsIGJlCiAgICAjICAgIGZpbGxlZCB3aXRoIGRlZmF1bHQgcmVzdHJpY3Rpb25zLCByZXN1bHRpbmcgaW4gbW9yZSBvcHRpb25zIHRoYW4gdGhlIG9uZXMgdGhhdCB0aGUKICAgICMgICAgYXZhaWxhYmxlIGNvbmZpZyBpdGVtcyBzaG91bGQgcHJvdmlkZSwgc2VlIEJ1ZyM5OTAyCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17Q29sdW1uRmlsdGVyRm9ybX0gKSApIHsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtJywKICAgICAgICAgICAgRGF0YSA9PiB7fSwKICAgICAgICApOwoKICAgICAgICBmb3IgbXkgJEVsZW1lbnQgKCBzb3J0IGtleXMgJXsgJFBhcmFte0NvbHVtbkZpbHRlckZvcm19IH0gKSB7CiAgICAgICAgICAgICRMYXlvdXRPYmplY3QtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRDb2x1bW5GaWx0ZXJGb3JtRWxlbWVudCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICBFbGVtZW50TmFtZSAgPT4gJEVsZW1lbnQsCiAgICAgICAgICAgICAgICAgICAgRWxlbWVudFZhbHVlID0+ICRQYXJhbXtDb2x1bW5GaWx0ZXJGb3JtfS0+eyRFbGVtZW50fSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdXNlIHRlbXBsYXRlCiAgICBteSAkT3V0cHV0ID0gJExheW91dE9iamVjdC0+T3V0cHV0KAogICAgICAgIFRlbXBsYXRlRmlsZSA9PiAnUHVibGljSVRTTUNvbmZpZ0l0ZW1PdmVydmlld1NtYWxsJywKICAgICAgICBEYXRhICAgICAgICAgPT4gewogICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntWaWV3VHlwZX0sCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuICRPdXRwdXQ7Cn0KCnN1YiBfR2V0Q29sdW1uVmFsdWVzIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJEhlYWRlckNvbHVtbiA9ICRQYXJhbXtIZWFkZXJDb2x1bW59OwoKICAgIHJldHVybiBpZiAhSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0hlYWRlckNvbHVtbn0gKTsKCiAgICBteSAlQ29sdW1uRmlsdGVyVmFsdWVzOwogICAgbXkgJENvbmZpZ0l0ZW1JRHM7CgogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9ICkgKSB7CiAgICAgICAgJENvbmZpZ0l0ZW1JRHMgPSAkUGFyYW17T3JpZ2luYWxDb25maWdJdGVtSURzfTsKICAgIH0KCiAgICByZXR1cm4gXCVDb2x1bW5GaWx0ZXJWYWx1ZXM7Cn0KCnN1YiBfSW5pdGlhbENvbHVtbkZpbHRlciB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0NvbHVtbk5hbWV9OwogICAgcmV0dXJuIGlmICEkU2VsZi0+e1ZhbGlkRmlsdHJhYmxlQ29sdW1uc30tPnsgJFBhcmFte0NvbHVtbk5hbWV9IH07CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkTGFiZWwgPSAkUGFyYW17TGFiZWx9IHx8ICRQYXJhbXtDb2x1bW5OYW1lfTsKICAgICRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkTGFiZWwpOwoKICAgICMgc2V0IGZpeGVkIHZhbHVlcwogICAgbXkgJERhdGEgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnJywKICAgICAgICAgICAgVmFsdWUgPT4gdWMgJExhYmVsLAogICAgICAgIH0sCiAgICBdOwoKICAgICMgZGVmaW5lIGlmIGNvbHVtbiBmaWx0ZXIgdmFsdWVzIHNob3VsZCBiZSB0cmFuc2xhdGFibGUKICAgIG15ICRUcmFuc2xhdGlvbk9wdGlvbiA9IDA7CgogICAgaWYgKAogICAgICAgICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VyRGVwbFN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnSW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ3VySW5jaVN0YXRlJwogICAgICAgIHx8ICRQYXJhbXtDb2x1bW5OYW1lfSBlcSAnQ2xhc3MnCiAgICAgICAgKQogICAgewogICAgICAgICRUcmFuc2xhdGlvbk9wdGlvbiA9IDE7CiAgICB9CgogICAgbXkgJENsYXNzID0gJ0NvbHVtbkZpbHRlcic7CiAgICBpZiAoICRQYXJhbXtDc3N9ICkgewogICAgICAgICRDbGFzcyAuPSAnICcgLiAkUGFyYW17Q3NzfTsKICAgIH0KCiAgICAjIGJ1aWxkIHNlbGVjdCBIVE1MCiAgICBteSAkQ29sdW1uRmlsdGVySFRNTCA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uKAogICAgICAgIE5hbWUgICAgICAgID0+ICdDb2x1bW5GaWx0ZXInIC4gJFBhcmFte0NvbHVtbk5hbWV9LAogICAgICAgIERhdGEgICAgICAgID0+ICREYXRhLAogICAgICAgIENsYXNzICAgICAgID0+ICRDbGFzcywKICAgICAgICBUcmFuc2xhdGlvbiA9PiAkVHJhbnNsYXRpb25PcHRpb24sCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJycsCiAgICApOwogICAgcmV0dXJuICRDb2x1bW5GaWx0ZXJIVE1MOwp9CgpzdWIgRmlsdGVyQ29udGVudCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte0hlYWRlckNvbHVtbn07CgogICAgbXkgJEhlYWRlckNvbHVtbiA9ICRQYXJhbXtIZWFkZXJDb2x1bW59OwoKICAgICMgZ2V0IGNvbHVtbiB2YWx1ZXMgZm9yIHRvIGJ1aWxkIHRoZSBmaWx0ZXJzIGxhdGVyCiAgICBteSAkQ29sdW1uVmFsdWVzID0gJFNlbGYtPl9HZXRDb2x1bW5WYWx1ZXMoCiAgICAgICAgT3JpZ2luYWxDb25maWdJdGVtSURzID0+ICRQYXJhbXtPcmlnaW5hbENvbmZpZ0l0ZW1JRHN9LAogICAgICAgIEhlYWRlckNvbHVtbiAgICAgICAgICA9PiAkSGVhZGVyQ29sdW1uLAogICAgKTsKCiAgICAjIGFwcGx5IHJlc3RyaWN0aW9ucyBmb3IgcHVibGljIHBlcm1pc3Npb24gY29uZGl0aW9ucwogICAgaWYgKCAkSGVhZGVyQ29sdW1uIGVxICdDbGFzcycgJiYgJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgZm9yIG15ICRGaWx0ZXJWYWx1ZSAoIGtleXMgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LT4lKiApIHsKICAgICAgICAgICAgaWYgKCAhZ3JlcCB7ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9IGVxICRfIH0gJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtDbGFzc2VzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59eyRGaWx0ZXJWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBpZiAoICRIZWFkZXJDb2x1bW4gZXEgJ0RlcGxTdGF0ZScgJiYgJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtEZXBsU3RhdGVzfS0+QCogKSB7CiAgICAgICAgZm9yIG15ICRGaWx0ZXJWYWx1ZSAoIGtleXMgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59LT4lKiApIHsKICAgICAgICAgICAgaWYgKCAhZ3JlcCB7ICRDb2x1bW5WYWx1ZXMtPnskSGVhZGVyQ29sdW1ufXskRmlsdGVyVmFsdWV9IGVxICRfIH0gJFBhcmFte0ZpbHRlcnN9LT57ICRQYXJhbXtGaWx0ZXJ9IH17U2VhcmNofXtEZXBsU3RhdGVzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBkZWxldGUgJENvbHVtblZhbHVlcy0+eyRIZWFkZXJDb2x1bW59eyRGaWx0ZXJWYWx1ZX07CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJFNlbGVjdGVkVmFsdWUgID0gJyc7CiAgICBteSAkU2VsZWN0ZWRDb2x1bW4gPSAkSGVhZGVyQ29sdW1uOwogICAgaWYgKCAkSGVhZGVyQ29sdW1uICF+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtcyApIHsKICAgICAgICAkU2VsZWN0ZWRDb2x1bW4gLj0gJ0lEcyc7CiAgICB9CgogICAgbXkgJExhYmVsQ29sdW1uID0gJEhlYWRlckNvbHVtbjsKICAgIGlmICggJExhYmVsQ29sdW1uID1+IG17IFxBIER5bmFtaWNGaWVsZF8gfXhtcyApIHsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAkTGFiZWxDb2x1bW4gPX4gc3tcQSBEeW5hbWljRmllbGRfIH17fXhtczsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkREZDb25maWcgKCBAeyAkU2VsZi0+e0R5bmFtaWNGaWVsZH0gfSApIHsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgaWYgIUlzSGFzaFJlZldpdGhEYXRhKCRERkNvbmZpZyk7CiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICRERkNvbmZpZy0+e05hbWV9IG5lICRMYWJlbENvbHVtbjsKCiAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWcgPSAkREZDb25maWc7CiAgICAgICAgICAgIGxhc3QgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpICkgewogICAgICAgICAgICAkTGFiZWxDb2x1bW4gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57TGFiZWx9OwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRTZWxlY3RlZENvbHVtbiAmJiAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufSApIHsKCiAgICAgICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRTZWxmLT57U3RvcmVkRmlsdGVyc30tPnskU2VsZWN0ZWRDb2x1bW59ICkgKSB7CiAgICAgICAgICAgICRTZWxlY3RlZFZhbHVlID0gJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0tPlswXTsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFNlbGYtPntTdG9yZWRGaWx0ZXJzfS0+eyRTZWxlY3RlZENvbHVtbn0gKSApIHsKICAgICAgICAgICAgJFNlbGVjdGVkVmFsdWUgPSAkU2VsZi0+e1N0b3JlZEZpbHRlcnN9LT57JFNlbGVjdGVkQ29sdW1ufS0+e0VxdWFsc307CiAgICAgICAgfQogICAgfQoKICAgICMgdmFyaWFibGUgdG8gc2F2ZSB0aGUgZmlsdGVyJ3MgSFRNTCBjb2RlCiAgICBteSAkQ29sdW1uRmlsdGVySlNPTiA9ICRTZWxmLT5fQ29sdW1uRmlsdGVySlNPTigKICAgICAgICBDb2x1bW5OYW1lICAgID0+ICRIZWFkZXJDb2x1bW4sCiAgICAgICAgTGFiZWwgICAgICAgICA9PiAkTGFiZWxDb2x1bW4sCiAgICAgICAgQ29sdW1uVmFsdWVzICA9PiAkQ29sdW1uVmFsdWVzLT57JEhlYWRlckNvbHVtbn0sCiAgICAgICAgU2VsZWN0ZWRWYWx1ZSA9PiAkU2VsZWN0ZWRWYWx1ZSwKICAgICk7CgogICAgcmV0dXJuICRDb2x1bW5GaWx0ZXJKU09OOwp9CgojID1oZWFkMiBfQ29sdW1uRmlsdGVySlNPTigpCgojICAgICBjcmVhdGVzIGEgSlNPTiBzZWxlY3QgZmlsdGVyIGZvciBjb2x1bW4gaGVhZGVyCgojICAgICBteSAkQ29sdW1uRmlsdGVySlNPTiA9ICRJVFNNQ29uZmlnSXRlbU92ZXJ2aWV3U21hbGxPYmplY3QtPl9Db2x1bW5GaWx0ZXJKU09OKAojICAgICAgICAgQ29sdW1uTmFtZSA9PiAnUXVldWUnLAojICAgICAgICAgTGFiZWwgICAgICA9PiAnUXVldWUnLAojICAgICAgICAgQ29sdW1uVmFsdWVzID0+IHsKIyAgICAgICAgICAgICAxID0+ICdQb3N0TWFzdGVyJywKIyAgICAgICAgICAgICAyID0+ICdKdW5rJywKIyAgICAgICAgIH0sCiMgICAgICAgICBTZWxlY3RlZFZhbHVlICcxJywKIyAgICAgKTsKCiMgPWN1dAoKc3ViIF9Db2x1bW5GaWx0ZXJKU09OIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgaWYgKAogICAgICAgICEkU2VsZi0+e0F2YWlsYWJsZUZpbHRyYWJsZUNvbHVtbnN9LT57ICRQYXJhbXtDb2x1bW5OYW1lfSB9ICYmCiAgICAgICAgISRTZWxmLT57QXZhaWxhYmxlRmlsdHJhYmxlQ29sdW1uc30tPnsgJFBhcmFte0NvbHVtbk5hbWV9IC4gJ0lEcycgfQogICAgICAgICkKICAgIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgbGF5b3V0IG9iamVjdAogICAgbXkgJExheW91dE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQnKTsKCiAgICBteSAkTGFiZWwgPSAkUGFyYW17TGFiZWx9OwogICAgJExhYmVsID1+IHN7IFxBIER5bmFtaWNGaWVsZF8gfXt9Z3htczsKICAgICRMYWJlbCA9ICRMYXlvdXRPYmplY3QtPntMYW5ndWFnZU9iamVjdH0tPlRyYW5zbGF0ZSgkTGFiZWwpOwoKICAgICMgc2V0IGZpeGVkIHZhbHVlcwogICAgbXkgJERhdGEgPSBbCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnRGVsZXRlRmlsdGVyJywKICAgICAgICAgICAgVmFsdWUgPT4gdWMgJExhYmVsLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnLScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICctJywKICAgICAgICAgICAgRGlzYWJsZWQgPT4gMSwKICAgICAgICB9LAogICAgXTsKCiAgICBpZiAoICRQYXJhbXtDb2x1bW5WYWx1ZXN9ICYmIHJlZiAkUGFyYW17Q29sdW1uVmFsdWVzfSBlcSAnSEFTSCcgKSB7CgogICAgICAgIG15ICVWYWx1ZXMgPSAleyAkUGFyYW17Q29sdW1uVmFsdWVzfSB9OwoKICAgICAgICAjIFNldCBwb3NzaWJsZSB2YWx1ZXMuCiAgICAgICAgZm9yIG15ICRWYWx1ZUtleSAoIHNvcnQgeyBsYyAkVmFsdWVzeyRhfSBjbXAgbGMgJFZhbHVlc3skYn0gfSBrZXlzICVWYWx1ZXMgKSB7CiAgICAgICAgICAgIHB1c2ggQHskRGF0YX0sIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICRWYWx1ZUtleSwKICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZXN7JFZhbHVlS2V5fSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgIyBkZWZpbmUgaWYgY29sdW1uIGZpbHRlciB2YWx1ZXMgc2hvdWxkIGJlIHRyYW5zbGF0YWJsZQogICAgbXkgJFRyYW5zbGF0aW9uT3B0aW9uID0gMDsKCiAgICBpZiAoCiAgICAgICAgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJEZXBsU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDdXJJbmNpU3RhdGUnCiAgICAgICAgfHwgJFBhcmFte0NvbHVtbk5hbWV9IGVxICdDbGFzcycKICAgICAgICApCiAgICB7CiAgICAgICAgJFRyYW5zbGF0aW9uT3B0aW9uID0gMTsKICAgIH0KCiAgICAjIGJ1aWxkIHNlbGVjdCBIVE1MCiAgICBteSAkSlNPTiA9ICRMYXlvdXRPYmplY3QtPkJ1aWxkU2VsZWN0aW9uSlNPTigKICAgICAgICBbCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJyAuICRQYXJhbXtDb2x1bW5OYW1lfSwKICAgICAgICAgICAgICAgIERhdGEgICAgICAgICA9PiAkRGF0YSwKICAgICAgICAgICAgICAgIENsYXNzICAgICAgICA9PiAnQ29sdW1uRmlsdGVyJywKICAgICAgICAgICAgICAgIFNvcnQgICAgICAgICA9PiAnQWxwaGFudW1lcmljS2V5JywKICAgICAgICAgICAgICAgIFRyZWVWaWV3ICAgICA9PiAxLAogICAgICAgICAgICAgICAgU2VsZWN0ZWRJRCAgID0+ICRQYXJhbXtTZWxlY3RlZFZhbHVlfSwKICAgICAgICAgICAgICAgIFRyYW5zbGF0aW9uICA9PiAkVHJhbnNsYXRpb25PcHRpb24sCiAgICAgICAgICAgICAgICBBdXRvQ29tcGxldGUgPT4gJ29mZicsCiAgICAgICAgICAgIH0sCiAgICAgICAgXSwKICAgICk7CgogICAgcmV0dXJuICRKU09OOwp9CgpzdWIgX0RlZmF1bHRDb2x1bW5Tb3J0IHsKCiAgICBteSAlRGVmYXVsdENvbHVtbnMgPSAoCiAgICAgICAgQ3VyRGVwbFNpZ25hbCA9PiAxMTAsCiAgICAgICAgQ3VySW5jaVNpZ25hbCA9PiAxMTEsCiAgICAgICAgQ2xhc3MgICAgICAgICA9PiAxMTIsCiAgICAgICAgTnVtYmVyICAgICAgICA9PiAxMTMsCiAgICAgICAgTmFtZSAgICAgICAgICA9PiAxMTQsCiAgICAgICAgQ3VyRGVwbFN0YXRlICA9PiAxMTUsCiAgICAgICAgQ3VySW5jaVN0YXRlICA9PiAxMTYsCiAgICAgICAgTGFzdENoYW5nZWQgICA9PiAxMTcsCiAgICApOwoKICAgICMgZHluYW1pYyBmaWVsZHMgY2FuIG5vdCBiZSBvbiB0aGUgRGVmYXVsdENvbHVtbnMgc29ydGluZyBoYXNoCiAgICAjIHdoZW4gY29tcGFyaW5nIDIgZHluYW1pYyBmaWVsZHMgc29ydGluZyBtdXN0IGJlIGFscGhhYmV0aWNhbAogICAgaWYgKCAhJERlZmF1bHRDb2x1bW5zeyRhfSAmJiAhJERlZmF1bHRDb2x1bW5zeyRifSApIHsKICAgICAgICByZXR1cm4gJGEgY21wICRiOwogICAgfQoKICAgICMgd2hlbiBhIGR5bmFtaWMgZmllbGQgaXMgY29tcGFyZWQgdG8gYSBjb25maWcgaXRlbSBhdHRyaWJ1dGUgaXQgbXVzdCBiZSBoaWdoZXIKICAgIGVsc2lmICggISREZWZhdWx0Q29sdW1uc3skYX0gKSB7CiAgICAgICAgcmV0dXJuIDE7CiAgICB9CgogICAgIyB3aGVuIGEgY29uZmlnIGl0ZW0gYXR0cmlidXRlIGlzIGNvbXBhcmVkIHRvIGEgZHluYW1pYyBmaWVsZCBpdCBtdXN0IGJlIGxvd2VyCiAgICBlbHNpZiAoICEkRGVmYXVsdENvbHVtbnN7JGJ9ICkgewogICAgICAgIHJldHVybiAtMTsKICAgIH0KCiAgICAjIG90aGVyd2lzZSBkbyBhIG51bWVyaWNhbCBjb21wYXJpc29uIHdpdGggdGhlIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZXMKICAgIHJldHVybiAkRGVmYXVsdENvbHVtbnN7JGF9IDw9PiAkRGVmYXVsdENvbHVtbnN7JGJ9Owp9CgoxOwo=</File>
        <File Location="Kernel/Output/HTML/Layout/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6T3V0cHV0OjpIVE1MOjpMYXlvdXQ6OklUU01Db25maWdJdGVtIC0gYWxsIENvbmZpZ0l0ZW0tcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIERFU0NSSVBUSU9OCgpBbGwgSVRTTSBDb25maWd1cmF0aW9uIE1hbmFnZW1lbnQtcmVsYXRlZCBIVE1MIGZ1bmN0aW9ucwoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBJVFNNQ29uZmlnSXRlbU91dHB1dFN0cmluZ0NyZWF0ZSgpCgpyZXR1cm5zIGFuIG91dHB1dCBzdHJpbmcKCiAgICBteSAkU3RyaW5nID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1PdXRwdXRTdHJpbmdDcmVhdGUoCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gID0+ICRJdGVtUmVmLAogICAgICAgIFByaW50ID0+IDEsICAgICAgICAjIChvcHRpb25hbCwgZGVmYXVsdCAwKQogICAgKTsKCj1jdXQKCnN1YiBJVFNNQ29uZmlnSXRlbU91dHB1dFN0cmluZ0NyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBpZiAoICEkUGFyYW17SXRlbX0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIEl0ZW0hJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkU2VsZi0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9LAogICAgKTsKCiAgICByZXR1cm4gJycgaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgZ2VuZXJhdGUgb3V0cHV0IHN0cmluZwogICAgbXkgJFN0cmluZyA9ICRCYWNrZW5kT2JqZWN0LT5PdXRwdXRTdHJpbmdDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtRm9ybURhdGFHZXQoKQoKcmV0dXJucyB0aGUgdmFsdWVzIGZyb20gdGhlIGh0bWwgZm9ybSBhcyBoYXNoIHJlZmVyZW5jZQoKICAgIG15ICRGb3JtRGF0YVJlZiA9ICRMYXlvdXRPYmplY3QtPklUU01Db25maWdJdGVtRm9ybURhdGFHZXQoCiAgICAgICAgS2V5ICAgICAgICAgID0+ICdJdGVtOjoxOjpOb2RlOjozJywKICAgICAgICBJdGVtICAgICAgICAgPT4gJEl0ZW1SZWYsCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1Gb3JtRGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSBDb25maWdJdGVtSUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuIHt9IGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRGb3JtRGF0YSA9ICRCYWNrZW5kT2JqZWN0LT5Gb3JtRGF0YUdldCglUGFyYW0pOwoKICAgIHJldHVybiAkRm9ybURhdGE7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbUlucHV0Q3JlYXRlKCkKCnJldHVybnMgYSBpbnB1dCBmaWVsZCBodG1sIHN0cmluZwoKICAgIG15ICRTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUlucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgVmFsdWUgPT4gMTEsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKQogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtSW5wdXRDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuICcnIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGxvb2t1cCBpdGVtIHZhbHVlCiAgICBteSAkU3RyaW5nID0gJEJhY2tlbmRPYmplY3QtPklucHV0Q3JlYXRlKCVQYXJhbSk7CgogICAgcmV0dXJuICRTdHJpbmc7Cn0KCj1oZWFkMiBJVFNNQ29uZmlnSXRlbVNlYXJjaEZvcm1EYXRhR2V0KCkKCnJldHVybnMgdGhlIHZhbHVlcyBmcm9tIHRoZSBzZWFyY2ggaHRtbCBmb3JtCgogICAgbXkgJEFycmF5UmVmID0gJExheW91dE9iamVjdC0+SVRTTUNvbmZpZ0l0ZW1TZWFyY2hGb3JtRGF0YUdldCgKICAgICAgICBLZXkgPT4gJ0l0ZW06OjE6Ok5vZGU6OjMnLAogICAgICAgIEl0ZW0gPT4gJEl0ZW1SZWYsCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtU2VhcmNoRm9ybURhdGFHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICRBcmd1bWVudCAocXcoS2V5IEl0ZW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBsb2FkIGJhY2tlbmQKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJFNlbGYtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAkUGFyYW17SXRlbX0tPntJbnB1dH0tPntUeXBlfSwKICAgICk7CgogICAgcmV0dXJuIFtdIGlmICEkQmFja2VuZE9iamVjdDsKCiAgICAjIGdldCBmb3JtIGRhdGEKICAgIG15ICRWYWx1ZXMgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoRm9ybURhdGFHZXQoJVBhcmFtKTsKCiAgICByZXR1cm4gJFZhbHVlczsKfQoKPWhlYWQyIElUU01Db25maWdJdGVtU2VhcmNoSW5wdXRDcmVhdGUoKQoKcmV0dXJucyBhIHNlYXJjaCBpbnB1dCBmaWVsZCBodG1sIHN0cmluZwoKICAgIG15ICRTdHJpbmcgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbVNlYXJjaElucHV0Q3JlYXRlKAogICAgICAgIEtleSA9PiAnSXRlbTo6MTo6Tm9kZTo6MycsCiAgICAgICAgSXRlbSA9PiAkSXRlbVJlZiwKICAgICk7Cgo9Y3V0CgpzdWIgSVRTTUNvbmZpZ0l0ZW1TZWFyY2hJbnB1dENyZWF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhLZXkgSXRlbSkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGxvYWQgYmFja2VuZAogICAgbXkgJEJhY2tlbmRPYmplY3QgPSAkU2VsZi0+X0lUU01Mb2FkTGF5b3V0QmFja2VuZCgKICAgICAgICBUeXBlID0+ICRQYXJhbXtJdGVtfS0+e0lucHV0fS0+e1R5cGV9LAogICAgKTsKCiAgICByZXR1cm4gJycgaWYgISRCYWNrZW5kT2JqZWN0OwoKICAgICMgbG9va3VwIGl0ZW0gdmFsdWUKICAgIG15ICRTdHJpbmcgPSAkQmFja2VuZE9iamVjdC0+U2VhcmNoSW5wdXRDcmVhdGUoJVBhcmFtKTsKCiAgICByZXR1cm4gJFN0cmluZzsKfQoKPWhlYWQyIF9JVFNNTG9hZExheW91dEJhY2tlbmQoKQoKbG9hZCBhIGlucHV0IHR5cGUgYmFja2VuZCBtb2R1bGUKCiAgICAkQmFja2VuZE9iamVjdCA9ICRMYXlvdXRPYmplY3QtPl9JVFNNTG9hZExheW91dEJhY2tlbmQoCiAgICAgICAgVHlwZSA9PiAnR2VuZXJhbENhdGFsb2cnLAogICAgKTsKCj1jdXQKCnN1YiBfSVRTTUxvYWRMYXlvdXRCYWNrZW5kIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgbG9nIG9iamVjdAogICAgbXkgJExvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKTsKCiAgICBpZiAoICEkUGFyYW17VHlwZX0gKSB7CiAgICAgICAgJExvZ09iamVjdC0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBUeXBlIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJEdlbmVyaWNNb2R1bGUgPSAiS2VybmVsOjpPdXRwdXQ6OkhUTUw6OklUU01Db25maWdJdGVtOjpMYXlvdXQkUGFyYW17VHlwZX0iOwoKICAgICMgbG9hZCB0aGUgYmFja2VuZCBtb2R1bGUKICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoJEdlbmVyaWNNb2R1bGUpICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgYmFja2VuZCBtb2R1bGUgJFBhcmFte1R5cGV9ISIKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNyZWF0ZSBuZXcgaW5zdGFuY2UKICAgIG15ICRCYWNrZW5kT2JqZWN0ID0gJEdlbmVyaWNNb2R1bGUtPm5ldygKICAgICAgICAleyRTZWxmfSwKICAgICAgICAlUGFyYW0sCiAgICAgICAgTGF5b3V0T2JqZWN0ID0+ICRTZWxmLAogICAgKTsKCiAgICBpZiAoICEkQmFja2VuZE9iamVjdCApIHsKICAgICAgICAkTG9nT2JqZWN0LT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDYW4ndCBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgYmFja2VuZCBtb2R1bGUgJFBhcmFte1R5cGV9ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRCYWNrZW5kT2JqZWN0Owp9Cgo9aGVhZDIgSVRTTUNvbmZpZ0l0ZW1MaXN0U2hvdygpCgpSZXR1cm5zIGEgbGlzdCBvZiBjb25maWd1cmF0aW9uIGl0ZW1zIHdpdGggc29ydCBhbmQgcGFnaW5hdGlvbiBjYXBhYmlsaXRpZXMuCgpUaGlzIGZ1bmN0aW9uIGlzIHNpbWlsYXIgdG8gTDxLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0VGlja2V0OjpUaWNrZXRMaXN0U2hvdygpPgppbiBGPEtlcm5lbC9PdXRwdXQvSFRNTC9MYXlvdXRUaWNrZXQucG0+LgoKICAgIG15ICRPdXRwdXQgPSAkTGF5b3V0T2JqZWN0LT5JVFNNQ29uZmlnSXRlbUxpc3RTaG93KAogICAgICAgIENvbmZpZ0l0ZW1JRHMgPT4gJENvbmZpZ0l0ZW1JRHNSZWYsICAgICAgICAgICAgICAgICAgIyB0b3RhbCBsaXN0IG9mIGNvbmZpZyBpdGVtIGlkcywgdGhhdCBjYW4gYmUgbGlzdGVkCiAgICAgICAgVG90YWwgICAgICAgICA9PiBzY2FsYXIgQHsgJENvbmZpZ0l0ZW1JRHNSZWYgfSwgICAgICAjIHRvdGFsIG51bWJlciBvZiBsaXN0IGl0ZW1zLCBjb25maWcgaXRlbXMgaW4gdGhpcyBjYXNlCiAgICAgICAgVmlldyAgICAgICAgICA9PiAkU2VsZi0+e1ZpZXd9LCAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyAnU21hbGwnCiAgICAgICAgRmlsdGVyICAgICAgICA9PiAnQWxsJywKICAgICAgICBGaWx0ZXJzICAgICAgID0+IFwlTmF2QmFyRmlsdGVyLAogICAgICAgIEZpbHRlckxpbmsgICAgPT4gJExpbmtGaWx0ZXIsCiAgICAgICAgVGl0bGVOYW1lICAgICA9PiAnT3ZlcnZpZXc6IENvbmZpZyBJdGVtOiBDb21wdXRlcicsCiAgICAgICAgVGl0bGVWYWx1ZSAgICA9PiAkU2VsZi0+e0ZpbHRlcn0sCiAgICAgICAgRW52ICAgICAgICAgICA9PiAkU2VsZiwKICAgICAgICBMaW5rUGFnZSAgICAgID0+ICRMaW5rUGFnZSwKICAgICAgICBMaW5rU29ydCAgICAgID0+ICRMaW5rU29ydCwKICAgICAgICBGcm9udGVuZCAgICAgID0+ICdBZ2VudCcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCAoQWdlbnR8Q3VzdG9tZXIpLCBkZWZhdWx0OiBBZ2VudCwgaW5kaWNhdGVzIGZyb20gd2hpY2ggZnJvbnRlbmQgdGhpcyBmdW5jdGlvbiB3YXMgY2FsbGVkCiAgICApOwoKPWN1dAoKc3ViIElUU01Db25maWdJdGVtTGlzdFNob3cgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHNldCBmcm9udGVuZCBwZXIgZGVmYXVsdCB0byBhZ2VudAogICAgJFBhcmFte0Zyb250ZW5kfSAvLz0gJ0FnZW50JzsKCiAgICAjIHRha2Ugb2JqZWN0IHJlZiB0byBsb2NhbCwgcmVtb3ZlIGl0IGZyb20gJVBhcmFtIChwcmV2ZW50IG1lbW9yeSBsZWFrKQogICAgbXkgJEVudiA9IGRlbGV0ZSAkUGFyYW17RW52fTsKCiAgICAjIGxvb2t1cCBsYXRlc3QgdXNlZCB2aWV3IG1vZGUKICAgIGlmICggISRQYXJhbXtWaWV3fSAmJiAkU2VsZi0+eyAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfSApIHsKICAgICAgICAkUGFyYW17Vmlld30gPSAkU2VsZi0+eyAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0gfTsKICAgIH0KCiAgICAjIHNldCBkZWZhdWx0IHZpZXcgbW9kZSB0byAnc21hbGwnCiAgICBteSAkVmlldyA9ICRQYXJhbXtWaWV3fSB8fCAnU21hbGwnOwoKICAgICMgc3RvcmUgbGF0ZXN0IHZpZXcgbW9kZQogICAgaWYgKCAkUGFyYW17RnJvbnRlbmR9IG5lICdQdWJsaWMnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpBdXRoU2Vzc2lvbicpLT5VcGRhdGVTZXNzaW9uSUQoCiAgICAgICAgICAgIFNlc3Npb25JRCA9PiAkU2VsZi0+e1Nlc3Npb25JRH0sCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnVXNlcklUU01Db25maWdJdGVtT3ZlcnZpZXcnIC4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkVmlldywKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBvYmplY3QKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgICMgdXBkYXRlIHByZWZlcmVuY2VzIGlmIG5lZWRlZAogICAgbXkgJEtleSA9ICdVc2VySVRTTUNvbmZpZ0l0ZW1PdmVydmlldycgLiAkRW52LT57QWN0aW9ufTsKICAgIGlmICggJFBhcmFte0Zyb250ZW5kfSBuZSAnQ3VzdG9tZXInICkgewogICAgICAgIGlmICggISRDb25maWdPYmplY3QtPkdldCgnRGVtb1N5c3RlbScpICYmICggJFNlbGYtPnskS2V5fSAvLyAnJyApIG5lICRWaWV3ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5TZXRQcmVmZXJlbmNlcygKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkU2VsZi0+e1VzZXJJRH0sCiAgICAgICAgICAgICAgICBLZXkgICAgPT4gJEtleSwKICAgICAgICAgICAgICAgIFZhbHVlICA9PiAkVmlldywKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYmFja2VuZCBmcm9tIGNvbmZpZwogICAgbXkgJEJhY2tlbmRzOwogICAgaWYgKCAkUGFyYW17RnJvbnRlbmR9IGVxICdBZ2VudCcgKSB7CiAgICAgICAgJEJhY2tlbmRzID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbTo6RnJvbnRlbmQ6Ok92ZXJ2aWV3Jyk7CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtGcm9udGVuZH0gZXEgJ0N1c3RvbWVyJyApIHsKICAgICAgICAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6Q3VzdG9tZXJPdmVydmlldycpOwogICAgfQogICAgZWxzZSB7CiAgICAgICAgIyBwdWJsaWMgZnJvbnRlbmQKICAgICAgICAkQmFja2VuZHMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6UHVibGljT3ZlcnZpZXcnKTsKICAgIH0KCiAgICBpZiAoICEkQmFja2VuZHMgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdOZWVkIGNvbmZpZyBvcHRpb24gSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpPdmVydmlldycsCiAgICAgICAgKTsKICAgIH0KICAgIGlmICggcmVmICRCYWNrZW5kcyBuZSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuICRTZWxmLT5GYXRhbEVycm9yKAogICAgICAgICAgICBNZXNzYWdlID0+ICdDb25maWcgb3B0aW9uIElUU01Db25maWdJdGVtOjpGcm9udGVuZDo6T3ZlcnZpZXcgbmVlZHMgdG8gYmUgSEFTSCByZWYhJywKICAgICAgICApOwogICAgfQoKICAgICMgY2hlY2sgaWYgc2VsZWN0ZWQgdmlldyBpcyBhdmFpbGFibGUKICAgIGlmICggISRCYWNrZW5kcy0+eyRWaWV3fSApIHsKCiAgICAgICAgIyB0cnkgdG8gZmluZCBmYWxsYmFjaywgdGFrZSBmaXJzdCBjb25maWd1cmVkIHZpZXcgbW9kZQogICAgICAgIEtFWToKICAgICAgICBmb3IgbXkgJEtleSAoIHNvcnQga2V5cyAleyRCYWNrZW5kc30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBDb25maWcgb3B0aW9uIGZvdW5kIGZvciB2aWV3IG1vZGUgJFZpZXcsIHRvb2sgJEtleSBpbnN0ZWFkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRWaWV3ID0gJEtleTsKICAgICAgICAgICAgbGFzdCBLRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxheW91dCBvYmplY3QKICAgIG15ICRMYXlvdXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6Ok91dHB1dDo6SFRNTDo6TGF5b3V0Jyk7CgogICAgJExheW91dE9iamVjdC0+QWRkSlNEYXRhKAogICAgICAgIEtleSAgID0+ICdWaWV3JywKICAgICAgICBWYWx1ZSA9PiAkVmlldywKICAgICk7CgogICAgIyBsb2FkIG92ZXJ2aWV3IGJhY2tlbmQgbW9kdWxlCiAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCAkQmFja2VuZHMtPnskVmlld30tPntNb2R1bGV9ICkgKSB7CiAgICAgICAgcmV0dXJuICRFbnYtPntMYXlvdXRPYmplY3R9LT5GYXRhbEVycm9yKCk7CiAgICB9CiAgICBteSAkT2JqZWN0ID0gJEJhY2tlbmRzLT57JFZpZXd9LT57TW9kdWxlfS0+bmV3KCAleyRFbnZ9ICk7CiAgICByZXR1cm4gaWYgISRPYmplY3Q7CgogICAgIyByZXRyaWV2ZSBmaWx0ZXIgdmFsdWVzCiAgICBpZiAoICRQYXJhbXtGaWx0ZXJDb250ZW50T25seX0gKSB7CiAgICAgICAgcmV0dXJuICRPYmplY3QtPkZpbHRlckNvbnRlbnQoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICApOwogICAgfQoKICAgICMgcnVuIGFjdGlvbiByb3cgYmFja2VuZCBtb2R1bGUKICAgICRQYXJhbXtBY3Rpb25Sb3d9ID0gJE9iamVjdC0+QWN0aW9uUm93KAogICAgICAgICVQYXJhbSwKICAgICAgICBDb25maWcgPT4gJEJhY2tlbmRzLT57JFZpZXd9LAogICAgKTsKCiAgICAjIHJ1biBvdmVydmlldyBiYWNrZW5kIG1vZHVsZQogICAgJFBhcmFte1NvcnRPcmRlckJhcn0gPSAkT2JqZWN0LT5Tb3J0T3JkZXJCYXIoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbmZpZyA9PiAkQmFja2VuZHMtPnskVmlld30sCiAgICApOwoKICAgICMgY2hlY2sgc3RhcnQgb3B0aW9uLCBpZiBoaWdoZXIgdGhlbiB0aWNrZXRzIGF2YWlsYWJsZSwgc2V0CiAgICAjIGl0IHRvIHRoZSBsYXN0IHRpY2tldCBwYWdlIChUaGFua3MgdG8gU3RlZmFuIFNjaG1pZHQhKQogICAgbXkgJFN0YXJ0SGl0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcpLT5HZXRQYXJhbSggUGFyYW0gPT4gJ1N0YXJ0SGl0JyApIHx8IDE7CgogICAgIyBnZXQgcGVyc29uYWwgcGFnZSBzaG93biBjb3VudAogICAgbXkgJFBhZ2VTaG93blByZWZlcmVuY2VzS2V5ID0gJ1VzZXJDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFZpZXcgLiAnUGFnZVNob3duJzsKICAgIG15ICRQYWdlU2hvd24gICAgICAgICAgICAgICA9ICRTZWxmLT57JFBhZ2VTaG93blByZWZlcmVuY2VzS2V5fSB8fCAxMDsKICAgIG15ICRHcm91cCAgICAgICAgICAgICAgICAgICA9ICdDb25maWdJdGVtT3ZlcnZpZXcnIC4gJFZpZXcgLiAnUGFnZVNob3duJzsKCiAgICAjIGdldCBkYXRhIHNlbGVjdGlvbgogICAgbXkgJURhdGE7CiAgICBteSAkQ29uZmlnID0gJENvbmZpZ09iamVjdC0+R2V0KCdQcmVmZXJlbmNlc0dyb3VwcycpOwogICAgaWYgKCAkQ29uZmlnICYmICRDb25maWctPnskR3JvdXB9ICYmICRDb25maWctPnskR3JvdXB9LT57RGF0YX0gKSB7CiAgICAgICAgJURhdGEgPSAleyAkQ29uZmlnLT57JEdyb3VwfS0+e0RhdGF9IH07CiAgICB9CgogICAgIyBjYWxjdWxhdGUgbWF4LiBzaG93biBwZXIgcGFnZQogICAgaWYgKCAkU3RhcnRIaXQgPiAkUGFyYW17VG90YWx9ICkgewogICAgICAgIG15ICRQYWdlcyA9IGludCggKCAkUGFyYW17VG90YWx9IC8gJFBhZ2VTaG93biApICsgMC45OTk5OSApOwogICAgICAgICRTdGFydEhpdCA9ICggKCAkUGFnZXMgLSAxICkgKiAkUGFnZVNob3duICkgKyAxOwogICAgfQoKICAgICMgYnVpbGQgbmF2IGJhcgogICAgbXkgJExpbWl0ICAgPSAkUGFyYW17TGltaXR9IHx8IDIwXzAwMDsKICAgIG15ICVQYWdlTmF2ID0gJFNlbGYtPlBhZ2VOYXZCYXIoCiAgICAgICAgTGltaXQgICAgID0+ICRMaW1pdCwKICAgICAgICBTdGFydEhpdCAgPT4gJFN0YXJ0SGl0LAogICAgICAgIFBhZ2VTaG93biA9PiAkUGFnZVNob3duLAogICAgICAgIEFsbEhpdHMgICA9PiAkUGFyYW17VG90YWx9IHx8IDAsCiAgICAgICAgQWN0aW9uICAgID0+ICdBY3Rpb249JyAuICRTZWxmLT57QWN0aW9ufSwKICAgICAgICBMaW5rICAgICAgPT4gJFBhcmFte0xpbmtQYWdlfSwKICAgICAgICBJRFByZWZpeCAgPT4gJFNlbGYtPntBY3Rpb259LAogICAgKTsKCiAgICAjIGJ1aWxkIHNob3duIHRpY2tldCBwZXIgcGFnZQogICAgJFBhcmFte1JlcXVlc3RlZFVSTH0gICAgPSAkUGFyYW17UmVxdWVzdGVkVVJMfSB8fCAiQWN0aW9uPSRTZWxmLT57QWN0aW9ufTskUGFyYW17TGlua1BhZ2V9IjsKICAgICRQYXJhbXtHcm91cH0gICAgICAgICAgID0gJEdyb3VwOwogICAgJFBhcmFte1ByZWZlcmVuY2VzS2V5fSAgPSAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXk7CiAgICAkUGFyYW17UGFnZVNob3duU3RyaW5nfSA9ICRTZWxmLT5CdWlsZFNlbGVjdGlvbigKICAgICAgICBOYW1lICAgICAgICA9PiAkUGFnZVNob3duUHJlZmVyZW5jZXNLZXksCiAgICAgICAgU2VsZWN0ZWRJRCAgPT4gJFBhZ2VTaG93biwKICAgICAgICBEYXRhICAgICAgICA9PiBcJURhdGEsCiAgICAgICAgVHJhbnNsYXRpb24gPT4gMCwKICAgICAgICBTb3J0ICAgICAgICA9PiAnTnVtZXJpY1ZhbHVlJywKICAgICAgICBDbGFzcyAgICAgICA9PiAnTW9kZXJuaXplJywKICAgICk7CgogICAgIyBuYXYgYmFyIGF0IHRoZSBiZWdpbm5pbmcgb2YgYSBvdmVydmlldwogICAgJFBhcmFte1ZpZXd9ID0gJFZpZXc7CiAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXInLAogICAgICAgIERhdGEgPT4gXCVQYXJhbSwKICAgICk7CgogICAgIyBiYWNrIGxpbmsKICAgIGlmICggJFBhcmFte0xpbmtCYWNrfSApIHsKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZUJhY2snLAogICAgICAgICAgICBEYXRhID0+IFwlUGFyYW0sCiAgICAgICAgKTsKICAgICAgICAkTGF5b3V0T2JqZWN0LT5BZGRKU0RhdGEoCiAgICAgICAgICAgIEtleSAgID0+ICdJVFNNQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIFZhbHVlID0+IHsKICAgICAgICAgICAgICAgIFByb2ZpbGUgPT4gJFBhcmFte1Byb2ZpbGV9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGZpbHRlciBzZWxlY3Rpb24KICAgIGlmICggJFBhcmFte0NhdGVnb3J5RmlsdGVyc30gKSB7CiAgICAgICAgbXkgQE5hdkJhckZpbHRlcnM7CiAgICAgICAgZm9yIG15ICRQcmlvICggc29ydCB7ICRhIDw9PiAkYiB9IGtleXMgJXsgJFBhcmFte0NhdGVnb3J5RmlsdGVyc30gfSApIHsKICAgICAgICAgICAgcHVzaCBATmF2QmFyRmlsdGVycywgJFBhcmFte0NhdGVnb3J5RmlsdGVyc30tPnskUHJpb307CiAgICAgICAgfQogICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXInLAogICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgIG15ICRDb3VudCA9IDA7CiAgICAgICAgZm9yIG15ICRDYXRlZ29yeUZpbHRlciAoQE5hdkJhckZpbHRlcnMpIHsKICAgICAgICAgICAgJENvdW50Kys7CiAgICAgICAgICAgIGlmICggJENvdW50ID09IHNjYWxhciBATmF2QmFyRmlsdGVycyApIHsKICAgICAgICAgICAgICAgICRDYXRlZ29yeUZpbHRlci0+e0NTU30gPSAnTGFzdCc7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAleyRDYXRlZ29yeUZpbHRlcn0sCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICRQYXJhbXtDYXRlZ29yeUZpbHRlcn0gJiYgJENhdGVnb3J5RmlsdGVyLT57Q2F0ZWdvcnlGaWx0ZXJ9IGVxICRQYXJhbXtDYXRlZ29yeUZpbHRlcn0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnT3ZlcnZpZXdOYXZCYXJGaWx0ZXJJdGVtU2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgICAgICV7JENhdGVnb3J5RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhckZpbHRlckl0ZW1TZWxlY3RlZE5vdCcsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgICAgICAgICAgJXskQ2F0ZWdvcnlGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgdmlldyBtb2RlCiAgICBmb3IgbXkgJEJhY2tlbmQgKAogICAgICAgIHNvcnQgeyAkQmFja2VuZHMtPnskYX0tPntNb2R1bGVQcmlvcml0eX0gPD0+ICRCYWNrZW5kcy0+eyRifS0+e01vZHVsZVByaW9yaXR5fSB9CiAgICAgICAga2V5cyAleyRCYWNrZW5kc30KICAgICAgICApCiAgICB7CiAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlJywKICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAleyAkQmFja2VuZHMtPnskQmFja2VuZH0gfSwKICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgfSwKICAgICAgICApOwogICAgICAgIGlmICggJFZpZXcgZXEgJEJhY2tlbmQgKSB7CiAgICAgICAgICAgICRTZWxmLT5CbG9jaygKICAgICAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyVmlld01vZGVTZWxlY3RlZCcsCiAgICAgICAgICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgJXsgJEJhY2tlbmRzLT57JEJhY2tlbmR9IH0sCiAgICAgICAgICAgICAgICAgICAgRmlsdGVyID0+ICRQYXJhbXtGaWx0ZXJ9LAogICAgICAgICAgICAgICAgICAgIFZpZXcgICA9PiAkQmFja2VuZCwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdPdmVydmlld05hdkJhclZpZXdNb2RlTm90U2VsZWN0ZWQnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgICAgICV7ICRCYWNrZW5kcy0+eyRCYWNrZW5kfSB9LAogICAgICAgICAgICAgICAgICAgIEZpbHRlciA9PiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICBWaWV3ICAgPT4gJEJhY2tlbmQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoJVBhZ2VOYXYpIHsKICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgIE5hbWUgPT4gJ092ZXJ2aWV3TmF2QmFyUGFnZU5hdkJhcicsCiAgICAgICAgICAgIERhdGEgPT4gXCVQYWdlTmF2LAogICAgICAgICk7CgogICAgICAgICMgZG9uJ3Qgc2hvdyBjb250ZXh0IHNldHRpbmdzIGluIEFKQVggY2FzZSAoZS4gZy4gaW4gY3VzdG9tZXIgdGlja2V0IGhpc3RvcnkpLAogICAgICAgICMgICBiZWNhdXNlIHRoZSBzdWJtaXQgd2l0aCBwYWdlIHJlbG9hZCB3aWxsIG5vdCB3b3JrIHRoZXJlCiAgICAgICAgaWYgKCAhJFBhcmFte0FKQVh9ICkgewogICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICBOYW1lID0+ICdDb250ZXh0U2V0dGluZ3MnLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgJVBhZ2VOYXYsCiAgICAgICAgICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgc2hvdyBjb2x1bW4gZmlsdGVyIHByZWZlcmVuY2VzCiAgICAgICAgICAgIGlmICggJFZpZXcgZXEgJ1NtYWxsJyApIHsKCiAgICAgICAgICAgICAgICAjIHNldCBwcmVmZXJlbmNlcyBrZXlzCiAgICAgICAgICAgICAgICBteSAkUHJlZktleUNvbHVtbnMgPSAnVXNlckZpbHRlckNvbHVtbnNFbmFibGVkJyAuICctJyAuICRFbnYtPntBY3Rpb259IC4gJy0nIC4gJFBhcmFte0ZpbHRlcn07CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgZXh0cmEgbmVlZGVkIG9iamVjdHMKICAgICAgICAgICAgICAgIG15ICRKU09OT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkpTT04nKTsKCiAgICAgICAgICAgICAgICAjIGNvbmZpZ3VyZSBjb2x1bW5zCiAgICAgICAgICAgICAgICBteSBAQ29sdW1uc0VuYWJsZWQgPSBAeyAkT2JqZWN0LT57Q29sdW1uc0VuYWJsZWR9IH07CiAgICAgICAgICAgICAgICBteSBAQ29sdW1uc0F2YWlsYWJsZTsKCiAgICAgICAgICAgICAgICAjIHJlbW92ZSBkdXBsaWNhdGUgY29sdW1ucwogICAgICAgICAgICAgICAgbXkgJVVuaXF1ZUNvbHVtbnM7CiAgICAgICAgICAgICAgICBteSBAQ29sdW1uc0VuYWJsZWRBdXg7CgogICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW4gKEBDb2x1bW5zRW5hYmxlZCkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRVbmlxdWVDb2x1bW5zeyRDb2x1bW59ICkgewogICAgICAgICAgICAgICAgICAgICAgICBwdXNoIEBDb2x1bW5zRW5hYmxlZEF1eCwgJENvbHVtbjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgJFVuaXF1ZUNvbHVtbnN7JENvbHVtbn0gPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgc2V0IGZpbHRlcmVkIGNvbHVtbiBsaXN0CiAgICAgICAgICAgICAgICBAQ29sdW1uc0VuYWJsZWQgPSBAQ29sdW1uc0VuYWJsZWRBdXg7CgogICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCB7ICRhIGNtcCAkYiB9IEB7ICRPYmplY3QtPntDb2x1bW5zQXZhaWxhYmxlfSB9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggIWdyZXAgeyAkXyBlcSAkQ29sdW1uTmFtZSB9IEBDb2x1bW5zRW5hYmxlZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgcHVzaCBAQ29sdW1uc0F2YWlsYWJsZSwgJENvbHVtbk5hbWU7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIG15ICVDb2x1bW5zOwogICAgICAgICAgICAgICAgZm9yIG15ICRDb2x1bW5OYW1lICggc29ydCBAQ29sdW1uc0F2YWlsYWJsZSApIHsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uc3tDb2x1bW5zfS0+eyRDb2x1bW5OYW1lfSA9ICggZ3JlcCB7ICRDb2x1bW5OYW1lIGVxICRfIH0gQENvbHVtbnNFbmFibGVkICkgPyAxIDogMDsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAkU2VsZi0+QmxvY2soCiAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAnRmlsdGVyQ29sdW1uU2V0dGluZ3MnLAogICAgICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5zICAgICAgICAgID0+ICRKU09OT2JqZWN0LT5FbmNvZGUoIERhdGEgPT4gXCVDb2x1bW5zICksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnNFbmFibGVkICAgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcQENvbHVtbnNFbmFibGVkICksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbnNBdmFpbGFibGUgPT4gJEpTT05PYmplY3QtPkVuY29kZSggRGF0YSA9PiBcQENvbHVtbnNBdmFpbGFibGUgKSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZVByZWYgICAgICAgICA9PiAkUHJlZktleUNvbHVtbnMsCiAgICAgICAgICAgICAgICAgICAgICAgIERlc2MgICAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdTaG93biBDb2x1bW5zJyksCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgPT4gJEVudi0+e0FjdGlvbn0sCiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlckFjdGlvbiAgICAgPT4gJEVudi0+e0FjdGlvbn0gLiAnLScgLiAkUGFyYW17RmlsdGVyfSwKICAgICAgICAgICAgICAgICAgICAgICAgVmlldyAgICAgICAgICAgICA9PiAkVmlldywKICAgICAgICAgICAgICAgICAgICAgICAgR3JvdXBOYW1lICAgICAgICA9PiAnQ29uZmlnSXRlbU92ZXJ2aWV3RmlsdGVyU2V0dGluZ3MnLAogICAgICAgICAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9ICAgICMgZW5kIHNob3cgY29sdW1uIGZpbHRlcnMgcHJlZmVyZW5jZXMKCiAgICAgICAgIyBjaGVjayBpZiB0aGVyZSB3YXMgc3RvcmVkIGZpbHRlcnMsIGFuZCBwcmludCBhIGxpbmsgdG8gZGVsZXRlIHRoZW0KICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkT2JqZWN0LT57U3RvcmVkRmlsdGVyc30gKSApIHsKICAgICAgICAgICAgJFNlbGYtPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAnRG9jdW1lbnRBY3Rpb25Sb3dSZW1vdmVDb2x1bW5GaWx0ZXJzJywKICAgICAgICAgICAgICAgIERhdGEgPT4gewogICAgICAgICAgICAgICAgICAgIENTUyA9PiAiQ29udGV4dFNldHRpbmdzIFJlbW92ZUZpbHRlcnMiLAogICAgICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIG5hdiBiYXIgYW5kIHJ1biBvdmVydmlldyBiYWNrZW5kIG1vZHVsZQogICAgbXkgJE5hdkJhckhUTUwgPSAnJzsKCiAgICBpZiAoICRQYXJhbXtGcm9udGVuZH0gbmUgJ0N1c3RvbWVyJyAmJiAkUGFyYW17RnJvbnRlbmR9IG5lICdQdWJsaWMnICkgewogICAgICAgICROYXZCYXJIVE1MID0gJFNlbGYtPk91dHB1dCgKICAgICAgICAgICAgVGVtcGxhdGVGaWxlID0+ICdBZ2VudElUU01Db25maWdJdGVtT3ZlcnZpZXdOYXZCYXInLAogICAgICAgICAgICBEYXRhICAgICAgICAgPT4geyAlUGFyYW0sIH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gam9pbiAnJywKICAgICAgICAkTmF2QmFySFRNTCwKICAgICAgICAkT2JqZWN0LT5SdW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQ2F0ZWdvcnlDbGFzc2VzID0+ICRFbnYtPntDYXRlZ29yeUNsYXNzZXN9LAogICAgICAgICAgICBDb25maWcgICAgICAgICAgPT4gJEJhY2tlbmRzLT57JFZpZXd9LAogICAgICAgICAgICBMaW1pdCAgICAgICAgICAgPT4gJExpbWl0LAogICAgICAgICAgICBTdGFydEhpdCAgICAgICAgPT4gJFN0YXJ0SGl0LAogICAgICAgICAgICBQYWdlU2hvd24gICAgICAgPT4gJFBhZ2VTaG93biwKICAgICAgICAgICAgQWxsSGl0cyAgICAgICAgID0+ICRQYXJhbXtUb3RhbH0gIHx8IDAsCiAgICAgICAgICAgIE91dHB1dCAgICAgICAgICA9PiAkUGFyYW17T3V0cHV0fSB8fCAnJywKICAgICAgICApOwp9Cgo9aGVhZDIgWE1MRGF0YTJIYXNoKCkKCnJldHVybnMgYSBoYXNoIHJlZmVyZW5jZSB3aXRoIHRoZSByZXF1ZXN0ZWQgYXR0cmlidXRlcyBkYXRhIGZvciBhIGNvbmZpZyBpdGVtCgpSZXR1cm4KCiAgICAkRGF0YSA9IHsKICAgICAgICAnSGFyZERpc2s6OjInID0+IHsKICAgICAgICAgICAgVmFsdWUgPT4gJ0hEMicsCiAgICAgICAgICAgIE5hbWUgID0+ICdIYXJkIERpc2snLAogICAgICAgICB9LAogICAgICAgICdDUFU6OjEnID0+IHsKICAgICAgICAgICAgVmFsdWUgPT4gJycsCiAgICAgICAgICAgIE5hbWUgID0+ICdDUFUnLAogICAgICAgIH0sCiAgICAgICAgJ0hhcmREaXNrOjoyOjpDYXBhY2l0eTo6MScgPT4gewogICAgICAgICAgICBWYWx1ZSA9PiAnNzgwIEdCJywKICAgICAgICAgICAgTmFtZSAgPT4gJ0NhcGFjaXR5JywKICAgICAgICB9LAogICAgfTsKCiAgICBteSAkRGF0YSA9ICRMYXlvdXRPYmplY3QtPlhNTERhdGEySGFzaCgKICAgICAgICBYTUxEZWZpbml0aW9uID0+ICRWZXJzaW9uLT57WE1MRGVmaW5pdGlvbn0sCiAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkVmVyc2lvbi0+e1hNTERhdGF9LT5bMV0tPntWZXJzaW9ufS0+WzFdLAogICAgICAgIEF0dHJpYnV0ZXMgICAgPT4gWydDUFU6OjEnLCAnSGFyZERyaXZlOjoyOjpDYXBhY2l0eTo6MScsIC4uLl0sCiAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJURhdGFIYXNoUmVmLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBQcmVmaXggICAgICAgID0+ICdIYXJkRGlzazo6MScsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbAogICAgKTsKCj1jdXQKCnN1YiBYTUxEYXRhMkhhc2ggewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIGlmICEkUGFyYW17WE1MRGF0YX07CiAgICByZXR1cm4gaWYgISRQYXJhbXtYTUxEZWZpbml0aW9ufTsKICAgIHJldHVybiBpZiAhJFBhcmFte0F0dHJpYnV0ZXN9OwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGF0YX0gbmUgJ0hBU0gnOwogICAgcmV0dXJuIGlmIHJlZiAkUGFyYW17WE1MRGVmaW5pdGlvbn0gbmUgJ0FSUkFZJzsKICAgIHJldHVybiBpZiByZWYgJFBhcmFte0F0dHJpYnV0ZXN9IG5lICdBUlJBWSc7CgogICAgIyB0byBzdG9yZSB0aGUgcmV0dXJuIGRhdGEKICAgIG15ICREYXRhID0gJFBhcmFte0RhdGF9IHx8IHt9OwoKICAgICMgY3JlYXRlIGEgbG9va3VwIHN0cnVjdHVyZQogICAgbXkgJVJlbGV2YW50QXR0cmlidXRlcyA9IG1hcCB7ICRfID0+IDEgfSBAeyAkUGFyYW17QXR0cmlidXRlc30gfTsKCiAgICBJVEVNOgogICAgZm9yIG15ICRJdGVtICggQHsgJFBhcmFte1hNTERlZmluaXRpb259IH0gKSB7CgogICAgICAgIG15ICRDb3VudE1heCA9ICRJdGVtLT57Q291bnRNYXh9IHx8IDE7CgogICAgICAgIENPVU5URVI6CiAgICAgICAgZm9yIG15ICRDb3VudGVyICggMSAuLiAkQ291bnRNYXggKSB7CgogICAgICAgICAgICAjIGFkZCBwcmVmaXgKICAgICAgICAgICAgbXkgJFByZWZpeCA9ICRJdGVtLT57S2V5fSAuICc6OicgLiAkQ291bnRlcjsKICAgICAgICAgICAgaWYgKCAkUGFyYW17UHJlZml4fSApIHsKICAgICAgICAgICAgICAgICRQcmVmaXggPSAkUGFyYW17UHJlZml4fSAuICc6OicgLiAkUHJlZml4OwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIHNraXAgbm90IG5lZWRlZCBlbGVtZW50cyBhbmQgc3ViIGVsZW1lbnRzCiAgICAgICAgICAgIG5leHQgQ09VTlRFUiBpZiAhZ3JlcCB7ICRfID1+IG17XEEkUHJlZml4fSB9IEB7ICRQYXJhbXtBdHRyaWJ1dGVzfSB9OwoKICAgICAgICAgICAgIyBsb29rdXAgdmFsdWUKICAgICAgICAgICAgbXkgJFZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlhNTFZhbHVlTG9va3VwKAogICAgICAgICAgICAgICAgSXRlbSAgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0tPntDb250ZW50fSAvLyAnJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb25seSBpZiB2YWx1ZSBpcyBkZWZpbmVkCiAgICAgICAgICAgIGlmICggZGVmaW5lZCAkVmFsdWUgKSB7CgogICAgICAgICAgICAgICAgIyBjcmVhdGUgb3V0cHV0IHN0cmluZwogICAgICAgICAgICAgICAgJFZhbHVlID0gJFNlbGYtPklUU01Db25maWdJdGVtT3V0cHV0U3RyaW5nQ3JlYXRlKAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSwKICAgICAgICAgICAgICAgICAgICBJdGVtICA9PiAkSXRlbSwKICAgICAgICAgICAgICAgICAgICBQcmludCA9PiAkUGFyYW17UHJpbnR9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkUmVsZXZhbnRBdHRyaWJ1dGVzeyRQcmVmaXh9ICkgewoKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlIGl0ZW0gaW4gaGFzaAogICAgICAgICAgICAgICAgJERhdGEtPnskUHJlZml4fSA9IHsKICAgICAgICAgICAgICAgICAgICBOYW1lICA9PiAkSXRlbS0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlID0+ICRWYWx1ZSAvLyAnJywKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3RhcnQgcmVjdXJzaW9uLCBpZiAiU3ViIiB3YXMgZm91bmQKICAgICAgICAgICAgaWYgKCAkSXRlbS0+e1N1Yn0gKSB7CiAgICAgICAgICAgICAgICAkRGF0YSA9ICRTZWxmLT5YTUxEYXRhMkhhc2goCiAgICAgICAgICAgICAgICAgICAgWE1MRGVmaW5pdGlvbiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICAgICAgICAgWE1MRGF0YSAgICAgICA9PiAkUGFyYW17WE1MRGF0YX0tPnsgJEl0ZW0tPntLZXl9IH0tPlskQ291bnRlcl0sCiAgICAgICAgICAgICAgICAgICAgUHJlZml4ICAgICAgICA9PiAkUHJlZml4LAogICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gJERhdGEsCiAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlcyAgICA9PiAkUGFyYW17QXR0cmlidXRlc30sCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAkRGF0YTsKfQoKMTsK</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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+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+CiAgICAgICAgICAgICAgICBbJSBEYXRhLkF0dHJpYnV0ZXNTdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWwgZm9yPSJQcmV2aW91c1ZlcnNpb25TZWFyY2giPlslIFRyYW5zbGF0ZSgiQWxzbyBzZWFyY2ggaW4gcHJldmlvdXMgdmVyc2lvbnM/IikgfCBodG1sICVdPC9sYWJlbD4KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGQiPgogICAgICAgICAgICAgICAgWyUgRGF0YS5QcmV2aW91c1ZlcnNpb25PcHRpb25TdHJnICVdCiAgICAgICAgICAgIDwvZGl2PgoKICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICA8bGFiZWw+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZSgiQ29uZmlnSXRlbSBTZWFyY2giKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPUN1c3RvbWVySVRTTUNvbmZpZ0l0ZW1TZWFyY2g7RmlsdGVyPTE7Vmlldz1TbWFsbDtTb3J0Qnk9QWdlO09yZGVyQnk9VXAiIHRpdGxlPSJbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXSIgYWNjZXNza2V5PSJbJSBEYXRhLkFjY2Vzc0tleSB8IGh0bWwgJV0iPjxidXR0b24+PHNwYW4+IFslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdPC9zcGFuPjwvYnV0dG9uPjwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaEJveCIpICVdCiAgICA8L2Rpdj4KICAgIDxkaXYgaWQ9J29vb01haW5Cb3gnPgogICAgICAgIDxkaXYgaWQ9Im9vb0lUU01Db25maWdJdGVtTGlzdEhlYWRlciI+ClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hGb3JtIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJvb29JVFNNQ29uZmlnSXRlbVNlYXJjaCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0lUU01Db25maWdJdGVtU2VhcmNoRm9ybSI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZWFyY2hEaWFsb2ciIHZhbHVlPScxJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBlcm1pc3Npb25Db25kaXRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlBlcm1pc3Npb25Db25kaXRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQZXJtaXNzaW9uQ29uZGl0aW9uIj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGVybWlzc2lvbkNvbmRpdGlvbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DbGFzc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNsYXNzSURzIj5bJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3MiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTnVtYmVyIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+WyUgVHJhbnNsYXRlKCJOdW1iZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk5hbWUiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmFtZSI+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbFN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DdXJEZXBsU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZXBsU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlcGxTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2lTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbmNpU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiSW5jaWRlbnQgU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2lTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaEFjdGlvbiIgdHlwZT0ic3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hGb3JtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VhcmNoUmVzdWx0IikgJV0KICAgICAgICBbJSBEYXRhLklUU01Db25maWdJdGVtTGlzdEhUTUwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaFJlc3VsdCIpICVdCiAgICA8L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQojIyBub2ZpbHRlcihUaWR5QWxsOjpQbHVnaW46Ok9UT0JPOjpUVDo6U2NyaXB0VXNhZ2UpCjxkaXYgY2xhc3M9Im9vb0NvbnRlbnRHcmlkIiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOlslIERhdGEuV2lkdGhzIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkNvbnRlbnRDZWxsIikgJV0KICAgIDxkaXYgY2xhc3M9Im9vb0NvbnRlbnRDZWxsIFslIERhdGEuVHlwZSB8IGh0bWwgJV1fQ2VsbCIgc3R5bGU9IlslIERhdGEuR3JpZEFyZWEgfCBodG1sICVdIj4KWyUgUmVuZGVyQmxvY2tTdGFydCgiSGVhZGVyUm93IikgJV0KICAgICAgICA8aDIgdGl0bGU9IlslIFRyYW5zbGF0ZShEYXRhLkhlYWRlcikgfCBodG1sICVdIj5bJSBUcmFuc2xhdGUoRGF0YS5IZWFkZXIpIHwgaHRtbCAlXTwvaDI+ClslIFJlbmRlckJsb2NrRW5kKCJIZWFkZXJSb3ciKSAlXQogICAgICAgIDxkaXYgY2xhc3M9IkNlbGxDb250ZW50Ij4KWyUgUmVuZGVyQmxvY2tTdGFydCgiRmllbGREaXNwbGF5Um93IikgJV0KICAgICAgICAgICAgPGRpdiBjbGFzcz0iRmllbGREaXNwbGF5Um93IiBzdHlsZT0iZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOlslIERhdGEuV2lkdGhzIHwgaHRtbCAlXSI+ClslIFJlbmRlckJsb2NrU3RhcnQoIkZpZWxkRGlzcGxheUNlbGwiKSAlXQpbJSBJRiBEYXRhLlR5cGUgPT0gJ0xhYmVsJyAlXQogICAgICAgICAgICAgICAgPGxhYmVsIFslIElGIERhdGEuQ1NTQ2xhc3MgJV1jbGFzcz0iWyUgRGF0YS5DU1NDbGFzcyB8IGh0bWwgJV0iIFslIEVORCAlXXRpdGxlPSJbJSBUcmFuc2xhdGUoRGF0YS5MYWJlbCkgfCBodG1sICVdIiBzdHlsZT0iWyUgRGF0YS5HcmlkQ29sdW1tIHwgaHRtbCAlXSI+WyUgVHJhbnNsYXRlKERhdGEuTGFiZWwpIHwgaHRtbCAlXTwvbGFiZWw+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWUnICVdCiAgICAgICAgICAgICAgICA8cCB0aXRsZT0iWyUgRGF0YS5UaXRsZSAlXSIgc3R5bGU9IlslIERhdGEuR3JpZENvbHVtbiB8IGh0bWwgJV0iPlslIERhdGEuVmFsdWUgJV08L3A+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWVMaW5rJyAlXQogICAgICAgICAgICAgICAgPHAgdGl0bGU9IlslIERhdGEuVGl0bGUgJV0iIHN0eWxlPSJbJSBEYXRhLkdyaWRDb2x1bW4gfCBodG1sICVdIj48YSBocmVmPSJbJSBEYXRhLkxpbmsgfCBJbnRlcnBvbGF0ZSAlXSJbJSBJRiBEYXRhLkxpbmtQcmV2aWV3ICVdIGRhdGEtdHJpZ2dlcj0iZmxvYXRlciIgZGF0YS1mbG9hdGVyLXVybD0iWyUgRGF0YS5MaW5rUHJldmlldyB8IEludGVycG9sYXRlICVdIlslIEVORCAlXSBjbGFzcz0iRHluYW1pY0ZpZWxkTGluayI+WyUgRGF0YS5WYWx1ZSAlXTwvYT48L3A+ClslIEVMU0lGIERhdGEuVHlwZSA9PSAnVmFsdWVSYXcnICVdCiAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJbJSBEYXRhLkdyaWRDb2x1bW4gfCBodG1sICVdIj5bJSBEYXRhLlZhbHVlICVdPC9kaXY+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjQgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmRlLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgo8ZGl2IGlkPSdvb29Db250ZW50Jz4KICAgIDxkaXYgaWQ9J29vb0hlYWRlcic+CiAgICAgICAgPGgxPlslIFRyYW5zbGF0ZShEYXRhLlRpdGxlKSB8IGh0bWwgJV08L2gxPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hCb3giKSAlXQogICAgICAgIDxkaXYgaWQ9Im9vb1NlYXJjaEJveCI+CiAgICAgICAgPC9kaXY+CiAgICAgICAgPGEgaWQ9J29vb0hlYWRlckJ1dHRvbicgaHJlZj0iWyUgRW52KCJCYXNlbGluayIpICVdQWN0aW9uPVB1YmxpY0lUU01Db25maWdJdGVtU2VhcmNoIiB0aXRsZT0iWyUgVHJhbnNsYXRlKCJTZWFyY2giKSB8IGh0bWwgJV0iIGFjY2Vzc2tleT0iWyUgRGF0YS5BY2Nlc3NLZXkgfCBodG1sICVdIj48YnV0dG9uPjxzcGFuPiBbJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj48L2E+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hCb3giKSAlXQogICAgPC9kaXY+CiAgICA8ZGl2IGlkPSdvb29NYWluQm94Jz4KICAgICAgICA8ZGl2IGlkPSJvb29JVFNNQ29uZmlnSXRlbUxpc3RIZWFkZXIiPgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJPdmVydmlld0xpbmsiKSAlXQogICAgICAgICAgICA8YSBjbGFzcz0iQmFja2xpbmsiIHRpdGxlPSJCYWNrIHRvIG92ZXJ2aWV3IiBocmVmPSJbJSBFbnYoIkJhc2VsaW5rIikgJV1BY3Rpb249UHVibGljSVRTTUNvbmZpZ0l0ZW0iPjxpIGNsYXNzPSJvb29mbyBvb29mby1hcnJvd19sIj48L2k+PHNwYW4+WyUgVHJhbnNsYXRlKCJCYWNrIHRvIG92ZXJ2aWV3IikgfCBodG1sICVdPC9zcGFuPjwvYT4KWyUgUmVuZGVyQmxvY2tFbmQoIk92ZXJ2aWV3TGluayIpICVdClslIElGIERhdGEuU2l0ZU5hdkJhciAlXQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJvb28xMmcgb29vciI+CiAgICAgICAgICAgICAgICA8cD5bJSBUcmFuc2xhdGUoIlBhZ2UiKSB8IGh0bWwgJV08L3A+CiAgICAgICAgICAgICAgICBbJSBEYXRhLlNpdGVOYXZCYXIgJV0KICAgICAgICAgICAgPC9kaXY+ClslIEVORCAlXQogICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJTZWFyY2hGb3JtIikgJV0KICAgICAgICA8ZGl2IGNsYXNzPSJvb29JVFNNQ29uZmlnSXRlbVNlYXJjaCI+CiAgICAgICAgICAgIDxkaXYgY2xhc3M9Im9vb0lUU01Db25maWdJdGVtU2VhcmNoRm9ybSI+CiAgICAgICAgICAgICAgICA8Zm9ybSBhY3Rpb249IlslIEVudigiQ0dJSGFuZGxlIikgJV0iIG1ldGhvZD0icG9zdCIgaWQ9IlNlYXJjaEZvcm0iPgogICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9IkFjdGlvbiIgdmFsdWU9IlslIEVudigiQWN0aW9uIikgJV0iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTdWJhY3Rpb24iIHZhbHVlPSJTZWFyY2hBY3Rpb24iLz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJTZWFyY2hEaWFsb2ciIHZhbHVlPScxJz4KICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJFbXB0eVNlYXJjaCIgdmFsdWU9IlslIERhdGEuRW1wdHlTZWFyY2ggfCBodG1sICVdIiBpZD0iRW1wdHlTZWFyY2giLz4KICAgICAgICAgICAgICAgICAgICA8ZmllbGRzZXQ+ClslIFJlbmRlckJsb2NrU3RhcnQoIlBlcm1pc3Npb25Db25kaXRpb24iKSAlXQogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJDbGVhciI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJSBEYXRhLlBlcm1pc3Npb25Db25kaXRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJQZXJtaXNzaW9uQ29uZGl0aW9uIj5bJSBUcmFuc2xhdGUoIkNhdGVnb3J5IikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiUGVybWlzc2lvbkNvbmRpdGlvbiIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkNsYXNzIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DbGFzc1N0cmcgJV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9IkNsYXNzSURzIj5bJSBUcmFuc2xhdGUoIkNsYXNzIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiQ2xhc3MiKSAlXQpbJSBSZW5kZXJCbG9ja1N0YXJ0KCJOdW1iZXIiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTnVtYmVyIiB2YWx1ZT0iWyUgRGF0YS5OdW1iZXIgfCBodG1sICVdIiBjbGFzcz0iVzUwcGMiIC8+CiAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbCBmb3I9Ik51bWJlciI+WyUgVHJhbnNsYXRlKCJOdW1iZXIiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIk51bWJlciIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIk5hbWUiKSAlXQogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IkNsZWFyIj48L2Rpdj4KICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0idGV4dCIgbmFtZT0iTmFtZSIgdmFsdWU9IlslIERhdGEuTmFtZSB8IGh0bWwgJV0iIGNsYXNzPSJXNTBwYyIgLz4KICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsIGZvcj0iTmFtZSI+WyUgVHJhbnNsYXRlKCJOYW1lIikgfCBodG1sICVdOjwvbGFiZWw+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJOYW1lIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiRGVwbFN0YXRlIikgJV0KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJSb3ciPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5DdXJEZXBsU3RhdGVPcHRpb25TdHJnICVdCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJEZXBsU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiRGVwbG95bWVudCBTdGF0ZSIpIHwgaHRtbCAlXTo8L2xhYmVsPgogICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkRlcGxTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkluY2lTdGF0ZSIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuQ3VySW5jaVN0YXRlT3B0aW9uU3RyZyAlXQogICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgZm9yPSJJbmNpU3RhdGVJRHMiPlslIFRyYW5zbGF0ZSgiSW5jaWRlbnQgU3RhdGUiKSB8IGh0bWwgJV06PC9sYWJlbD4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KWyUgUmVuZGVyQmxvY2tFbmQoIkluY2lTdGF0ZSIpICVdClslIFJlbmRlckJsb2NrU3RhcnQoIkR5bmFtaWNGaWVsZCIpICVdCiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iQ2xlYXIiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIFslIERhdGEuRmllbGQgJV0KICAgICAgICAgICAgICAgICAgICAgICAgWyUgRGF0YS5MYWJlbCAlXQogICAgICAgICAgICAgICAgICAgIDwvZGl2PgpbJSBSZW5kZXJCbG9ja0VuZCgiRHluYW1pY0ZpZWxkIikgJV0KICAgICAgICAgICAgICAgICAgICA8L2ZpZWxkc2V0PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9IlJvdyI+CiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gaWQ9IlNlYXJjaEFjdGlvbiIgdHlwZT0ic3VibWl0IiBjbGFzcz0iQ2FsbEZvckFjdGlvbiIgdmFsdWU9IlslIFRyYW5zbGF0ZSgiU2VhcmNoIikgfCBodG1sICVdIj48c3Bhbj5bJSBUcmFuc2xhdGUoIlNlYXJjaCIpIHwgaHRtbCAlXTwvc3Bhbj48L2J1dHRvbj4KICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgIDwvZm9ybT4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgPC9kaXY+ClslIFJlbmRlckJsb2NrRW5kKCJTZWFyY2hGb3JtIikgJV0KWyUgUmVuZGVyQmxvY2tTdGFydCgiU2VhcmNoUmVzdWx0IikgJV0KICAgICAgICBbJSBEYXRhLklUU01Db25maWdJdGVtTGlzdEhUTUwgJV0KWyUgUmVuZGVyQmxvY2tFbmQoIlNlYXJjaFJlc3VsdCIpICVdCiAgICA8L2Rpdj4KPC9kaXY+Cg==</File>
        <File Location="Kernel/Output/HTML/Templates/Standard/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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI1IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyAtLQojIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCiMgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKIyBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgojIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAojIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCiMgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KIyAtLQoKcGFja2FnZSBLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6Q29tbWFuZDo6QWRtaW46OklUU006OkNvbmZpZ0l0ZW06OkR1bXBHcmFwaDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwp1c2UgbmFtZXNwYWNlOjphdXRvY2xlYW47CnVzZSB1dGY4OwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6Q29uc29sZTo6QmFzZUNvbW1hbmQpOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9IHF3KAogICAgS2VybmVsOjpTeXN0ZW06OkRCCiAgICBLZXJuZWw6OlN5c3RlbTo6TWFpbgopOwoKc3ViIENvbmZpZ3VyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRTZWxmLT5EZXNjcmlwdGlvbignRHVtcCB0aGUgZ3JhcGggb2YgY29uZmlnIGl0ZW1zIGFzIFNWRyB0byB0aGUgZmlsZSBPVE9CT19JVFNNX0NvbmZpZ19JdGVtcy5zdmcuJyk7CgogICAgcmV0dXJuOwp9CgpzdWIgUHJlUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuOwp9CgpzdWIgUnVuIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBDaGVjayB3aGV0aGVyIHRoZSBvcHRpb25hbCBtb2R1bGUgR3JhcGhWaXoyIGlzIGluc3RhbGxlZAogICAgbXkgJE1haW5PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpOwogICAgaWYgKCAhJE1haW5PYmplY3QtPlJlcXVpcmUoJ0dyYXBoVml6MicpICkgewogICAgICAgICRTZWxmLT5QcmludEVycm9yKCJUaGUgb3B0aW9uYWwgUGVybCBtb2R1bGUgJ0dyYXBoVml6MicgaXMgbm90IGluc3RhbGxlZCIpOwoKICAgICAgICByZXR1cm4gJFNlbGYtPkV4aXRDb2RlRXJyb3I7CiAgICB9CgogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CiAgICBteSAkUm93cyAgICAgPSAkREJPYmplY3QtPlNlbGVjdEFsbCgKICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBzb3VyY2VfY29uZmlnaXRlbV9pZCwgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCwgdGFyZ2V0X2NvbmZpZ2l0ZW1faWQsIHRhcmdldF9jb25maWdpdGVtX3ZlcnNpb25faWQsbGlua190eXBlX2lkCiAgRlJPTSBjb25maWdpdGVtX2xpbmsKRU5EX1NRTAogICAgKTsKCiAgICBteSAkR3JhcGggPSBHcmFwaFZpejItPm5ldygKICAgICAgICBlZGdlICAgPT4geyBjb2xvciAgICA9PiAnZ3JleScgfSwKICAgICAgICBnbG9iYWwgPT4geyBkaXJlY3RlZCA9PiAxIH0sCiAgICAgICAgZ3JhcGggID0+IHsKICAgICAgICAgICAgbGFiZWwgICA9PiAnT1RPQk8gSVRTTSBDb25maWcgSXRlbXMnLAogICAgICAgICAgICByYW5rZGlyID0+ICdUQicKICAgICAgICB9LAogICAgICAgIG5vZGUgPT4gewogICAgICAgICAgICBzaGFwZSA9PiAnb3ZhbCcsCiAgICAgICAgICAgIGNvbG9yID0+ICdibHVlJywKICAgICAgICB9LAogICAgKTsKCiAgICAjIGxvb2sgb3ZlciB0aGUgZWRnZXMsIGFkZCBub2RlcywgYWRkIHRoZSBlZGdlcwogICAgbXkgJU5vZGVTZWVuOwogICAgZm9yIG15ICRSb3cgKCAkUm93cy0+QCogKSB7CiAgICAgICAgbXkgKCAkU291cmNlQ29uZmlnSXRlbUlELCAkU291cmNlVmVyc2lvbklELCAkVGFyZ2V0Q29uZmlnSXRlbUlELCAkVGFyZ2V0VmVyc2lvbklELCAkTGlua1R5cGVJRCApID0gJFJvdy0+QCo7CgogICAgICAgIG15ICRTb3VyY2VOYW1lID0gJFNvdXJjZUNvbmZpZ0l0ZW1JRCA/ICJDSSAkU291cmNlQ29uZmlnSXRlbUlEIiA6ICJWZXJzaW9uICRTb3VyY2VWZXJzaW9uSUQiOwogICAgICAgIGlmICggISROb2RlU2VlbnskU291cmNlTmFtZX0rKyApIHsKICAgICAgICAgICAgbXkgJFNoYXBlID0gJFNvdXJjZUNvbmZpZ0l0ZW1JRCA/ICdjaXJjbGUnIDogJ2RpYW1vbmQnOwogICAgICAgICAgICAkR3JhcGgtPmFkZF9ub2RlKAogICAgICAgICAgICAgICAgbmFtZSAgPT4gJFNvdXJjZU5hbWUsCiAgICAgICAgICAgICAgICBzaGFwZSA9PiAkU2hhcGUsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBteSAkVGFyZ2V0TmFtZSA9ICRUYXJnZXRDb25maWdJdGVtSUQgPyAiQ0kgJFRhcmdldENvbmZpZ0l0ZW1JRCIgOiAiVmVyc2lvbiAkVGFyZ2V0VmVyc2lvbklEIjsKICAgICAgICBpZiAoICEkTm9kZVNlZW57JFRhcmdldE5hbWV9KysgKSB7CiAgICAgICAgICAgIG15ICRTaGFwZSA9ICRUYXJnZXRDb25maWdJdGVtSUQgPyAnY2lyY2xlJyA6ICdkaWFtb25kJzsKICAgICAgICAgICAgJEdyYXBoLT5hZGRfbm9kZSgKICAgICAgICAgICAgICAgIG5hbWUgID0+ICRUYXJnZXROYW1lLAogICAgICAgICAgICAgICAgc2hhcGUgPT4gJFNoYXBlCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAkR3JhcGgtPmFkZF9lZGdlKAogICAgICAgICAgICBmcm9tICA9PiAkU291cmNlTmFtZSwKICAgICAgICAgICAgdG8gICAgPT4gJFRhcmdldE5hbWUsCiAgICAgICAgICAgIGxhYmVsID0+ICJMaW5rIFR5cGUgJExpbmtUeXBlSUQiLAogICAgICAgICk7CgogICAgICAgICMgVE9ETzogY2x1c3RlciBhbmQgb3JkZXIgdGhlIHZlcnNpb25zIG9mIGEgQ0kKICAgICAgICAjJEdyYXBoLT5wdXNoX3N1YmdyYXBoKAogICAgICAgICMgICAgbmFtZSAgPT4gJ2NsdXN0ZXJfMScsCiAgICAgICAgIyAgICBncmFwaCA9PiB7bGFiZWwgPT4gJ0NoaWxkJ30sCiAgICAgICAgIyAgICBub2RlICA9PiB7Y29sb3IgPT4gJ21hZ2VudGEnLCBzaGFwZSA9PiAnZGlhbW9uZCd9LAogICAgICAgICMpOwogICAgICAgICMgJEdyYXBoLT5hZGRfZWRnZShmcm9tID0+ICdDaGFkc3RvbmUnLCB0byA9PiAnV2F2ZXJsZXknKTsKICAgICAgICAjICRHcmFwaC0+cG9wX3N1YmdyYXBoOwogICAgfQoKICAgIG15ICRPdXRwdXRGaWxlID0gJ09UT0JPX0lUU01fQ29uZmlnX0l0ZW1zLnN2Zyc7CiAgICAkR3JhcGgtPnJ1biggb3V0cHV0X2ZpbGUgPT4gJE91dHB1dEZpbGUgKTsKCiAgICAkU2VsZi0+UHJpbnQoIkR1bXAgZ3JhcGggaW4gJE91dHB1dEZpbGVcbiIpOwoKICAgIHJldHVybiAkU2VsZi0+RXhpdENvZGVPazsKfQoKMTsK</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+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6Q29uZmlnSXRlbTsKCiMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBhcmFtT2JqZWN0KQoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkRyaXZlcjo6QmFzZVJlZmVyZW5jZSk7CgojIGNvcmUgbW9kdWxlcwp1c2UgTGlzdDo6VXRpbCAgIHF3KGFueSBmaXJzdCk7CnVzZSBTY2FsYXI6OlV0aWwgcXcocmVmdHlwZSk7CgojIENQQU4gbW9kdWxlcwoKIyBPVE9CTyBtb2R1bGVzCnVzZSBLZXJuZWw6Okxhbmd1YWdlICAgICAgICAgICAgICBxdyhUcmFuc2xhdGFibGUpOwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNBcnJheVJlZldpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6Okxhbmd1YWdlJywKICAgICdLZXJuZWw6OlN5c3RlbTo6Q3VzdG9tZXJVc2VyJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6RHJpdmVyOjpDb25maWdJdGVtIC0gYmFja2VuZCBmb3IgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkCgo9aGVhZDEgREVTQ1JJUFRJT04KCklUU01Db25maWdJdGVtIGJhY2tlbmQgZm9yIHRoZSBSZWZlcmVuY2UgZHluYW1pYyBmaWVsZC4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCml0IGlzIHVzdWFsbHkgbm90IG5lY2Vzc2FyeSB0byBleHBsaWNpdGx5IGNyZWF0ZSBpbnN0YW5jZXMgb2YgZHluYW1pYyBmaWVsZCBkcml2ZXJzLgpJbnN0YW5jZXMgb2YgdGhlIGRyaXZlcnMgYXJlIGNyZWF0ZWQgaW4gdGhlIGNvbnN0cnVjdG9yIG9mIHRoZQpkeW5hbWljIGZpZWxkIGJhY2tlbmQgb2JqZWN0IEM8S2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZD4uCgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICgkVHlwZSkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0gYmxlc3Mge30sICRUeXBlOwoKICAgICMgU29tZSByZWZlcmVuY2UgZHluYW1pYyBmaWVsZHMgYXJlIHN0b3JlZCBpbiB0aGUgZGF0YWJhc2UgdGFibGUgYXR0cmlidXRlIGR5bmFtaWNfZmllbGRfdmFsdWUudmFsdWVfaW50LgogICAgJFNlbGYtPntWYWx1ZVR5cGV9ICAgICAgPSAnSW50ZWdlcic7CiAgICAkU2VsZi0+e1ZhbHVlS2V5fSAgICAgICA9ICdWYWx1ZUludCc7CiAgICAkU2VsZi0+e1RhYmxlQXR0cmlidXRlfSA9ICd2YWx1ZV9pbnQnOwoKICAgICMgVXNlZCBmb3IgZGVjbGFyaW5nIENTUyBjbGFzc2VzCiAgICAkU2VsZi0+e0ZpZWxkQ1NTQ2xhc3N9ID0gJ0R5bmFtaWNGaWVsZFJlZmVyZW5jZSc7CgogICAgIyBzZXQgZmllbGQgYmVoYXZpb3JzCiAgICAkU2VsZi0+e0JlaGF2aW9yc30gPSB7CiAgICAgICAgJ0lzQUNMUmVkdWNpYmxlJyAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzTm90aWZpY2F0aW9uRXZlbnRDb25kaXRpb24nID0+IDAsCiAgICAgICAgJ0lzU29ydGFibGUnICAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzRmlsdHJhYmxlJyAgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU3RhdHNDb25kaXRpb24nICAgICAgICAgICAgID0+IDAsCiAgICAgICAgJ0lzQ3VzdG9tZXJJbnRlcmZhY2VDYXBhYmxlJyAgID0+IDEsCiAgICAgICAgJ0lzSGlkZGVuSW5UaWNrZXRJbmZvcm1hdGlvbicgID0+IDAsCiAgICAgICAgJ0lzUmVmZXJlbmNlRmllbGQnICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ0lzU2V0Q2FwYWJsZScgICAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgJ1NldHNEeW5hbWljQ29udGVudCcgICAgICAgICAgID0+IDEsCiAgICB9OwoKICAgICRTZWxmLT57UmVmZXJlbmNlZE9iamVjdFR5cGV9ID0gJ0lUU01Db25maWdJdGVtJzsKCiAgICByZXR1cm4gJFNlbGY7Cn0KCj1oZWFkMiBWYWx1ZUdldCgpCgpUaGlzIG1ldGhvZCBjb250YWlucyBzcGVjaWFsIHN1cHBvcnQgZm9yIHRoZSBjYXNlIG9mIExlbnNlcy4gQSBMZW5zIG9wZXJhdGVzIGRpcmVjdGx5IG9uIGR5bmFtaWMgZmllbGQgb2YgYW4gc3BlY2lmaWMgb2JqZWN0LgpUaGUgc3BlY2lmaWMgb2JqZWN0IGlzIHVzdWFsbHkgaWRlbnRpZmllZCBieSB0aGUgdmFsdWUgb2YgdGhlIFJlZmVyZW5jZSBkeW5hbWljIGZpZWxkLiBCdXQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIHNwZWNpYWwgY2FzZS4KV2hlbiB0aGUgcmVmZXJlbmNlIGlzIHRvIGFuIEM8SVRTTUNvbmZpZ0l0ZW0+IHRoZW4gdGhlIHJlbGV2YW50IElEIGlzIHRoZSBJRCBvZiB0aGUgbGFzdCB2ZXJzaW9uLiBUaGlzIGNhc2UgaXMgaGFuZGxlZAp3aGVuIHRoZSBwYXJhbWV0ZXIgQzxGb3JMZW5zPiBpcyBwYXNzZWQuCgo9Y3V0CgpzdWIgVmFsdWVHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aGUgdmFsdWUgZnJvbSB0aGUgcGFyZW50IGNsYXNzCiAgICBteSAkVmFsdWUgPSAkU2VsZi0+U1VQRVI6OlZhbHVlR2V0KCVQYXJhbSk7CgogICAgIyBzcGVjaWFsIGhhbmRsaW5nIG9ubHkgZm9yIExlbnMKICAgIHJldHVybiAkVmFsdWUgdW5sZXNzICRQYXJhbXtGb3JMZW5zfTsKCiAgICAjIGZvciB1c2FnZSBpbiBsZW5zZXMgd2UgbWlnaHQgaGF2ZSB0byBpbnRlcnByZXQgdGhlIHZhbHVlcyB0byBiZSB1c2FibGUgZm9yIHRoZWlyIFZhbHVlR2V0KCkKICAgIHJldHVybiAkU2VsZi0+VmFsdWVGb3JMZW5zKAogICAgICAgICVQYXJhbSwKICAgICAgICBWYWx1ZSA9PiAkVmFsdWUKICAgICk7Cn0KCj1oZWFkMiBWYWx1ZVNldCgpCgpUaGlzIG1ldGhvZCBoYW5kbGVzIENvbmZpZ0l0ZW0tTGluayBzeW5jIGZvciBDPElUU01Db25maWdJdGVtPnMgd2hlbiBEeW5hbWljIEZpZWxkIFJlZmVyZW5jZXMgYmV0d2VlbiAyCkNvbmZpZ0l0ZW0oVmVyc2lvbikgYXJlIHVwZGF0ZWQuCgo9Y3V0CgpzdWIgVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPlNVUEVSOjpWYWx1ZVNldCglUGFyYW0pOwoKICAgIGlmICgkUmVzdWx0KSB7CgogICAgICAgICMgb3B0aW9uYWwgY29uZmlnIGl0ZW0gbGlua3MKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnID0gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ307CgogICAgICAgIG15ICRPYmplY3RUeXBlID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e09iamVjdFR5cGV9OwogICAgICAgIG15ICRGaWVsZFR5cGUgID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX07CgogICAgICAgICMgb25seSBwcm9jZWVkIGlmIHRoaXMgaXMgYSBDSSA8LT4gQ0kgcmVsYXRpb25zaGlwCiAgICAgICAgcmV0dXJuICRSZXN1bHQgdW5sZXNzICRPYmplY3RUeXBlID1+IC9eSVRTTUNvbmZpZ0l0ZW0vOwogICAgICAgIHJldHVybiAkUmVzdWx0IHVubGVzcyAkRmllbGRUeXBlICA9fiAvXkNvbmZpZ0l0ZW0vOwoKICAgICAgICBteSAkVmFsdWVUeXBlID0gcmVmKCAkUGFyYW17VmFsdWV9ICk7CiAgICAgICAgbXkgQFZhbHVlcyAgICA9ICRWYWx1ZVR5cGUgJiYgJFZhbHVlVHlwZSBlcSAnQVJSQVknCiAgICAgICAgICAgID8gJFBhcmFte1ZhbHVlfS0+QCoKICAgICAgICAgICAgOiAkUGFyYW17VmFsdWV9ID8gKCAkUGFyYW17VmFsdWV9ICkgOiAoKTsKCiAgICAgICAgaWYgKCAkUGFyYW17U2V0fSApIHsKCiAgICAgICAgICAgICMgaW4gc2V0cyB3ZSBleHBlY3QgZWl0aGVyIGFycmF5IHJlZmVyZW5jZXMgb3IgdW5kZWYgZm9yIHRoZSBzaW5nbGUgc2V0IGluZGljZXMKICAgICAgICAgICAgIyBmcm9tIFsgW1ZhbDExLCBWYWwxMl0sIHVuZGVmLCBbVmFsMzFdIF0KICAgICAgICAgICAgIyB2aWEgICggW1ZhbDExLCBWYWwxMl0sIHVuZGVmLCBbVmFsMzFdICkKICAgICAgICAgICAgIyB0byAgICggVmFsMTEsIFZhbDEyLCBWYWwzMSApCiAgICAgICAgICAgIEBWYWx1ZXMgPSBtYXAgeyAkXyA/ICRfLT5AKiA6ICgpIH0gQFZhbHVlczsKICAgICAgICB9CgogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gICAgICAgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgVmVyc2lvbklEICAgICA9PiAkUGFyYW17T2JqZWN0SUR9LAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgIyB1cGRhdGUgY29uZmlnaXRlbV9saW5rCiAgICAgICAgJENvbmZpZ0l0ZW1PYmplY3QtPlN5bmNMaW5rVGFibGUoCiAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUxhc3RWZXJzaW9uSUQgPT4gJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfSwKICAgICAgICAgICAgQ29uZmlnSXRlbVZlcnNpb25JRCAgICAgPT4gJENvbmZpZ0l0ZW0tPntWZXJzaW9uSUR9LAogICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgICAgICA9PiBcQFZhbHVlcywKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkUmVzdWx0Owp9CgojIE92ZXJyaWRlIGZyb20gQmFzZVJlZmVyZW5jZSB0byBwcmV2ZW50IExpbmtPYmplY3QtQXV0by1MaW5raW5nIGZvciBDSSA8LT4gQ0kgcmVsYXRpb25zCgpzdWIgX0NyZWF0ZUF1dG9MaW5rT2JqZWN0TGluayB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICREeW5hbWljRmllbGQgPSAkUGFyYW17RHluYW1pY0ZpZWxkfTsKICAgIG15ICRPYmplY3RUeXBlICAgPSAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX07CiAgICBteSAkRmllbGRUeXBlICAgID0gJER5bmFtaWNGaWVsZC0+e0ZpZWxkVHlwZX07CgogICAgJEZpZWxkVHlwZSAgPX4gcy9eQ29uZmlnSXRlbS9JVFNNQ29uZmlnSXRlbS87CiAgICAkRmllbGRUeXBlICA9fiBzL15JVFNNQ29uZmlnSXRlbVZlcnNpb24vSVRTTUNvbmZpZ0l0ZW0vOwogICAgJE9iamVjdFR5cGUgPX4gcy9eSVRTTUNvbmZpZ0l0ZW1WZXJzaW9uL0lUU01Db25maWdJdGVtLzsKCiAgICBpZiAoICRGaWVsZFR5cGUgZXEgJE9iamVjdFR5cGUgJiYgJEZpZWxkVHlwZSA9fiAvXklUU01Db25maWdJdGVtLyApIHsKCiAgICAgICAgIyBza2lwIGR5bmFtaWMgbGlua2luZyBmb3IgQ29uZmlnSXRlbSA8LT4gQ29uZmlnSXRlbSBsaW5rcwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkUmVzdWx0ID0gJFNlbGYtPlNVUEVSOjpfQ3JlYXRlQXV0b0xpbmtPYmplY3RMaW5rKCVQYXJhbSk7CiAgICByZXR1cm4gJFJlc3VsdDsKfQoKc3ViIEVkaXRGaWVsZFZhbHVlR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIHBhcmVudCBjbGFzcwogICAgbXkgJFZhbHVlID0gJFNlbGYtPlNVUEVSOjpFZGl0RmllbGRWYWx1ZUdldCglUGFyYW0pOwoKICAgICMgZm9yIHRoaXMgZmllbGQgdGhlIG5vcm1hbCByZXR1cm4gYW4gdGhlIFJldHVyblZhbHVlU3RydWN0dXJlIGFyZSB0aGUgc2FtZQogICAgcmV0dXJuICRWYWx1ZSB1bmxlc3MgJFBhcmFte0ZvckxlbnN9OwoKICAgICMgZm9yIHVzYWdlIGluIGxlbnNlcyB3ZSBtaWdodCBoYXZlIHRvIGludGVycHJldCB0aGUgdmFsdWVzIHRvIGJlIHVzYWJsZSBmb3IgdGhlaXIgVmFsdWVHZXQoKQogICAgcmV0dXJuICRTZWxmLT5WYWx1ZUZvckxlbnMoIFZhbHVlID0+ICRWYWx1ZSApOwp9Cgo9aGVhZDIgR2V0RmllbGRUeXBlU2V0dGluZ3MoKQoKR2V0IHRoZSBmaWVsZCB0eXBlIHNldHRpbmdzIGZvciB0aGUgcmVmZXJlbmNlZCBvYmplY3QgdHlwZSBDPElUU01Db25maWdJdGVtPi4KVGhlIGdlbmVyaWMgc2V0dGluZ3MgZm9yIGFsbCByZWZlcmVuY2VkIG9iamVjdCB0eXBlcyBhcmUgaW5jbHVkZWQgYXMgd2VsbC4KCj1jdXQKCnN1YiBHZXRGaWVsZFR5cGVTZXR0aW5ncyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRSZWZlcmVuY2luZ09iamVjdFR5cGUgPSAkUGFyYW17T2JqZWN0VHlwZX07CgogICAgIyBGaXJzdCBmZXRjaCB0aGUgZ2VuZXJpYyBzZXR0aW5ncy4KICAgIG15IEBGaWVsZFR5cGVTZXR0aW5ncyA9ICRTZWxmLT5TVVBFUjo6R2V0RmllbGRUeXBlU2V0dGluZ3MoCiAgICAgICAgJVBhcmFtLAogICAgKTsKCiAgICAjIEFkZCB0aGUgc2VsZWN0aW9uIG9mIHRoZSBjb25maWcgaXRlbSBjbGFzcy4KICAgIHsKICAgICAgICBteSAkQ2xhc3NJRDJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICk7CgogICAgICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBDb25maWdQYXJhbU5hbWUgPT4gJ0NsYXNzSURzJywKICAgICAgICAgICAgICAgIExhYmVsICAgICAgICAgICA9PiBUcmFuc2xhdGFibGUoJ0NsYXNzIHJlc3RyaWN0aW9ucyBmb3IgdGhlIGNvbmZpZyBpdGVtJyksCiAgICAgICAgICAgICAgICBFeHBsYW5hdGlvbiAgICAgPT4gVHJhbnNsYXRhYmxlKCdTZWxlY3Qgb25lIG9yIG1vcmUgY2xhc3NlcyB0byByZXN0cmljdCBzZWxlY3RhYmxlIGNvbmZpZyBpdGVtcycpLAogICAgICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgU2VsZWN0aW9uRGF0YSAgID0+ICRDbGFzc0lEMk5hbWUsCiAgICAgICAgICAgICAgICBQb3NzaWJsZU5vbmUgICAgPT4gMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdGhlIGNsYXNzIGlzIHJlcXVpcmVkCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgIH0KCiAgICAjIEFkZCB0aGUgc2VsZWN0aW9uIG9mIHRoZSBjb25maWcgaXRlbSBkZXBsb3ltZW50IHN0YXRlLgogICAgewogICAgICAgIG15ICREZXBsb3ltZW50U3RhdGVzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgKTsKICAgICAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdEZXBsU3RhdGVJRHMnLAogICAgICAgICAgICAgICAgTGFiZWwgICAgICAgICAgID0+IFRyYW5zbGF0YWJsZSgnRGVwbG95bWVudCBzdGF0ZSByZXN0cmljdGlvbnMgZm9yIHRoZSBjb25maWcgaXRlbScpLAogICAgICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnU2VsZWN0IG9uZSBvciBtb3JlIGRlcGxveW1lbnQgc3RhdGVzIHRvIHJlc3RyaWN0IHNlbGVjdGFibGUgY29uZmlnIGl0ZW1zJyksCiAgICAgICAgICAgICAgICBJbnB1dFR5cGUgICAgICAgPT4gJ1NlbGVjdGlvbicsCiAgICAgICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gJERlcGxveW1lbnRTdGF0ZXNMaXN0LAogICAgICAgICAgICAgICAgUG9zc2libGVOb25lICAgID0+IDEsCiAgICAgICAgICAgICAgICBNdWx0aXBsZSAgICAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgIH0KCiAgICAjIFNlbGVjdCB0aGUgbGluayByZWZlcmVuY2luZyB0eXBlCiAgICBpZiAoICRSZWZlcmVuY2luZ09iamVjdFR5cGUgPX4gbS9eSVRTTUNvbmZpZ0l0ZW0vICkgewogICAgICAgIG15IEBTZWxlY3Rpb25EYXRhID0gKAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBLZXkgICA9PiAnRHluYW1pYycsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBUcmFuc2xhdGFibGUoJ0R5bmFtaWMgKENvbmZpZ0l0ZW0pJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIEtleSAgID0+ICdTdGF0aWMnLAogICAgICAgICAgICAgICAgVmFsdWUgPT4gVHJhbnNsYXRhYmxlKCdTdGF0aWMgKFZlcnNpb24pJyksCiAgICAgICAgICAgIH0sCiAgICAgICAgKTsKCiAgICAgICAgcHVzaCBARmllbGRUeXBlU2V0dGluZ3MsCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnTGlua1JlZmVyZW5jaW5nVHlwZScsCiAgICAgICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdMaW5rIFJlZmVyZW5jaW5nIFR5cGUnKSwKICAgICAgICAgICAgICAgIEV4cGxhbmF0aW9uICAgICA9PiBUcmFuc2xhdGFibGUoCiAgICAgICAgICAgICAgICAnV2hldGhlciB0aGlzIGxpbmsgYXBwbGllcyB0byB0aGUgQ29uZmlnSXRlbSBvciB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlIHJlZmVyZW5jaW5nIG9iamVjdC4gQ3VycmVudCBJbmNpZGVudCBTdGF0ZSBjYWxjdWxhdGlvbiBvbmx5IGlzIHBlcmZvcm1lZCBvbiBkeW5hbWljIGxpbmtzLicKICAgICAgICAgICAgICAgICksCiAgICAgICAgICAgICAgICBJbnB1dFR5cGUgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICAgICAgU2VsZWN0aW9uRGF0YSA9PiBcQFNlbGVjdGlvbkRhdGEsCiAgICAgICAgICAgICAgICBEZWZhdWx0S2V5ICAgID0+ICdEeW5hbWljJywKICAgICAgICAgICAgICAgIFBvc3NpYmxlTm9uZSAgPT4gMCwKICAgICAgICAgICAgfTsKICAgIH0KCiAgICAjIFN1cHBvcnQgY29uZmlndXJhYmxlIHNlYXJjaCBrZXkKICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdTZWFyY2hBdHRyaWJ1dGUnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGUgd2hpY2ggd2lsbCBiZSBzZWFyY2hlZCBvbiBhdXRvY29tcGxldGUnKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnU2VsZWN0IHRoZSBhdHRyaWJ1dGUgd2hpY2ggY29uZmlnIGl0ZW1zIHdpbGwgYmUgc2VhcmNoZWQgYnknKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgJ051bWJlcicgPT4gJ051bWJlcicsCiAgICAgICAgICAgICAgICAnTmFtZScgICA9PiAnTmFtZScsCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIFBvc3NpYmxlTm9uZSA9PiAxLAogICAgICAgICAgICBNdWx0aXBsZSAgICAgPT4gMCwKICAgICAgICB9OwoKICAgIG15ICREeW5hbWljRmllbGRzTGlzdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKS0+RHluYW1pY0ZpZWxkTGlzdCgKICAgICAgICBPYmplY3RUeXBlID0+IFsnSVRTTUNvbmZpZ0l0ZW0nXSwKICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICApOwogICAgbXkgJURGU2VsZWN0aW9uRGF0YSA9IG1hcCB7ICggIkR5bmFtaWNGaWVsZF8kXyIgPT4gIkR5bmFtaWNGaWVsZF8kXyIgKSB9IHZhbHVlcyAkRHluYW1pY0ZpZWxkc0xpc3QtPiUqOwoKICAgICMgU3VwcG9ydCBjb25maWd1cmFibGUgaW1wb3J0IHNlYXJjaCBhdHRyaWJ1dGUKICAgIHB1c2ggQEZpZWxkVHlwZVNldHRpbmdzLAogICAgICAgIHsKICAgICAgICAgICAgQ29uZmlnUGFyYW1OYW1lID0+ICdJbXBvcnRTZWFyY2hBdHRyaWJ1dGUnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdFeHRlcm5hbC1zb3VyY2Uga2V5JyksCiAgICAgICAgICAgIEV4cGxhbmF0aW9uICAgICA9PiBUcmFuc2xhdGFibGUoJ1doZW4gc2V0IHZpYSBhbiBleHRlcm5hbCBzb3VyY2UgKGUuZy4gd2ViIHNlcnZpY2Ugb3IgaW1wb3J0IC8gZXhwb3J0KSwgdGhlIHZhbHVlIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYXMgdGhpcyBhdHRyaWJ1dGUuJyksCiAgICAgICAgICAgIElucHV0VHlwZSAgICAgICA9PiAnU2VsZWN0aW9uJywKICAgICAgICAgICAgU2VsZWN0aW9uRGF0YSAgID0+IHsKICAgICAgICAgICAgICAgICdOYW1lJyAgID0+ICdOYW1lJywKICAgICAgICAgICAgICAgICdOdW1iZXInID0+ICdOdW1iZXInLAogICAgICAgICAgICAgICAgJURGU2VsZWN0aW9uRGF0YSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgIyBTdXBwb3J0IHZhcmlvdXMgZGlzcGxheSBvcHRpb25zCiAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnRGlzcGxheVR5cGUnLAogICAgICAgICAgICBMYWJlbCAgICAgICAgICAgPT4gVHJhbnNsYXRhYmxlKCdBdHRyaWJ1dGUgd2hpY2ggaXMgZGlzcGxheWVkIGZvciB2YWx1ZXMnKSwKICAgICAgICAgICAgRXhwbGFuYXRpb24gICAgID0+IFRyYW5zbGF0YWJsZSgnU2VsZWN0IHRoZSB0eXBlIG9mIGRpc3BsYXknKSwKICAgICAgICAgICAgSW5wdXRUeXBlICAgICAgID0+ICdTZWxlY3Rpb24nLAogICAgICAgICAgICBTZWxlY3Rpb25EYXRhICAgPT4gewogICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1OdW1iZXInICAgICAgPT4gJzxDb25maWcgSXRlbSBOdW1iZXI+JywKICAgICAgICAgICAgICAgICdDb25maWdJdGVtTmFtZScgICAgICAgID0+ICc8Q29uZmlnIEl0ZW0gTmFtZT4nLAogICAgICAgICAgICAgICAgJ0NsYXNzQ29uZmlnSXRlbU51bWJlcicgPT4gJzxDbGFzcyBOYW1lPjogPENvbmZpZyBJdGVtIE51bWJlcj4nLAogICAgICAgICAgICAgICAgJ0NsYXNzQ29uZmlnSXRlbU5hbWUnICAgPT4gJzxDbGFzcyBOYW1lPjogPENvbmZpZyBJdGVtIE5hbWU+JywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgUG9zc2libGVOb25lID0+IDEsCiAgICAgICAgICAgIE11bHRpcGxlICAgICA9PiAwLAogICAgICAgIH07CgogICAgIyBTdXBwb3J0IHJlZmVyZW5jZSBmaWx0ZXJzCiAgICBwdXNoIEBGaWVsZFR5cGVTZXR0aW5ncywKICAgICAgICB7CiAgICAgICAgICAgIENvbmZpZ1BhcmFtTmFtZSA9PiAnUmVmZXJlbmNlRmlsdGVyTGlzdCcsCiAgICAgICAgfTsKCiAgICByZXR1cm4gQEZpZWxkVHlwZVNldHRpbmdzOwp9Cgo9aGVhZDIgT2JqZWN0UGVybWlzc2lvbigpCgpjaGVja3MgcmVhZCBwZXJtaXNzaW9uIGZvciBhIGdpdmVuIG9iamVjdCBhbmQgVXNlcklELgoKICAgICRQZXJtaXNzaW9uID0gJEJhY2tlbmRPYmplY3QtPk9iamVjdFBlcm1pc3Npb24oCiAgICAgICAgS2V5ICAgICA9PiAxMjMsCiAgICAgICAgVXNlcklEICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBPYmplY3RQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KEtleSBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPlBlcm1pc3Npb24oCiAgICAgICAgU2NvcGUgID0+ICdJdGVtJywKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0tleX0sCiAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgKTsKfQoKPWhlYWQyIE9iamVjdERlc2NyaXB0aW9uR2V0KCkKCnJldHVybiBhIGhhc2ggb2Ygb2JqZWN0IGRlc2NyaXB0aW9ucy4KCiAgICBteSAlRGVzY3JpcHRpb24gPSAkQmFja2VuZE9iamVjdC0+T2JqZWN0RGVzY3JpcHRpb25HZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICk7CgpSZXR1cm4KCiAgICAlRGVzY3JpcHRpb24gPSAoCiAgICAgICAgTm9ybWFsID0+ICJDSSMgMTIzNDQ1NSIsCiAgICAgICAgTG9uZyAgID0+ICJDSSMgMTIzNDQ1NTogTmVlZCBhIHNhbXBsZSBjb25maWcgaXRlbSB0aXRsZSIsCiAgICApOwoKPWN1dAoKc3ViIE9iamVjdERlc2NyaXB0aW9uR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkQXJndW1lbnQgKHF3KE9iamVjdElEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBTaWxlbnQgICAgICAgPT4gMSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgcmV0dXJuICgKICAgICAgICAgICAgTm9ybWFsID0+ICIkUGFyYW17T2JqZWN0SUR9IChkZWxldGVkKSIsCiAgICAgICAgICAgIExvbmcgICA9PiAiJFBhcmFte09iamVjdElEfSAoZGVsZXRlZCkiLAogICAgICAgICk7CiAgICB9CgogICAgIyBwcmVwYXJlIHRyYW5zbGF0aW9uIG9mIGNsYXNzIG5hbWUgaWYgcG9zc2libGUKICAgIG15ICRDbGFzc05hbWVTdHJnID0gJENvbmZpZ0l0ZW0tPntDbGFzc307CiAgICBpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9ICkgewogICAgICAgICRDbGFzc05hbWVTdHJnID0gJFBhcmFte0xheW91dE9iamVjdH17TGFuZ3VhZ2VPYmplY3R9LT5UcmFuc2xhdGUoJENsYXNzTmFtZVN0cmcpOwogICAgfQoKICAgIG15ICVEZXNjcmlwdGlvbnM7CiAgICBpZiAoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9ICYmICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317RGlzcGxheVR5cGV9ICkgewoKICAgICAgICAjIHByZXBhcmUgc3RyaW5nIGFzIGNvbmZpZ3VyZWQKICAgICAgICBteSAkRGlzcGxheVR5cGUgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0Rpc3BsYXlUeXBlfTsKICAgICAgICBpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1OdW1iZXJ9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDb25maWdJdGVtLT57Q29uZmlnSXRlbU51bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ29uZmlnSXRlbU5hbWUnICkgewogICAgICAgICAgICAkRGVzY3JpcHRpb25ze05vcm1hbH0gPSAiJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ29uZmlnSXRlbS0+e05hbWV9IjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCAkRGlzcGxheVR5cGUgZXEgJ0NsYXNzQ29uZmlnSXRlbU51bWJlcicgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOdW1iZXJ9IjsKICAgICAgICAgICAgJERlc2NyaXB0aW9uc3tMb25nfSAgID0gIiRDbGFzc05hbWVTdHJnOiAkQ29uZmlnSXRlbS0+e051bWJlcn0iOwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICREaXNwbGF5VHlwZSBlcSAnQ2xhc3NDb25maWdJdGVtTmFtZScgKSB7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7Tm9ybWFsfSA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICAgICAgfQogICAgfQogICAgZWxzZSB7CiAgICAgICAgJERlc2NyaXB0aW9uc3tOb3JtYWx9ID0gIiRDb25maWdJdGVtLT57TmFtZX0iOwogICAgICAgICREZXNjcmlwdGlvbnN7TG9uZ30gICA9ICIkQ2xhc3NOYW1lU3RyZzogJENvbmZpZ0l0ZW0tPntOYW1lfSI7CiAgICB9CgogICAgbXkgJExpbms7CiAgICBpZiAoICRQYXJhbXtMaW5rfSAmJiAkUGFyYW17TGF5b3V0T2JqZWN0fXtTZXNzaW9uU291cmNlfSApIHsKICAgICAgICBpZiAoICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9IGVxICdBZ2VudEludGVyZmFjZScgKSB7CgogICAgICAgICAgICAjIFRPRE86IG9ubHkgc2hvdyB0aGUgbGluayBpZiB0aGUgdXNlciAkUGFyYW17VXNlcklEfSBoYXMgcGVybWlzc2lvbnMKICAgICAgICAgICAgJExpbmsgPSAkUGFyYW17TGF5b3V0T2JqZWN0fXtCYXNlbGlua30gLiAiQWN0aW9uPUFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tO0NvbmZpZ0l0ZW1JRD0kUGFyYW17T2JqZWN0SUR9IjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgZGVzY3JpcHRpb24KICAgIHJldHVybiAoCiAgICAgICAgJURlc2NyaXB0aW9ucywKICAgICAgICBMaW5rID0+ICRMaW5rLAogICAgKTsKfQoKPWhlYWQyIFNlYXJjaE9iamVjdHMoKQoKVGhpcyBpcyB1c2VkIGluIGF1dG8gY29tcGxldGlvbiB3aGVuIHNlYXJjaGluZyBmb3IgcG9zc2libGUgb2JqZWN0IElEcy4KCiAgICBteSBAT2JqZWN0SURzID0gJEJhY2tlbmRPYmplY3QtPlNlYXJjaE9iamVjdHMoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRPYmplY3RJRCwgICAgICAgICAgICAgICAgIyAob3B0aW9uYWwpIGlmIGdpdmVuLCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgVGVybQogICAgICAgIFRlcm0gICAgICAgICAgICAgICA9PiAkVGVybSwgICAgICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0cyB0byB3aWxkY2FyZCBzZWFyY2ggd2l0aCBlbXB0eSBzdHJpbmcKICAgICAgICBNYXhSZXN1bHRzICAgICAgICAgPT4gJE1heFJlc3VsdHMsCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+ICRTZWxmLT57VXNlcklEfSwKICAgICAgICBPYmplY3QgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAlRGF0YSwKICAgICAgICB9LAogICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkUGFyYW1PYmplY3QsCiAgICApOwoKPWN1dAoKc3ViIFNlYXJjaE9iamVjdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAkUGFyYW17VGVybX0gLy89ICcnOwoKICAgIG15ICRERkRldGFpbHMgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9IC8vIHt9OwoKICAgIG15ICVTZWFyY2hQYXJhbXM7CgogICAgaWYgKCAkUGFyYW17T2JqZWN0SUR9ICkgewogICAgICAgICRTZWFyY2hQYXJhbXN7Q29uZmlnSXRlbUlEfSA9ICRQYXJhbXtPYmplY3RJRH07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtFeHRlcm5hbFNvdXJjZX0gKSB7CgogICAgICAgICMgaW5jbHVkZSBjb25maWd1cmVkIHNlYXJjaCBwYXJhbSBpZiBwcmVzZW50CiAgICAgICAgbXkgJFNlYXJjaEF0dHJpYnV0ZSA9ICRERkRldGFpbHMtPntJbXBvcnRTZWFyY2hBdHRyaWJ1dGV9IHx8ICdOYW1lJzsKCiAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgIGlmICggJFNlYXJjaEF0dHJpYnV0ZSA9fiBte15EeW59aSApIHsKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skU2VhcmNoQXR0cmlidXRlfSA9IHsKICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkUGFyYW17VGVybX0sCiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAgICAgICAjIG5hbWUgb3IgbnVtYmVyCiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JFNlYXJjaEF0dHJpYnV0ZX0gPSAiJFBhcmFte1Rlcm19IjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBpbmNsdWRlIGNvbmZpZ3VyZWQgc2VhcmNoIHBhcmFtIGlmIHByZXNlbnQKICAgICAgICBteSAkU2VhcmNoQXR0cmlidXRlID0gJERGRGV0YWlscy0+e1NlYXJjaEF0dHJpYnV0ZX0gfHwgJ05hbWUnOwoKICAgICAgICAkU2VhcmNoUGFyYW1zeyRTZWFyY2hBdHRyaWJ1dGV9ID0gIiokUGFyYW17VGVybX0qIjsKICAgIH0KCiAgICAjIHByZXBhcmUgbWFwcGluZyBvZiBlZGl0IG1hc2sgYXR0cmlidXRlIG5hbWVzCiAgICBteSAlQXR0cmlidXRlTmFtZU1hcHBpbmcgPSAoCiAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gWwogICAgICAgICAgICAnU2VsZWN0ZWRDdXN0b21lclVzZXInLAogICAgICAgIF0sCiAgICAgICAgUmVzcG9uc2libGVJRCA9PiBbCiAgICAgICAgICAgICdOZXdSZXNwb25zaWJsZUlEJywKICAgICAgICBdLAogICAgICAgIE93bmVySUQgPT4gWwogICAgICAgICAgICAnTmV3T3duZXJJRCcsCiAgICAgICAgICAgICdOZXdVc2VySUQnLAogICAgICAgIF0sCiAgICAgICAgUXVldWVJRCA9PiBbCiAgICAgICAgICAgICdEZXN0JywKICAgICAgICAgICAgJ05ld1F1ZXVlSUQnLAogICAgICAgIF0sCiAgICAgICAgU3RhdGVJRCA9PiBbCiAgICAgICAgICAgICdOZXdTdGF0ZUlEJywKICAgICAgICAgICAgJ05leHRTdGF0ZUlEJywKICAgICAgICBdLAogICAgICAgIFByaW9yaXR5SUQgPT4gWwogICAgICAgICAgICAnTmV3UHJpb3JpdHlJRCcsCiAgICAgICAgXSwKICAgICk7CgogICAgIyBpbmNvcnBvcmF0ZSByZWZlcmVuY2VmaWx0ZXJsaXN0IGludG8gc2VhcmNoIHBhcmFtcwogICAgaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERkRldGFpbHMtPntSZWZlcmVuY2VGaWx0ZXJMaXN0fSApICYmICEkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICkgewoKICAgICAgICBteSAkQ3VzdG9tZXJVc2VyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyVXNlcicpOwoKICAgICAgICBGSUxURVJJVEVNOgogICAgICAgIGZvciBteSAkRmlsdGVySXRlbSAoICRERkRldGFpbHMtPntSZWZlcmVuY2VGaWx0ZXJMaXN0fS0+QCogKSB7CgogICAgICAgICAgICAjIGNoZWNrIGZpbHRlciBjb25maWcKICAgICAgICAgICAgbmV4dCBGSUxURVJJVEVNIHVubGVzcyAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX07CiAgICAgICAgICAgIG5leHQgRklMVEVSSVRFTSB1bmxlc3MgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfHwgJEZpbHRlckl0ZW0tPntFcXVhbHNTdHJpbmd9ICk7CgogICAgICAgICAgICAjIG1hcCBJRCB0byBJRHMgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVOYW1lID0gJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9OwogICAgICAgICAgICBpZiAoIGFueSB7ICRfIGVxICRBdHRyaWJ1dGVOYW1lIH0gcXcoUXVldWVJRCBUeXBlSUQgU3RhdGVJRCBQcmlvcml0eUlEIFNlcnZpY2VJRCBTTEFJRCBPd25lcklEIFJlc3BvbnNpYmxlSUQgKSApIHsKICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVOYW1lIC49ICdzJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gKSB7CgogICAgICAgICAgICAgICAgIyBkb24ndCBwZXJmb3JtIHNlYXJjaCBpZiBvYmplY3QgYXR0cmlidXRlIHRvIHNlYXJjaCBmb3IgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG15ICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17T2JqZWN0fSApICkgewogICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17T2JqZWN0fXtEeW5hbWljRmllbGR9eyAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfSAvLyAkUGFyYW17T2JqZWN0fXsgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH07CgogICAgICAgICAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lclVzZXJJRCcgJiYgISRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRQYXJhbXtDdXN0b21lclVzZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lcklEJyAmJiAhJEVxdWFsc09iamVjdEF0dHJpYnV0ZSAmJiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkQ3VzdG9tZXJVc2VyRGF0YXtDdXN0b21lcklEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte1BhcmFtT2JqZWN0fSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSA9fiAvXkR5bmFtaWNGaWVsZF8oPzxERk5hbWU+XFMrKS8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRERk5hbWUgICAgICAgICAgICAgPSAkK3tERk5hbWV9OwogICAgICAgICAgICAgICAgICAgICAgICBteSAkRmlsdGVySXRlbURGQ29uZmlnID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRERk5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IEZJTFRFUklURU0gdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCRGaWx0ZXJJdGVtREZDb25maWcpOwoKICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFte1BhcmFtT2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRmlsdGVySXRlbURGQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtRGF0ZXMgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lclVzZXJJRCcgJiYgJFBhcmFte0N1c3RvbWVyVXNlcklEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRQYXJhbXtDdXN0b21lclVzZXJJRH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lcklEJyAmJiAkUGFyYW17Q3VzdG9tZXJVc2VySUR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAlQ3VzdG9tZXJVc2VyRGF0YSA9ICRDdXN0b21lclVzZXJPYmplY3QtPkN1c3RvbWVyVXNlckRhdGFHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyID0+ICRQYXJhbXtDdXN0b21lclVzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkQ3VzdG9tZXJVc2VyRGF0YXtDdXN0b21lcklEfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIG1hdGNoIHN0YW5kYXJkIHRpY2tldCBhdHRyaWJ1dGUgbmFtZXMgd2l0aCBlZGl0IG1hc2sgYXR0cmlidXRlIG5hbWVzCiAgICAgICAgICAgICAgICAgICAgICAgIG15IEBQYXJhbU5hbWVzID0gJFBhcmFte1BhcmFtT2JqZWN0fS0+R2V0UGFyYW1OYW1lcygpOwoKICAgICAgICAgICAgICAgICAgICAgICAgIyBjaGVjayBpZiBhdHRyaWJ1dGUgbmFtZSBpdHNlbGYgaXMgaW4gcGFyYW1zCiAgICAgICAgICAgICAgICAgICAgICAgICMgTk9URSB0cnlpbmcgYXR0cmlidXRlIGl0c2VsZiBpcyBjcnVjaWFsbHkgaW1wb3J0YW50IGluIGNhc2Ugb2YgUXVldWVJRAogICAgICAgICAgICAgICAgICAgICAgICAjICAgYmVjYXVzZSBBZ2VudFRpY2tldFBob25lIGRvZXMgbm90IHByb3ZpZGUgUXVldWVJRCwgYnV0IHB1dHMgdGhlIGlkIGluCiAgICAgICAgICAgICAgICAgICAgICAgICMgICBEZXN0LCBhbmQgQWdlbnRUaWNrZXRFbWFpbCBsZWF2ZXMgRGVzdCBhcyBhIHN0cmluZyBidXQgcHV0cyB0aGUgaWQgaW4gUXVldWVJRAogICAgICAgICAgICAgICAgICAgICAgICBteSAkUGFyYW1OYW1lID0gZmlyc3QgeyAkXyBlcSAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfSBAUGFyYW1OYW1lczsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgbm90LCB0cnkgdG8gZmluZCBhIG1hcHBlZCBhdHRyaWJ1dGUgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW1OYW1lICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgbWFwcGVkIGF0dHJpYnV0ZSBuYW1lcyBleGlzdCBhdCBhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXBwZWRBdHRyaWJ1dGVzID0gJEF0dHJpYnV0ZU5hbWVNYXBwaW5neyAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcmVmICRNYXBwZWRBdHRyaWJ1dGVzIGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUFBFREFUVFJJQlVURToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE1hcHBlZEF0dHJpYnV0ZSAoICRNYXBwZWRBdHRyaWJ1dGVzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFBhcmFtTmFtZSA9IGZpcnN0IHsgJF8gZXEgJE1hcHBlZEF0dHJpYnV0ZSB9IEBQYXJhbU5hbWVzOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdCBNQVBQRURBVFRSSUJVVEUgaWYgJFBhcmFtTmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkUGFyYW1OYW1lKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdoZW4gY2FsbGVkIGJ5IEFnZW50UmVmZXJlbmNlU2VhcmNoLCBEZXN0IGlzIGEgc3RyaW5nIGFuZCB3ZSBuZWVkIHRvIGV4dHJhY3QgdGhlIFF1ZXVlSUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFtTmFtZSBlcSAnRGVzdCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFF1ZXVlSUQgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPX4gL14oXGR7MSwxMDB9KVx8XHwuKz8kLyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJFF1ZXVlSUQgPSAkMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRRdWV1ZUlEOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lcklEJyApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHRyeSBpZiBDdXN0b21lclVzZXIgaXMgb24gdGhlIG1hc2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRDdXN0b21lclVzZXJJRCA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtKCBQYXJhbSA9PiAnU2VsZWN0ZWRDdXN0b21lclVzZXInICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJEN1c3RvbWVyVXNlcklEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJUN1c3RvbWVyVXNlckRhdGEgPSAkQ3VzdG9tZXJVc2VyT2JqZWN0LT5DdXN0b21lclVzZXJEYXRhR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyID0+ICRDdXN0b21lclVzZXJJRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkQ3VzdG9tZXJVc2VyRGF0YXtDdXN0b21lcklEfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG5laXRoZXIgYXR0cmlidXRlIG5vciBtYXBwZWQgYWx0ZXJuYXRpdmVzIGF2YWlsYWJsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGF0dHJpYnV0ZSAnJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9JyBhbmQgaXRzIGFzc29jaWF0ZWQgYWx0ZXJuYXRpdmVzIGlzIG5vdCBhdmFpbGFibGUgb24gdGhlIG1hc2shIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgZW5zdXJlIHRoYXQgZm9yIEVxdWFsc09iamVjdEF0dHJpYnV0ZSBVc2VySUQgYWx3YXlzICRTZWxmLT57VXNlcklEfSBpcyB1c2VkIGluIHRoZSBlbmQKICAgICAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IGVxICdVc2VySUQnICkgewogICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17VXNlcklEfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICByZXR1cm4gKCkgdW5sZXNzICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICByZXR1cm4gKCkgaWYgKCByZWYgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSBlcSAnQVJSQVknICYmICEkRXF1YWxzT2JqZWN0QXR0cmlidXRlLT5AKiApOwoKICAgICAgICAgICAgICAgICMgY29uZmlnIGl0ZW0gYXR0cmlidXRlCiAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15Db259aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9ICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBkeW5hbWljIGZpZWxkIGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gPX4gbXteRHlufWkgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEVxdWFscyA9PiAkRXF1YWxzT2JqZWN0QXR0cmlidXRlLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e1JlZmVyZW5jZU9iamVjdEF0dHJpYnV0ZX0gZXEgJ0N1c3RvbWVyVXNlcklEJyApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0N1c3RvbWVyVXNlckxvZ2lufSA9IFskRXF1YWxzT2JqZWN0QXR0cmlidXRlXTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSBbJEVxdWFsc09iamVjdEF0dHJpYnV0ZV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30gKSB7CgogICAgICAgICAgICAgICAgIyBjb25maWcgaXRlbSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICMgVE9ETyBjaGVjayBpZiB0aGlzIGhhcyB0byBiZSBhZGFwdGVkIGZvciB0aWNrZXQgc2VhcmNoCiAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15Db259aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9ICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15EeW59aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2lmICggJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9IGVxICdDdXN0b21lclVzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tDdXN0b21lclVzZXJMb2dpbn0gPSBbICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSBdOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYXJyYXkgYXR0cmlidXRlCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9IFsgJEZpbHRlckl0ZW0tPntFcXVhbHNTdHJpbmd9IF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBTdXBwb3J0IHJlc3RyaWN0aW9uIGJ5IGNsYXNzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERGRGV0YWlscy0+e0NsYXNzSURzfSApICYmICEkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICkgewogICAgICAgIGlmICggJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gKSB7CiAgICAgICAgICAgIG15IEBDbGFzc0lEczsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc0lEICggJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkQ2xhc3NJRCB9ICRERkRldGFpbHMtPntDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQENsYXNzSURzLCAkQ2xhc3NJRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICgpIHVubGVzcyBAQ2xhc3NJRHM7CgogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0NsYXNzSURzfSA9IFxAQ2xhc3NJRHM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0NsYXNzSURzfSA9ICRERkRldGFpbHMtPntDbGFzc0lEc307CiAgICAgICAgfQogICAgfQoKICAgICMgU3VwcG9ydCByZXN0cmljdGlvbiBieSBkZXBsb3ltZW50IHN0YXRlCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERGRGV0YWlscy0+e0RlcGxTdGF0ZUlEc30gKSApIHsKICAgICAgICBpZiAoICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSApIHsKICAgICAgICAgICAgbXkgQERlcGxveW1lbnRTdGF0ZUlEczsKICAgICAgICAgICAgZm9yIG15ICREZXBsb3ltZW50U3RhdGVJRCAoICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICRfIGVxICREZXBsb3ltZW50U3RhdGVJRCB9ICRERkRldGFpbHMtPntEZXBsU3RhdGVJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEZXBsb3ltZW50U3RhdGVJRHMsICREZXBsb3ltZW50U3RhdGVJRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuICgpIHVubGVzcyBARGVwbG95bWVudFN0YXRlSURzOwoKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tEZXBsU3RhdGVJRHN9ID0gXEBEZXBsb3ltZW50U3RhdGVJRHM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gPSAkREZEZXRhaWxzLT57RGVwbFN0YXRlSURzfTsKICAgICAgICB9CiAgICB9CgogICAgIyByZXR1cm4gYSBsaXN0IG9mIGNvbmZpZyBpdGVtIElEcwogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgIExpbWl0ICAgPT4gJFBhcmFte01heFJlc3VsdHN9LAogICAgICAgIFJlc3VsdCAgPT4gJ0FSUkFZJywKICAgICAgICBTb3J0QnkgID0+ICdOdW1iZXInLAogICAgICAgIE9yZGVyQnkgPT4gJ0Rvd24nLAogICAgICAgICVTZWFyY2hQYXJhbXMsCiAgICApOwp9Cgo9aGVhZDIgVmFsdWVGb3JMZW5zKCkKCnJldHVybiB0aGUgY3VycmVudCBsYXN0IHZlcnNpb24gaWRzIHVzZWQgaW4gZHluYW1pY19maWVsZF92YWx1ZS4KVGhlIHBhc3NlZCBpbiB2YWx1ZSBpcyBhIGxpc3Qgb2YgY29uZmlnIGl0ZW0gSURzLiBUaGVzZSBJRHMgYXJlCnRyYW5zZm9ybWVkIGludG8gdGhlIHJlc3BlY3RpdmUgbGFzdCB2ZXJzaW9uIElEcy4KCiAgICBteSAkVmFsdWUgPSAkQmFja2VuZE9iamVjdC0+VmFsdWVGb3JMZW5zKAogICAgICAgIFZhbHVlID0+IFsxNywxNywxOSwyMF0sCiAgICApOwoKPWN1dAoKc3ViIFZhbHVlRm9yTGVucyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiBpZiAhJFBhcmFte1ZhbHVlfTsKCiAgICBpZiAoIHJlZiAkUGFyYW17VmFsdWV9IG5lICdBUlJBWScgKSB7CiAgICAgICAgJFBhcmFte1ZhbHVlfSA9IFsgJFBhcmFte1ZhbHVlfSBdOwogICAgfQoKICAgIG15IEBMYXN0VmVyc2lvbklEczsKCiAgICB1bmxlc3MgKCAkUGFyYW17U2V0fSApIHsgICAgIyMgbm8gY3JpdGljIHF3KENvbnRyb2xTdHJ1Y3R1cmVzOjpQcm9oaWJpdFVubGVzc0Jsb2NrcykKICAgICAgICBDT05GSUdfSVRFTV9JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoICRQYXJhbXtWYWx1ZX0tPkAqICkgewogICAgICAgICAgICBteSAkQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBTaWxlbnQgICAgICAgPT4gMSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb25seSB2YWxpZCBJRHMKICAgICAgICAgICAgbmV4dCBDT05GSUdfSVRFTV9JRCB1bmxlc3MgJENvbmZpZ0l0ZW07CiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICBwdXNoIEBMYXN0VmVyc2lvbklEcywgJENvbmZpZ0l0ZW0tPntMYXN0VmVyc2lvbklEfTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBcQExhc3RWZXJzaW9uSURzOwogICAgfQoKICAgICMgZm9yIHNldHMgd2UgbmVlZCB0byB0cmFuc2xhdGUgZm9yIGV2ZXJ5IHNldCB2YWx1ZQogICAgZm9yIG15ICRTZXRWYWx1ZSAoICRQYXJhbXtWYWx1ZX0tPkAqICkgewogICAgICAgIGlmICggcmVmICRTZXRWYWx1ZSBuZSAnQVJSQVknICkgewogICAgICAgICAgICAkU2V0VmFsdWUgPSBbJFNldFZhbHVlXTsKICAgICAgICB9CgogICAgICAgIG15IEBTZXRWZXJzaW9uSURzOwoKICAgICAgICBDT05GSUdfSVRFTV9JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoICRTZXRWYWx1ZS0+QCogKSB7CiAgICAgICAgICAgIG15ICRDb25maWdJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgb25seSB2YWxpZCBJRHMKICAgICAgICAgICAgbmV4dCBDT05GSUdfSVRFTV9JRCB1bmxlc3MgJENvbmZpZ0l0ZW07CiAgICAgICAgICAgIG5leHQgQ09ORklHX0lURU1fSUQgdW5sZXNzICRDb25maWdJdGVtLT57TGFzdFZlcnNpb25JRH07CgogICAgICAgICAgICBwdXNoIEBTZXRWZXJzaW9uSURzLCAkQ29uZmlnSXRlbS0+e0xhc3RWZXJzaW9uSUR9OwogICAgICAgIH0KCiAgICAgICAgcHVzaCBATGFzdFZlcnNpb25JRHMsIFxAU2V0VmVyc2lvbklEczsKICAgIH0KCiAgICByZXR1cm4gXEBMYXN0VmVyc2lvbklEczsKfQoKMTsK</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+e1ZlcnNpb25TdHJpbmd9IjsKICAgIH0KCiAgICBteSAkTGluazsKICAgIGlmICggJFBhcmFte0xpbmt9ICYmICRQYXJhbXtMYXlvdXRPYmplY3R9e1Nlc3Npb25Tb3VyY2V9ICkgewogICAgICAgIGlmICggJFBhcmFte0xheW91dE9iamVjdH17U2Vzc2lvblNvdXJjZX0gZXEgJ0FnZW50SW50ZXJmYWNlJyApIHsKCiAgICAgICAgICAgICMgVE9ETzogb25seSBzaG93IHRoZSBsaW5rIGlmIHRoZSB1c2VyICRQYXJhbXtVc2VySUR9IGhhcyBwZXJtaXNzaW9ucwogICAgICAgICAgICAkTGluayA9ICRQYXJhbXtMYXlvdXRPYmplY3R9e0Jhc2VsaW5rfSAuICJBY3Rpb249QWdlbnRJVFNNQ29uZmlnSXRlbVpvb207Q29uZmlnSXRlbUlEPSRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTtWZXJzaW9uSUQ9JFBhcmFte09iamVjdElEfSI7CiAgICAgICAgfQogICAgfQoKICAgICMgY3JlYXRlIGRlc2NyaXB0aW9uCiAgICByZXR1cm4gKAogICAgICAgICVEZXNjcmlwdGlvbnMsCiAgICAgICAgTGluayA9PiAkTGluaywKICAgICk7Cn0KCj1oZWFkMiBTZWFyY2hPYmplY3RzKCkKClRoaXMgaXMgdXNlZCBpbiBhdXRvIGNvbXBsZXRpb24gd2hlbiBzZWFyY2hpbmcgZm9yIHBvc3NpYmxlIG9iamVjdCBJRHMuCgogICAgbXkgQE9iamVjdElEcyA9ICRCYWNrZW5kT2JqZWN0LT5TZWFyY2hPYmplY3RzKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkT2JqZWN0SUQsICAgICAgICAgICAgICAgICMgKG9wdGlvbmFsKSBpZiBnaXZlbiwgdGFrZXMgcHJlY2VkZW5jZSBvdmVyIFRlcm0KICAgICAgICBUZXJtICAgICAgICAgICAgICAgPT4gJFRlcm0sICAgICAgICAgICAgICAgICAgICAjIChvcHRpb25hbCkgZGVmYXVsdHMgdG8gd2lsZGNhcmQgc2VhcmNoIHdpdGggZW1wdHkgc3RyaW5nCiAgICAgICAgTWF4UmVzdWx0cyAgICAgICAgID0+ICRNYXhSZXN1bHRzLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxLAogICAgICAgIE9iamVjdCAgICAgICAgICAgICA9PiB7CiAgICAgICAgICAgICVEYXRhLAogICAgICAgIH0sCiAgICAgICAgUGFyYW1PYmplY3QgICAgICAgID0+ICRQYXJhbU9iamVjdCwKICAgICk7Cgo9Y3V0CgpzdWIgU2VhcmNoT2JqZWN0cyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtUZXJtfSAvLz0gJyc7CgogICAgbXkgJERGRGV0YWlscyA9ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ30gLy8ge307CgogICAgbXkgJVNlYXJjaFBhcmFtczsKCiAgICBpZiAoICRQYXJhbXtPYmplY3RJRH0gKSB7CiAgICAgICAgJFNlYXJjaFBhcmFtc3tDb25maWdJdGVtSUR9ID0gJFBhcmFte09iamVjdElEfTsKICAgIH0KICAgIGVsc2lmICggJFBhcmFte0V4dGVybmFsU291cmNlfSApIHsKCiAgICAgICAgIyBpbmNsdWRlIGNvbmZpZ3VyZWQgc2VhcmNoIHBhcmFtIGlmIHByZXNlbnQKICAgICAgICBteSAkU2VhcmNoQXR0cmlidXRlID0gJERGRGV0YWlscy0+e0ltcG9ydFNlYXJjaEF0dHJpYnV0ZX0gfHwgJ05hbWUnOwoKICAgICAgICAkU2VhcmNoUGFyYW1zeyRTZWFyY2hBdHRyaWJ1dGV9ID0gIiRQYXJhbXtUZXJtfSI7CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBpbmNsdWRlIGNvbmZpZ3VyZWQgc2VhcmNoIHBhcmFtIGlmIHByZXNlbnQKICAgICAgICBteSAkU2VhcmNoQXR0cmlidXRlID0gJERGRGV0YWlscy0+e1NlYXJjaEF0dHJpYnV0ZX0gfHwgJ05hbWUnOwoKICAgICAgICAkU2VhcmNoUGFyYW1zeyRTZWFyY2hBdHRyaWJ1dGV9ID0gIiokUGFyYW17VGVybX0qIjsKICAgIH0KCiAgICAjIHByZXBhcmUgbWFwcGluZyBvZiBlZGl0IG1hc2sgYXR0cmlidXRlIG5hbWVzCiAgICBteSAlQXR0cmlidXRlTmFtZU1hcHBpbmcgPSAoCiAgICAgICAgQ3VzdG9tZXJVc2VyID0+IFsKCiAgICAgICAgICAgICMgQWdlbnRUaWNrZXRFbWFpbAogICAgICAgICAgICAnRnJvbScsCgogICAgICAgICAgICAjIEFnZW50VGlja2V0UGhvbmUKICAgICAgICAgICAgJ1NlbGVjdGVkQ3VzdG9tZXJVc2VyJywKICAgICAgICBdLAogICAgICAgIFJlc3BvbnNpYmxlSUQgPT4gWwogICAgICAgICAgICAnTmV3UmVzcG9uc2libGVJRCcsCiAgICAgICAgXSwKICAgICAgICBPd25lcklEID0+IFsKICAgICAgICAgICAgJ05ld093bmVySUQnLAogICAgICAgICAgICAnTmV3VXNlcklEJywKICAgICAgICBdLAogICAgICAgIFF1ZXVlSUQgPT4gWwogICAgICAgICAgICAnRGVzdCcsCiAgICAgICAgICAgICdOZXdRdWV1ZUlEJywKICAgICAgICBdLAogICAgICAgIFN0YXRlSUQgPT4gWwogICAgICAgICAgICAnTmV3U3RhdGVJRCcsCiAgICAgICAgICAgICdOZXh0U3RhdGVJRCcsCiAgICAgICAgXSwKICAgICAgICBQcmlvcml0eUlEID0+IFsKICAgICAgICAgICAgJ05ld1ByaW9yaXR5SUQnLAogICAgICAgIF0sCiAgICApOwoKICAgICMgaW5jb3Jwb3JhdGUgcmVmZXJlbmNlZmlsdGVybGlzdCBpbnRvIHNlYXJjaCBwYXJhbXMKICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCAkREZEZXRhaWxzLT57UmVmZXJlbmNlRmlsdGVyTGlzdH0gKSAmJiAhJFBhcmFte0V4dGVybmFsU291cmNlfSApIHsKICAgICAgICBGSUxURVJJVEVNOgogICAgICAgIGZvciBteSAkRmlsdGVySXRlbSAoICRERkRldGFpbHMtPntSZWZlcmVuY2VGaWx0ZXJMaXN0fS0+QCogKSB7CgogICAgICAgICAgICAjIG1hcCBJRCB0byBJRHMgaWYgbmVjZXNzYXJ5CiAgICAgICAgICAgIG15ICRBdHRyaWJ1dGVOYW1lID0gJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9OwogICAgICAgICAgICBpZiAoIGFueSB7ICRfIGVxICRBdHRyaWJ1dGVOYW1lIH0gcXcoUXVldWVJRCBUeXBlSUQgU3RhdGVJRCBQcmlvcml0eUlEIFNlcnZpY2VJRCBTTEFJRCBPd25lcklEIFJlc3BvbnNpYmxlSUQgKSApIHsKICAgICAgICAgICAgICAgICRBdHRyaWJ1dGVOYW1lIC49ICdzJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBmaWx0ZXIgY29uZmlnCiAgICAgICAgICAgIG5leHQgRklMVEVSSVRFTSB1bmxlc3MgJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9OwogICAgICAgICAgICBuZXh0IEZJTFRFUklURU0gdW5sZXNzICggJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IHx8ICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSApOwoKICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gKSB7CgogICAgICAgICAgICAgICAgIyBkb24ndCBwZXJmb3JtIHNlYXJjaCBpZiBvYmplY3QgYXR0cmlidXRlIHRvIHNlYXJjaCBmb3IgaXMgZW1wdHkKICAgICAgICAgICAgICAgIG15ICRFcXVhbHNPYmplY3RBdHRyaWJ1dGU7CiAgICAgICAgICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17T2JqZWN0fSApICkgewogICAgICAgICAgICAgICAgICAgICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUgPSAkUGFyYW17T2JqZWN0fXtEeW5hbWljRmllbGR9eyAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfSAvLyAkUGFyYW17T2JqZWN0fXsgJEZpbHRlckl0ZW0tPntFcXVhbHNPYmplY3RBdHRyaWJ1dGV9IH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQgJFBhcmFte1BhcmFtT2JqZWN0fSApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57RXF1YWxzT2JqZWN0QXR0cmlidXRlfSA9fiAvXkR5bmFtaWNGaWVsZF8oPzxERk5hbWU+XFMrKS8gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRGaWx0ZXJJdGVtREZDb25maWcgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJCt7REZOYW1lfSwKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBGSUxURVJJVEVNIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRmlsdGVySXRlbURGQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkVmFsdWVHZXQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJhbU9iamVjdCAgICAgICAgPT4gJFBhcmFte1BhcmFtT2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRmlsdGVySXRlbURGQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJhbnNmb3JtRGF0ZXMgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICAgICAgICAgIyBtYXRjaCBzdGFuZGFyZCB0aWNrZXQgYXR0cmlidXRlIG5hbWVzIHdpdGggZWRpdCBtYXNrIGF0dHJpYnV0ZSBuYW1lcwogICAgICAgICAgICAgICAgICAgICAgICBteSBAUGFyYW1OYW1lcyA9ICRQYXJhbXtQYXJhbU9iamVjdH0tPkdldFBhcmFtTmFtZXM7CgogICAgICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIGF0dHJpYnV0ZSBuYW1lIGl0c2VsZiBpcyBpbiBwYXJhbXMKICAgICAgICAgICAgICAgICAgICAgICAgIyBOT1RFIHRyeWluZyBhdHRyaWJ1dGUgaXRzZWxmIGlzIGNydWNpYWxseSBpbXBvcnRhbnQgaW4gY2FzZSBvZiBRdWV1ZUlECiAgICAgICAgICAgICAgICAgICAgICAgICMgICBiZWNhdXNlIEFnZW50VGlja2V0UGhvbmUgZG9lcyBub3QgcHJvdmlkZSBRdWV1ZUlELCBidXQgcHV0cyB0aGUgaWQgaW4KICAgICAgICAgICAgICAgICAgICAgICAgIyAgIERlc3QsIGFuZCBBZ2VudFRpY2tldEVtYWlsIGxlYXZlcyBEZXN0IGFzIGEgc3RyaW5nIGJ1dCBwdXRzIHRoZSBpZCBpbiBRdWV1ZUlECiAgICAgICAgICAgICAgICAgICAgICAgIG15ICgkUGFyYW1OYW1lKSA9IGdyZXAgeyAkXyBlcSAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfSBAUGFyYW1OYW1lczsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgaWYgbm90LCB0cnkgdG8gZmluZCBhIG1hcHBlZCBhdHRyaWJ1dGUgbmFtZQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW1OYW1lICkgewoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgaWYgbWFwcGVkIGF0dHJpYnV0ZSBuYW1lcyBleGlzdCBhdCBhbGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXBwZWRBdHRyaWJ1dGVzID0gJEF0dHJpYnV0ZU5hbWVNYXBwaW5neyAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gfTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcmVmICRNYXBwZWRBdHRyaWJ1dGVzIGVxICdBUlJBWScgKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BUFBFREFUVFJJQlVURToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE1hcHBlZEF0dHJpYnV0ZSAoICRNYXBwZWRBdHRyaWJ1dGVzLT5AKiApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCRQYXJhbU5hbWUpID0gZ3JlcCB7ICRfIGVxICRNYXBwZWRBdHRyaWJ1dGUgfSBAUGFyYW1OYW1lczsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgTUFQUEVEQVRUUklCVVRFIGlmICRQYXJhbU5hbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5sZXNzICRQYXJhbU5hbWU7CgogICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFBhcmFte1BhcmFtT2JqZWN0fS0+R2V0UGFyYW0oIFBhcmFtID0+ICRQYXJhbU5hbWUgKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICMgd2hlbiBjYWxsZWQgYnkgQWdlbnRSZWZlcmVuY2VTZWFyY2gsIERlc3QgaXMgYSBzdHJpbmcgYW5kIHdlIG5lZWQgdG8gZXh0cmFjdCB0aGUgUXVldWVJRAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRQYXJhbU5hbWUgZXEgJ0Rlc3QnICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFF1ZXVlSUQgPSAnJzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9fiAvXihcZHsxLDEwMH0pXHxcfC4rPyQvICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRRdWV1ZUlEID0gJDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkRXF1YWxzT2JqZWN0QXR0cmlidXRlID0gJFF1ZXVlSUQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBlbnN1cmUgdGhhdCBmb3IgRXF1YWxzT2JqZWN0QXR0cmlidXRlIFVzZXJJRCBhbHdheXMgJFNlbGYtPntVc2VySUR9IGlzIHVzZWQgaW4gdGhlIGVuZAogICAgICAgICAgICAgICAgaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc09iamVjdEF0dHJpYnV0ZX0gZXEgJ1VzZXJJRCcgKSB7CiAgICAgICAgICAgICAgICAgICAgJEVxdWFsc09iamVjdEF0dHJpYnV0ZSA9ICRQYXJhbXtVc2VySUR9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIHJldHVybiB1bmxlc3MgJEVxdWFsc09iamVjdEF0dHJpYnV0ZTsKICAgICAgICAgICAgICAgIHJldHVybiBpZiAoIHJlZiAkRXF1YWxzT2JqZWN0QXR0cmlidXRlIGVxICdBUlJBWScgJiYgISRFcXVhbHNPYmplY3RBdHRyaWJ1dGUtPkAqICk7CgogICAgICAgICAgICAgICAgIyBjb25maWcgaXRlbSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgIGlmICggJEZpbHRlckl0ZW0tPntSZWZlcmVuY2VPYmplY3RBdHRyaWJ1dGV9ID1+IG17XkNvbn1pICkgewogICAgICAgICAgICAgICAgICAgICRTZWFyY2hQYXJhbXN7JEF0dHJpYnV0ZU5hbWV9ID0gJEVxdWFsc09iamVjdEF0dHJpYnV0ZTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15EeW59aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRFcXVhbHNPYmplY3RBdHRyaWJ1dGUsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGFycmF5IGF0dHJpYnV0ZQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3skQXR0cmlidXRlTmFtZX0gPSBbJEVxdWFsc09iamVjdEF0dHJpYnV0ZV07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCAkRmlsdGVySXRlbS0+e0VxdWFsc1N0cmluZ30gKSB7CgogICAgICAgICAgICAgICAgIyBjb25maWcgaXRlbSBhdHRyaWJ1dGUKICAgICAgICAgICAgICAgICMgVE9ETyBjaGVjayBpZiB0aGlzIGhhcyB0byBiZSBhZGFwdGVkIGZvciB0aWNrZXQgc2VhcmNoCiAgICAgICAgICAgICAgICBpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15Db259aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9ICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIGR5bmFtaWMgZmllbGQgYXR0cmlidXRlCiAgICAgICAgICAgICAgICBlbHNpZiAoICRGaWx0ZXJJdGVtLT57UmVmZXJlbmNlT2JqZWN0QXR0cmlidXRlfSA9fiBte15EeW59aSApIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgRXF1YWxzID0+ICRGaWx0ZXJJdGVtLT57RXF1YWxzU3RyaW5nfSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgYXJyYXkgYXR0cmlidXRlCiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAkU2VhcmNoUGFyYW1zeyRBdHRyaWJ1dGVOYW1lfSA9IFsgJEZpbHRlckl0ZW0tPntFcXVhbHNTdHJpbmd9IF07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBTdXBwb3J0IHJlc3RyaWN0aW9uIGJ5IGNsYXNzCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERGRGV0YWlscy0+e0NsYXNzSURzfSApICYmICEkUGFyYW17RXh0ZXJuYWxTb3VyY2V9ICkgewogICAgICAgIGlmICggJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30gKSB7CiAgICAgICAgICAgIG15IEBDbGFzc0lEczsKICAgICAgICAgICAgZm9yIG15ICRDbGFzc0lEICggJFNlYXJjaFBhcmFtc3tDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCBhbnkgeyAkXyBlcSAkQ2xhc3NJRCB9ICRERkRldGFpbHMtPntDbGFzc0lEc30tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQENsYXNzSURzLCAkQ2xhc3NJRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyBAQ2xhc3NJRHM7CgogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0NsYXNzSURzfSA9IFxAQ2xhc3NJRHM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0NsYXNzSURzfSA9ICRERkRldGFpbHMtPntDbGFzc0lEc307CiAgICAgICAgfQogICAgfQoKICAgICMgU3VwcG9ydCByZXN0cmljdGlvbiBieSBkZXBsb3ltZW50IHN0YXRlCiAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSggJERGRGV0YWlscy0+e0RlcGxTdGF0ZUlEc30gKSApIHsKICAgICAgICBpZiAoICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfSApIHsKICAgICAgICAgICAgbXkgQERlcGxveW1lbnRTdGF0ZUlEczsKICAgICAgICAgICAgZm9yIG15ICREZXBsb3ltZW50U3RhdGVJRCAoICRTZWFyY2hQYXJhbXN7RGVwbFN0YXRlSURzfS0+QCogKSB7CiAgICAgICAgICAgICAgICBpZiAoIGFueSB7ICRfIGVxICREZXBsb3ltZW50U3RhdGVJRCB9ICRERkRldGFpbHMtPntEZXBsU3RhdGVJRHN9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBEZXBsb3ltZW50U3RhdGVJRHMsICREZXBsb3ltZW50U3RhdGVJRDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyBARGVwbG95bWVudFN0YXRlSURzOwoKICAgICAgICAgICAgJFNlYXJjaFBhcmFtc3tEZXBsU3RhdGVJRHN9ID0gXEBEZXBsb3ltZW50U3RhdGVJRHM7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICAkU2VhcmNoUGFyYW1ze0RlcGxTdGF0ZUlEc30gPSAkREZEZXRhaWxzLT57RGVwbFN0YXRlSURzfTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgYSBsaXN0IG9mIGNvbmZpZyBpdGVtIElEcwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKICAgIG15ICRDb25maWdJdGVtSURzICAgID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25TZWFyY2goCiAgICAgICAgTGltaXQgICAgICAgICAgICA9PiAkUGFyYW17TWF4UmVzdWx0c30sCiAgICAgICAgUmVzdWx0ICAgICAgICAgICA9PiAnQVJSQVknLAogICAgICAgIE9yZGVyQnkgICAgICAgICAgPT4gWydOdW1iZXInXSwKICAgICAgICBPcmRlckJ5RGlyZWN0aW9uID0+IFsnRG93biddLAogICAgICAgICVTZWFyY2hQYXJhbXMsCiAgICApOwogICAgcmV0dXJuIHVubGVzcyBJc0FycmF5UmVmV2l0aERhdGEoJENvbmZpZ0l0ZW1JRHMpOwoKICAgICMgYWN0dWFsbHkgc3RvcmUgbGF0ZXN0IHZlcnNpb24gSUQKICAgIG15IEBWZXJzaW9uSURzOwogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCAkQ29uZmlnSXRlbUlEcy0+QCogKSB7CiAgICAgICAgbXkgJFZlcnNpb25MaXN0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPlZlcnNpb25MaXN0KAogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICApOwoKICAgICAgICBpZiAoIElzQXJyYXlSZWZXaXRoRGF0YSgkVmVyc2lvbkxpc3QpICkgewogICAgICAgICAgICBwdXNoIEBWZXJzaW9uSURzLCAkVmVyc2lvbkxpc3QtPkAqOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gQFZlcnNpb25JRHM7Cn0KCj1oZWFkMiBWYWx1ZUZvckxlbnMoKQoKdGhpcyBtZXRob2QgcmV0dXJucyB0aGUgcGFzc2VkIHZhbHVlIHVuY2hhbmdlZC4gSXQgaXMgb25seSBpbXBsZW1lbnRlZCBzbyB0aGF0CnRoZSBpbXBsZW1lbnRhdGlvbiBmcm9tIHRoZSBwYXJlbnQgY2xhc3MgQzxLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpEcml2ZXI6OklUU01Db25maWdJdGVtUmVmZXJlbmNlPiBpcyBub3QgdXNlZC4KCj1jdXQKCnN1YiBWYWx1ZUZvckxlbnMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJFBhcmFte1ZhbHVlfTsKfQoKMTsK</File>
        <File Location="Kernel/System/DynamicField/Event/ITSMConfigItemDefinitionSync.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkV2ZW50OjpJVFNNQ29uZmlnSXRlbURlZmluaXRpb25TeW5jOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJywKICAgICdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhEYXRhIEV2ZW50IENvbmZpZyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CgogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDEgaWYgJFBhcmFte0RhdGF9e05ld0RhdGF9e09iamVjdFR5cGV9IG5lICdJVFNNQ29uZmlnSXRlbSc7CiAgICByZXR1cm4gICBpZiAkUGFyYW17RXZlbnR9IG5lICdEeW5hbWljRmllbGRVcGRhdGUnOwoKICAgICMgVE9ETzogRHluYW1pY0ZpZWxkRGVsZXRlCgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBteSAkQ2xhc3NMaXN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIG15ICREeW5hbWljRmllbGQ7CgogICAgIyBpZiB0aGUgX29sZF8gZHluYW1pYyBmaWVsZCB3YXMgcGFydCBvZiBhIHNldCwgYW55IGNoYW5nZSB0byBpdCB3aWxsIGFmZmVjdCB0aGUgZXhpc3Rpbmcgc2V0CiAgICAjIGFuZCB0aHVzIHRoZSBDSQogICAgaWYgKCAkUGFyYW17RGF0YX17T2xkRGF0YX17Q29uZmlnfXtQYXJ0T2ZTZXR9ICkgewogICAgICAgICREeW5hbWljRmllbGQgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyktPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgSUQgPT4gJFBhcmFte0RhdGF9e09sZERhdGF9e0NvbmZpZ317UGFydE9mU2V0fSwKICAgICAgICApOwogICAgfQoKICAgICMgZm9yIHRoZSBzdGFuZGFyZCBjYXNlLCB0aGUgZmllbGQgaXMgZGlyZWN0bHkgaW50ZWdyYXRlZCwgd2UgdGFrZSB0aGUgX25ld18gZGF0YQogICAgIyAtPiBpbiBjYXNlIG9mIGEgbmFtZSBjaGFuZ2Ugd2UgZG8gbm90IHNldCBjbGFzc2VzIG91dCBvZiBzeW5jLCBhcyB3ZSB3aWxsIG5vdAogICAgIyBhdXRvbWF0aWNhbGx5IHVwZGF0ZSBkZWZpbml0aW9uIHN0cmluZ3MKICAgICMgYSBuZXcgZmllbGQgbmFtZSBoYXMgdG8gYmUgdXBkYXRlZCBtYW51YWxseSBpbiB0aGUgZGVmaW5pdGlvbgogICAgZWxzZSB7CiAgICAgICAgJER5bmFtaWNGaWVsZCA9ICRQYXJhbXtEYXRhfXtOZXdEYXRhfTsKICAgIH0KCiAgICBteSAlT3V0T2ZTeW5jRGVmaW5pdGlvbnM7CgogICAgIyBMb29wIG92ZXIgYWxsIGNsYXNzZXMgYW5kIGNoZWNrIHdoZXRoZXIgdGhleSBpbmNsdWRlIHRoZSBjaGFuZ2VkIGR5bmFtaWMgZmllbGQKICAgIGZvciBteSAkQ2xhc3NJRCAoIGtleXMgJENsYXNzTGlzdC0+JSogKSB7CiAgICAgICAgbXkgJERlZmluaXRpb25SZWYgPSAkQ29uZmlnSXRlbU9iamVjdC0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICAjIHVzZSBPbGREYXRhIHRvIGFjY291bnQgZm9yIG5hbWUgY2hhbmdlcwogICAgICAgIGlmICggJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyAkUGFyYW17RGF0YX17T2xkRGF0YX17TmFtZX0gfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkT3V0T2ZTeW5jRGVmaW5pdGlvbnN7JENsYXNzSUR9IH0sICREeW5hbWljRmllbGQtPntJRH07CiAgICAgICAgfQoKICAgICAgICAjIHNldC1pbm5lciBmaWVsZHMgYXJlIG5vdCBzdG9yZWQgaW4gZGVmaW5pdGlvbiBkeW5hbWljIGZpZWxkIHJlZgogICAgICAgIGVsc2lmICggJERlZmluaXRpb25SZWYtPntEeW5hbWljRmllbGRSZWZ9eyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSApIHsKICAgICAgICAgICAgcHVzaCBAeyAkT3V0T2ZTeW5jRGVmaW5pdGlvbnN7JENsYXNzSUR9IH0sICREeW5hbWljRmllbGQtPntJRH07CiAgICAgICAgfQogICAgfQoKICAgICRDb25maWdJdGVtT2JqZWN0LT5EZWZpbml0aW9uU2V0T3V0T2ZTeW5jKAogICAgICAgIENsYXNzZXMgPT4gXCVPdXRPZlN5bmNEZWZpbml0aW9ucywKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/DynamicField/ObjectType/ITSMConfigItem.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6Ok9iamVjdFR5cGU6OklUU01Db25maWdJdGVtOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKCiMgT1RPQk8gbW9kdWxlcwp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6T2JqZWN0VHlwZTo6SVRTTUNvbmZpZ0l0ZW0gLSBzdXBwb3J0IGZvciBJVFNNQ29uZmlnSXRlbSBhcyBhbiBvYmplY3QgdHlwZQoKPWhlYWQxIERFU0NSSVBUSU9OCgpBdHRhY2ggZHluYW1pYyBmaWVsZHMgdG8gYW4gSVRTTUNvbmZpZ0l0ZW0uCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpVc3VhbGx5LCB5b3Ugd2FudCB0byBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcwpieSB1c2luZyBLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpPYmplY3RUeXBlOjpJVFNNQ29uZmlnSXRlbS0+bmV3KCk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICByZXR1cm4gYmxlc3Mge30sICRUeXBlOwp9Cgo9aGVhZDIgUHJlVmFsdWVTZXQoKQoKUGVyZm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMgYmVmb3JlIHRoZSB2YWx1ZSBpcyBzZXQgZm9yIGEgZHluYW1pYyBmaWVsZCBmb3IgdGhpcyBvYmplY3QgdHlwZS4KCiAgICBteSAkU3VjY2VzcyA9ICREeW5hbWljRmllbGRJVFNNQ29uZmlnSXRlbUhhbmRsZXJPYmplY3QtPlByZVZhbHVlU2V0KAogICAgICAgIFBhcmFtICAgICAgICAgICAgICA9PiBcJVBhcmFtLAogICAgKTsKClRoaXMgaGFuZGxlciBjYW4gYmUgc2tpcHBlZCBieSBwYXNzaW5nIHRoZSBhdHRyaWJ1dGUgQzxDb25maWdJdGVtSGFuZGxlZD4gaW4gQzxQYXJhbT4uCgo9Y3V0CgpzdWIgUHJlVmFsdWVTZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbCBuZWVkZWQgcGFyYW1zIGFyZSBjaGVja2VkIGJ5IHRoZSBiYWNrZW5kIGJlZm9yZQogICAgaWYgKCAhJFBhcmFte1BhcmFtfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgUGFyYW0gb2YgYmFja2VuZCEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGlmIHdlIGFyZSBjb21pbmcgZnJvbSBWZXJzaW9uLnBtIG5vdGhpbmcgaGFzIHRvIGJlIGNoYW5nZWQKICAgIHJldHVybiAxIGlmICRQYXJhbXtQYXJhbX17Q29uZmlnSXRlbUhhbmRsZWR9OwoKICAgICMgdXBncmFkZSB2ZXJzaW9uIG9mIHN1YnNlcXVlbnQgZHluYW1pYyBmaWVsZCBjaGFuZ2VzIGlmIGEgdmVyc2lvbiB3YXMgYWRkZWQgaW4gdGhpcyByZXF1ZXN0CiAgICBpZiAoICRTZWxmLT57VmVyc2lvblVwZ3JhZGV9ICYmICRTZWxmLT57VmVyc2lvblVwZ3JhZGV9eyAkUGFyYW17UGFyYW19e09iamVjdElEfSB9ICkgewogICAgICAgICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9ID0gJFNlbGYtPntWZXJzaW9uVXBncmFkZX17ICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9IH07CgogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIHJldHVybiAxIGlmICEkUGFyYW17UGFyYW19e0R5bmFtaWNGaWVsZENvbmZpZ317Q0lDbGFzc307CgogICAgIyBjaGVjayB3aGV0aGVyIHRoZSBjaGFuZ2VkIGZpZWxkIHRyaWdnZXJzIGEgbmV3IGNvbmZpZ2l0ZW0gdmVyc2lvbiBhbmQgaWYgc28sIGFkZCBhIG5ldyBvbmUKICAgIG15ICRDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBOYW1lICA9PiAkUGFyYW17UGFyYW19e0R5bmFtaWNGaWVsZENvbmZpZ317Q0lDbGFzc30sCiAgICApOwogICAgbXkgJVZlcnNpb25UcmlnZ2VyID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRDbGFzc1ByZWZlcmVuY2VzLT57VmVyc2lvblRyaWdnZXJ9IC8vIFtdIH07CgogICAgaWYgKCAkVmVyc2lvblRyaWdnZXJ7ICdEeW5hbWljRmllbGRfJyAuICRQYXJhbXtQYXJhbX17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSB9ICkgewogICAgICAgIG15ICRDb25maWdJdGVtT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgICAgIG15ICROZXdWZXJzaW9uSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgTGFzdFZlcnNpb25JRCA9PiAkUGFyYW17UGFyYW19e09iamVjdElEfSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17UGFyYW19e1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJE5ld1ZlcnNpb25JRCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBjcmVhdGUgbmV3IHZlcnNpb24gZm9yIExhc3RWZXJzaW9uSUQgJFBhcmFte1BhcmFtfXtPYmplY3RJRH0hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgc2V0IG9sZCBhbmQgbmV3IHZlcnNpb24gdG8gbmV3IG9uZSB0byBtYWtlIHN1cmUsIHRoYXQgbGVuc2VzIGNhbiB3b3JrIHdpdGggZWl0aGVyCiAgICAgICAgJFNlbGYtPntWZXJzaW9uVXBncmFkZX17ICRQYXJhbXtQYXJhbX17T2JqZWN0SUR9IH0gPSAkTmV3VmVyc2lvbklEOwogICAgICAgICRTZWxmLT57VmVyc2lvblVwZ3JhZGV9eyROZXdWZXJzaW9uSUR9ICAgICAgICAgICAgID0gJE5ld1ZlcnNpb25JRDsKICAgICAgICAkUGFyYW17UGFyYW19e09iamVjdElEfSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9ICROZXdWZXJzaW9uSUQ7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBQb3N0VmFsdWVTZXQoKQoKUGVyZm9ybSBzcGVjaWZpYyBmdW5jdGlvbnMgYWZ0ZXIgdGhlIHZhbHVlIGhhcyBiZWVuIHNldCBmb3IgYSBkeW5hbWljIGZpZWxkIGZvciB0aGlzIG9iamVjdCB0eXBlLgoKICAgIG15ICRTdWNjZXNzID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+UG9zdFZhbHVlU2V0KAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLCAgICAgICMgY29tcGxldGUgY29uZmlnIG9mIHRoZSBEeW5hbWljRmllbGQKICAgICAgICBPYmplY3RJRCAgICAgICAgICAgPT4gJE9iamVjdElELCAgICAgICAgICAgICAgICAjIElEIG9mIHRoZSBjdXJyZW50IG9iamVjdCB0aGF0IHRoZSBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbXVzdCBiZSBsaW5rZWQgdG8sIGUuIGcuIElUU01Db25maWdJdGVtSUQKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFZhbHVlLCAgICAgICAgICAgICAgICAgICAjIFZhbHVlIHRvIHN0b3JlLCBkZXBlbmRzIG9uIGJhY2tlbmQgdHlwZQogICAgICAgIFVzZXJJRCAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgQ29uZmlnSXRlbUhhbmRsZWQgID0+IDEsICAgICAgICAgICAgICAgICAgICAgICAgIyBvcHRpb25hbCwgc2tpcHMgdGhpcyBpZiBoYW5kbGVkIGVsc2V3aGVyZQogICAgKTsKClRoaXMgaGFuZGxlciBjYW4gYmUgc2tpcHBlZCBieSBwYXNzaW5nIHRoZSBhdHRyaWJ1dGUgQzxDb25maWdJdGVtSGFuZGxlZD4gaW4gQzxQYXJhbT4uCgo9Y3V0CgpzdWIgUG9zdFZhbHVlU2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBpZiB3ZSBhcmUgY29taW5nIGZyb20gVmVyc2lvbi5wbSBub3RoaW5nIGhhcyB0byBiZSBjaGFuZ2VkCiAgICByZXR1cm4gMSBpZiAkUGFyYW17Q29uZmlnSXRlbUhhbmRsZWR9OwoKICAgICMgYWxsIG5lZWRlZCBwYXJhbXMgYXJlIGNoZWNrZWQgYnkgdGhlIGJhY2tlbmQgYmVmb3JlCiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwogICAgbXkgJENhY2hlT2JqZWN0ICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKTsKICAgIG15ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcpOwoKICAgIG15ICRDb25maWdJdGVtSUQgPSAkQ29uZmlnSXRlbU9iamVjdC0+VmVyc2lvbkNvbmZpZ0l0ZW1JREdldCggVmVyc2lvbklEID0+ICRQYXJhbXtPYmplY3RJRH0gKTsKCiAgICAjIGRlbGV0ZSBjYWNoZQogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiAnQ29uZmlnSXRlbUdldDo6VmVyc2lvbklEOjonIC4gJFBhcmFte09iamVjdElEfSAuICc6OkRGRGF0YTo6MScsCiAgICApOwogICAgJENhY2hlT2JqZWN0LT5EZWxldGUoCiAgICAgICAgVHlwZSA9PiAkQ29uZmlnSXRlbU9iamVjdC0+e0NhY2hlVHlwZX0sCiAgICAgICAgS2V5ICA9PiAnQ29uZmlnSXRlbUdldDo6Q29uZmlnSXRlbUlEOjonIC4gJENvbmZpZ0l0ZW1JRCAuICc6OkRGRGF0YTo6MScsCiAgICApOwoKICAgICMgcHJlcGFyZSByZWFkYWJsZSB2YWx1ZXMgZm9yIHRoZSBoaXN0b3J5LAogICAgIyB0aGUgcmVzdWx0IGlzIGEgaGFzaHJlZiB3aXRoIHRoZSBrZXlzIFZhbHVlIGFuZCBMYWJlbAogICAgbXkgJFJlYWRhYmxlVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+UmVhZGFibGVWYWx1ZVJlbmRlcigKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30sCiAgICAgICAgVmFsdWUgICAgICAgICAgICAgID0+ICRQYXJhbXtWYWx1ZX0KICAgICk7CiAgICBteSAkUmVhZGFibGVPbGRWYWx1ZSA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5SZWFkYWJsZVZhbHVlUmVuZGVyKAogICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfSwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFBhcmFte09sZFZhbHVlfSwKICAgICk7CgogICAgIyB0cmlnZ2VyIGV2ZW50CiAgICAkQ29uZmlnSXRlbU9iamVjdC0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRHluYW1pY0ZpZWxkVXBkYXRlXycgLiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtOYW1lfSwKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIEZpZWxkTmFtZSAgICAgICAgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317TmFtZX0sCiAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgPT4gJFBhcmFte1ZhbHVlfSwKICAgICAgICAgICAgT2xkVmFsdWUgICAgICAgICA9PiAkUGFyYW17T2xkVmFsdWV9LAogICAgICAgICAgICBSZWFkYWJsZVZhbHVlICAgID0+ICRSZWFkYWJsZVZhbHVlLT57VmFsdWV9LAogICAgICAgICAgICBSZWFkYWJsZU9sZFZhbHVlID0+ICRSZWFkYWJsZU9sZFZhbHVlLT57VmFsdWV9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgIFVzZXJJRCAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgT2JqZWN0RGF0YUdldCgpCgpyZXRyaWV2ZXMgdGhlIGRhdGEgb2YgdGhlIGN1cnJlbnQgb2JqZWN0LgoKICAgIG15ICVPYmplY3REYXRhID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+T2JqZWN0RGF0YUdldCgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywgICAgICAjIGNvbXBsZXRlIGNvbmZpZyBvZiB0aGUgRHluYW1pY0ZpZWxkCiAgICAgICAgVXNlcklEICAgICAgICAgICAgID0+IDEyMywKICAgICk7CgpyZXR1cm5zOgoKICAgICVPYmplY3REYXRhID0gKAogICAgICAgIE9iamVjdElEID0+IDEyMywKICAgICAgICBEYXRhICAgICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgPT4gMTIzLAogICAgICAgICAgICBOdW1iZXIgICAgICAgICAgID0+ICcyMDEwMTAyNzAwMDAwMScsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgICAgPT4gMTcsCiAgICAgICAgICAgIC4uLgogICAgICAgIH0KICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0RGF0YUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQ2hlY2sgbmVlZGVkIHN0dWZmLgogICAgZm9yIG15ICROZWVkZWQgKHF3KER5bmFtaWNGaWVsZENvbmZpZyBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBDaGVjayBEeW5hbWljRmllbGRDb25maWcgKGdlbmVyYWwpLgogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9ICkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgZmllbGQgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIENoZWNrIER5bmFtaWNGaWVsZENvbmZpZyAoaW50ZXJuYWxseSkuCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoSUQgRmllbGRUeXBlIE9iamVjdFR5cGUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ30tPnskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCBpbiBEeW5hbWljRmllbGRDb25maWchIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIFRPRE86IHdoeSBkb2VzIHRoaXMgbWV0aG9kIGRlcGVuZCBvbiB0aGUgcGFyYW0gb2JqZWN0PwogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oCiAgICAgICAgUGFyYW0gPT4gJ0NvbmZpZ0l0ZW1JRCcsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJENvbmZpZ0l0ZW1JRDsKCiAgICBteSAlQ29uZmlnSXRlbSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgKTsKCiAgICByZXR1cm4gKAogICAgICAgIE9iamVjdElEID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgRGF0YSAgICAgPT4gXCVDb25maWdJdGVtLAogICAgKTsKfQoKPWhlYWQyIEdldEVudGl0eUlEZm9yTGlua2luZygpCgpyZXRyaWV2ZXMgQ29uZmlnSXRlbUlEIGZvciBnaXZlbiBWZXJzaW9uSUQKCiAgICBteSAkQ29uZmlnSXRlbUlEID0gJER5bmFtaWNGaWVsZElUU01Db25maWdJdGVtSGFuZGxlck9iamVjdC0+R2V0RW50aXR5SURmb3JMaW5raW5nKAogICAgICAgIFZlcnNpb25JRCA9PiAxMjMsCiAgICAgICAgTGlua0tleSA9PiAnU291cmNlJywgICAgICAjIG9yICdUYXJnZXQnCiAgICAgICAgVHlwZU5hbWUgPT4gJ0NvbmZpZ0l0ZW0nLCAjIG9yICdDb25maWdJdGVtVmVyc2lvbicKICAgICk7Cgo9Y3V0CgpzdWIgR2V0RW50aXR5SURmb3JMaW5raW5nIHsKCiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRJRCAgICAgICA9ICRQYXJhbXtJRH07CiAgICBteSAkTGlua0tleSAgPSAkUGFyYW17TGlua0tleX07CiAgICBteSAkVHlwZU5hbWUgPSAkUGFyYW17VHlwZU5hbWV9OwoKICAgICMgaWYgdGhlIGtleSBpcyBhICdUYXJnZXQnIGtleSAuLi4KICAgIGlmICggJExpbmtLZXkgZXEgJ1RhcmdldCcgKSB7CgogICAgICAgICMgLi4udGhlbiBvbmx5IENvbmZpZ0l0ZW1WZXJzaW9uIGl0ZW1zIHdpbGwgbmVlZCBWZXJzaW9uSUQgcmVzb2x1dGlvbgogICAgICAgIGlmICggJFR5cGVOYW1lIGVxICdDb25maWdJdGVtJyApIHsKICAgICAgICAgICAgcmV0dXJuICRJRDsKICAgICAgICB9CiAgICB9CgogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKTsKCiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIFZlcnNpb25JRCAgICAgPT4gJElELAogICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMCwKICAgICk7CgogICAgcmV0dXJuICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfTsKfQoKMTsK</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+IDEsICAgICMgKG9wdGlvbmFsKSBkZWZhdWx0IDAgKDB8MSkKICAgICk7CgpBIGhhc2hyZWYgd2l0aCB0aGUgZm9sbG93aW5nIGtleXMgaXMgcmV0dXJuZWQ6Cgo9b3ZlciA0Cgo9aXRlbSBDb25maWdJdGVtSUQKCj1pdGVtIE51bWJlcgoKPWl0ZW0gQ2xhc3NJRAoKPWl0ZW0gQ2xhc3MKCj1pdGVtIExhc3RWZXJzaW9uSUQKCj1pdGVtIEN1ckRlcGxTdGF0ZUlECgo9aXRlbSBDdXJEZXBsU3RhdGUKCj1pdGVtIEN1ckRlcGxTdGF0ZVR5cGUKCj1pdGVtIEN1ckluY2lTdGF0ZUlECgo9aXRlbSBDdXJJbmNpU3RhdGUKCj1pdGVtIEN1ckluY2lTdGF0ZVR5cGUKCj1pdGVtIFZlcnNpb25JRAoKPWl0ZW0gTmFtZQoKPWl0ZW0gVmVyc2lvblN0cmluZwoKPWl0ZW0gRGVzY3JpcHRpb24KCj1pdGVtIERlZmluaXRpb25JRAoKPWl0ZW0gRGVwbFN0YXRlSUQKCj1pdGVtIERlcGxTdGF0ZQoKPWl0ZW0gRGVwbFN0YXRlVHlwZQoKPWl0ZW0gSW5jaVN0YXRlSUQKCj1pdGVtIEluY2lTdGF0ZQoKPWl0ZW0gSW5jaVN0YXRlVHlwZQoKPWl0ZW0gQ3JlYXRlVGltZQoKPWl0ZW0gQ3JlYXRlQnkKCj1pdGVtIENoYW5nZVRpbWUKCj1pdGVtIENoYW5nZUJ5Cgo9YmFjawoKQ2FjaGluZyBjYW4ndCBiZSB0dXJuZWQgb2ZmLgoKV2hlbiB0aGUgcGFyYW1ldGVyIEM8RHluYW1pY0ZpZWxkcz4gaXMgcGFzc2VkIHRoZW4gdGhlIGR5bmFtaWMgZmllbGRzIGFyZSByZXR1cm5lZCBhZGRpdGlvbmFsbHkuCgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgd2hldGhlciB0byBzdXBwcmVzcyBlcnJvciBtZXNzYWdlcwogICAgbXkgJFNpbGVudCA9ICRQYXJhbXtTaWxlbnR9ID8gMSA6IDA7CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRQYXJhbXtDb25maWdJdGVtSUR9ICYmICEkUGFyYW17VmVyc2lvbklEfSApIHsKICAgICAgICBpZiAoICEkU2lsZW50ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBDb25maWdJdGVtSUQgb3IgVmVyc2lvbklEIScsCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBpZ25vcmUgRHluYW1pY0ZpZWxkcyBwZXIgZGVmYXVsdCwKICAgICMgbWFrZSBzdXJlIHRoYXQgdGhlIHZhcmlhYmxlIGlzIGVpdGhlciAwIG9yIDEsIGFzIGl0IGlzIHVzZWQgZm9yIHRoZSBjYWNoZSBrZXkKICAgIG15ICRERkRhdGEgPSAkUGFyYW17RHluYW1pY0ZpZWxkc30gPyAxIDogMDsKCiAgICAjIGNoZWNrIGlmIHJlc3VsdCBpcyBhbHJlYWR5IGNhY2hlZCwgY29uc2lkZXJpbmcgdGhlIER5bmFtaWNGaWVsZHMgcGFyYW1ldGVyCiAgICBteSAkQ2FjaGVLZXkgPSAkUGFyYW17VmVyc2lvbklEfQogICAgICAgID8KICAgICAgICBqb2luKAogICAgICAgICAgICAnOjonLCAnQ29uZmlnSXRlbUdldCcsCiAgICAgICAgICAgIFZlcnNpb25JRCA9PiAkUGFyYW17VmVyc2lvbklEfSwKICAgICAgICAgICAgREZEYXRhICAgID0+ICRERkRhdGEKICAgICAgICApCiAgICAgICAgOgogICAgICAgIGpvaW4oCiAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBERkRhdGEgICAgICAgPT4gJERGRGF0YQogICAgICAgICk7CgogICAgbXkgJENhY2hlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkNhY2hlJyk7CiAgICBteSAkQ2FjaGUgICAgICAgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICBLZXkgID0+ICRDYWNoZUtleSwKICAgICk7CgogICAgaWYgKCRDYWNoZSkgewogICAgICAgIGlmICggJFBhcmFte1ZlcnNpb25JRH0gJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gbmUgJENhY2hlLT57Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgaWYgKCAhJFNpbGVudCApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlZlcnNpb25JRCAkUGFyYW17VmVyc2lvbklEfSBpcyBub3QgYSB2ZXJzaW9uIG9mIENvbmZpZ0l0ZW1JRCAkUGFyYW17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGRjbG9uZSgkQ2FjaGUpIGlmICRDYWNoZTsKICAgIH0KCiAgICAjIGdldCBzcGVjaWZpYyBDb25maWdJdGVtVmVyc2lvbgogICAgIyBUaGUgcGFyYW1ldGVyIFZlcnNpb25JRCB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgQ29uZmlnSXRlbUlECiAgICBteSBAUm93OwogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSApIHsKCiAgICAgICAgQFJvdyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5TZWxlY3RSb3dBcnJheSgKICAgICAgICAgICAgU1FMID0+IDw8J0VORF9TUUwnLApTRUxFQ1QgY2kuaWQsIGNpLmNvbmZpZ2l0ZW1fbnVtYmVyLCBjaS5jbGFzc19pZCwgY2kubGFzdF92ZXJzaW9uX2lkLAogICAgY2kuY3VyX2RlcGxfc3RhdGVfaWQsIGNpLmN1cl9pbmNpX3N0YXRlX2lkLAogICAgdi5pZCwgdi5uYW1lLCB2LnZlcnNpb25fc3RyaW5nLCB2LmRlZmluaXRpb25faWQsIHYuZGVwbF9zdGF0ZV9pZCwgdi5pbmNpX3N0YXRlX2lkLCB2LmRlc2NyaXB0aW9uLAogICAgdi5jcmVhdGVfdGltZSwgdi5jcmVhdGVfYnksIHYuY2hhbmdlX3RpbWUsIHYuY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtX3ZlcnNpb24gdgogIElOTkVSIEpPSU4gY29uZmlnaXRlbSBjaQogICAgT04gdi5jb25maWdpdGVtX2lkID0gY2kuaWQKICBXSEVSRSB2LmlkID0gPwpFTkRfU1FMCiAgICAgICAgICAgIEJpbmQgID0+IFsgXCRQYXJhbXtWZXJzaW9uSUR9IF0sCiAgICAgICAgICAgIExpbWl0ID0+IDEsCiAgICAgICAgKTsKICAgIH0KCiAgICAjIGdldCBsYXRlc3QgQ29uZmlnSXRlbVZlcnNpb24KICAgIGVsc2UgewoKICAgICAgICBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgICAgICBTUUwgPT4gPDwnRU5EX1NRTCcsClNFTEVDVCBjaS5pZCwgY2kuY29uZmlnaXRlbV9udW1iZXIsIGNpLmNsYXNzX2lkLCBjaS5sYXN0X3ZlcnNpb25faWQsCiAgICBjaS5jdXJfZGVwbF9zdGF0ZV9pZCwgY2kuY3VyX2luY2lfc3RhdGVfaWQsCiAgICB2LmlkLCB2Lm5hbWUsIHYudmVyc2lvbl9zdHJpbmcsIHYuZGVmaW5pdGlvbl9pZCwgdi5kZXBsX3N0YXRlX2lkLCB2LmluY2lfc3RhdGVfaWQsIHYuZGVzY3JpcHRpb24sCiAgICBjaS5jcmVhdGVfdGltZSwgY2kuY3JlYXRlX2J5LCBjaS5jaGFuZ2VfdGltZSwgY2kuY2hhbmdlX2J5CiAgRlJPTSBjb25maWdpdGVtIGNpCiAgTEVGVCBKT0lOIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2CiAgICBPTiBjaS5sYXN0X3ZlcnNpb25faWQgPSB2LmlkCiAgV0hFUkUgY2kuaWQgPSA/CkVORF9TUUwKICAgICAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgTGltaXQgPT4gMSwKICAgICAgICApOwogICAgfQoKICAgICMgZmV0Y2ggdGhlIHJlc3VsdAogICAgbXkgJUNvbmZpZ0l0ZW07CiAgICAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9ICAgPSAkUm93WzBdOwogICAgJENvbmZpZ0l0ZW17TnVtYmVyfSAgICAgICAgID0gJFJvd1sxXTsKICAgICRDb25maWdJdGVte0NsYXNzSUR9ICAgICAgICA9ICRSb3dbMl07CiAgICAkQ29uZmlnSXRlbXtMYXN0VmVyc2lvbklEfSAgPSAkUm93WzNdOwogICAgJENvbmZpZ0l0ZW17Q3VyRGVwbFN0YXRlSUR9ID0gJFJvd1s0XTsKICAgICRDb25maWdJdGVte0N1ckluY2lTdGF0ZUlEfSA9ICRSb3dbNV07CiAgICAkQ29uZmlnSXRlbXtWZXJzaW9uSUR9ICAgICAgPSAkUm93WzZdOwogICAgJENvbmZpZ0l0ZW17TmFtZX0gICAgICAgICAgID0gJFJvd1s3XTsKICAgICRDb25maWdJdGVte1ZlcnNpb25TdHJpbmd9ICA9ICRSb3dbOF07CiAgICAkQ29uZmlnSXRlbXtEZWZpbml0aW9uSUR9ICAgPSAkUm93WzldOwogICAgJENvbmZpZ0l0ZW17RGVwbFN0YXRlSUR9ICAgID0gJFJvd1sxMF07CiAgICAkQ29uZmlnSXRlbXtJbmNpU3RhdGVJRH0gICAgPSAkUm93WzExXTsKICAgICRDb25maWdJdGVte0Rlc2NyaXB0aW9ufSAgICA9ICRSb3dbMTJdOwogICAgJENvbmZpZ0l0ZW17Q3JlYXRlVGltZX0gICAgID0gJFJvd1sxM107CiAgICAkQ29uZmlnSXRlbXtDcmVhdGVCeX0gICAgICAgPSAkUm93WzE0XTsKICAgICRDb25maWdJdGVte0NoYW5nZVRpbWV9ICAgICA9ICRSb3dbMTVdOwogICAgJENvbmZpZ0l0ZW17Q2hhbmdlQnl9ICAgICAgID0gJFJvd1sxNl07CgogICAgIyBjaGVjayBjb25maWcgaXRlbQogICAgaWYgKCAhJENvbmZpZ0l0ZW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICBpZiAoICEkU2lsZW50ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBDb25maWdJdGVtSUQgKCRQYXJhbXtDb25maWdJdGVtSUR9KSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaWYgKCAkUGFyYW17VmVyc2lvbklEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSAmJiAkUGFyYW17Q29uZmlnSXRlbUlEfSBuZSAkQ29uZmlnSXRlbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgIGlmICggISRTaWxlbnQgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJWZXJzaW9uSUQgJFBhcmFte1ZlcnNpb25JRH0gaXMgbm90IGEgdmVyc2lvbiBvZiBDb25maWdJdGVtSUQgJFBhcmFte0NvbmZpZ0l0ZW1JRH0hIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGNoZWNrIGlmIG5lZWQgdG8gcmV0dXJuIER5bmFtaWNGaWVsZHMKICAgIGlmICggJERGRGF0YSAmJiAkQ29uZmlnSXRlbXtEZWZpbml0aW9uSUR9ICkgewoKICAgICAgICAjIGdldCBkeW5hbWljIGZpZWxkIG9iamVjdHMKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgRGVmaW5pdGlvbklEID0+ICRDb25maWdJdGVte0RlZmluaXRpb25JRH0sCiAgICAgICAgKTsKCiAgICAgICAgRFlOQU1JQ0ZJRUxEOgogICAgICAgIGZvciBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICggdmFsdWVzICREZWZpbml0aW9uLT57RHluYW1pY0ZpZWxkUmVmfS0+JSogKSB7CgogICAgICAgICAgICAjIHZhbGlkYXRlIGVhY2ggZHluYW1pYyBmaWVsZAogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZzsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzSGFzaFJlZldpdGhEYXRhKCREeW5hbWljRmllbGRDb25maWcpOwogICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9OwoKICAgICAgICAgICAgIyBnZXQgdGhlIGN1cnJlbnQgdmFsdWUgZm9yIGVhY2ggZHluYW1pYyBmaWVsZAogICAgICAgICAgICBteSAkVmFsdWUgPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVHZXQoCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgICAgIE9iamVjdElEICAgICAgICAgICA9PiAkQ29uZmlnSXRlbXtWZXJzaW9uSUR9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgbmFtZSBhbmQgdmFsdWUgaW50byB0aGUgdGlja2V0IGhhc2gKICAgICAgICAgICAgJENvbmZpZ0l0ZW17ICdEeW5hbWljRmllbGRfJyAuICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSB9ID0gJFZhbHVlOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKCiAgICAjIGFkZCB0aGUgQ2xhc3MsIGJhc2VkIG9uIHRoZSBDbGFzc0lECiAgICB7CiAgICAgICAgbXkgJENsYXNzTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgKTsKCiAgICAgICAgJENvbmZpZ0l0ZW17Q2xhc3N9ID0gJENsYXNzTGlzdC0+eyAkQ29uZmlnSXRlbXtDbGFzc0lEfSB9OwogICAgfQoKICAgICMgQWRkIG1vcmUgcmVhZGFibGUgbmFtZXMgZm9yIHRoZSB2YXJpb3VzIHN0YXRlcy4KICAgICMgQWRkIHRoZSBzdGF0ZSB0eXBlcy4KICAgIFNUQVRFOgogICAgZm9yIG15ICRTdGF0ZSAocXcvRGVwbFN0YXRlIEN1ckRlcGxTdGF0ZSBJbmNpU3RhdGUgQ3VySW5jaVN0YXRlLykgewogICAgICAgIG5leHQgU1RBVEUgdW5sZXNzICRDb25maWdJdGVteyAkU3RhdGUgLiAnSUQnIH07CgogICAgICAgIG15ICRJdGVtID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW17ICRTdGF0ZSAuICdJRCcgfSwKICAgICAgICApOwoKICAgICAgICAkQ29uZmlnSXRlbXskU3RhdGV9ID0gJEl0ZW0tPntOYW1lfTsKICAgICAgICAkQ29uZmlnSXRlbXsgJFN0YXRlIC4gJ1R5cGUnIH0gPSAkSXRlbS0+e0Z1bmN0aW9uYWxpdHl9WzBdIC8vICcnOwogICAgfQoKICAgICMgY2FjaGUgdGhlIHJlc3VsdAogICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgVHlwZSAgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgIFRUTCAgID0+ICRTZWxmLT57Q2FjaGVUVEx9LAogICAgICAgIEtleSAgID0+ICRDYWNoZUtleSwKICAgICAgICBWYWx1ZSA9PiBkY2xvbmUoIFwlQ29uZmlnSXRlbSApLAogICAgKTsKCiAgICByZXR1cm4gXCVDb25maWdJdGVtOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUFkZCgpCgphZGQgYSBuZXcgY29uZmlnIGl0ZW0uIFRoaXMgaW1wbGllcyB0aGF0IGFuIGluaXRpYWwgdmVyc2lvbiBpcyBjcmVhdGVkIGFzIHdlbGwuCgogICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgIENsYXNzSUQgICAgICAgID0+IDEyMywKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTmFtZScsICAgICMgb3B0aW9uYWwgd2hlbiBhIG5hbWUgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjbGFzcwogICAgICAgIFZlcnNpb25TdHJpbmcgID0+ICdWZXJzaW9uJywgIyBvcHRpb25hbCB3aGVuIGEgdmVyc2lvbiBudW1iZXIgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgZm9yIHRoZSBjbGFzcwogICAgICAgIERlcGxTdGF0ZUlEICAgID0+IDMsCiAgICAgICAgSW5jaVN0YXRlSUQgICAgPT4gMiwKICAgICAgICBEZXNjcmlwdGlvbiAgICA9PiAnQUJDRCcsCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICBOdW1iZXIgICAgICAgICA9PiAnMTExJywgICAgIyBvcHRpb25hbCwgYSBudW1iZXIgd2lsbCBnZW5lcmF0ZWQgd2hlbiBubyBudW1iZXIgaXMgcGFzc2VkCiAgICAgICAgRHluYW1pY0ZpZWxkX1ggPT4gJFZhbHVlLCAgICMgb3B0aW9uYWwKICAgICk7CgpObyBjb25maWcgaXRlbSB3aWxsIGJlIGNyZWF0ZWQgd2hlbiBhbiBhbHJlYWR5IGV4aXN0aW5nIE51bWJlciBpcyBwYXNzZWQuCgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDbGFzc0lEIFVzZXJJRCBEZXBsU3RhdGVJRCBJbmNpU3RhdGVJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JEFyZ3VtZW50fSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJEFyZ3VtZW50ISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJENsYXNzTGlzdDsKICAgIHJldHVybiB1bmxlc3MgcmVmICRDbGFzc0xpc3QgZXEgJ0hBU0gnOwoKICAgICMgY2hlY2sgdGhlIGNsYXNzIGlkCiAgICBpZiAoICEkQ2xhc3NMaXN0LT57ICRQYXJhbXtDbGFzc0lEfSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gdmFsaWQgY2xhc3MgaWQgZ2l2ZW4hJywKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGVwbG95bWVudCBzdGF0ZSBsaXN0CiAgICBteSAkRGVwbFN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICApOwoKICAgIHJldHVybiB1bmxlc3MgJERlcGxTdGF0ZUxpc3Q7CiAgICByZXR1cm4gdW5sZXNzIHJlZiAkRGVwbFN0YXRlTGlzdCBlcSAnSEFTSCc7CgogICAgIyBjaGVjayB0aGUgZGVwbG95bWVudCBzdGF0ZSBpZAogICAgaWYgKCAhJERlcGxTdGF0ZUxpc3QtPnsgJFBhcmFte0RlcGxTdGF0ZUlEfSB9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTm8gdmFsaWQgZGVwbG95bWVudCBzdGF0ZSBpZCBnaXZlbiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBpbmNpZGVudCBzdGF0ZSBsaXN0CiAgICBteSAkSW5jaVN0YXRlTGlzdCA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgKTsKCiAgICByZXR1cm4gdW5sZXNzICRJbmNpU3RhdGVMaXN0OwogICAgcmV0dXJuIHVubGVzcyByZWYgJEluY2lTdGF0ZUxpc3QgZXEgJ0hBU0gnOwoKICAgICMgY2hlY2sgdGhlIGluY2lkZW50IHN0YXRlIGlkCiAgICBpZiAoICEkSW5jaVN0YXRlTGlzdC0+eyAkUGFyYW17SW5jaVN0YXRlSUR9IH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdObyB2YWxpZCBpbmNpZGVudCBzdGF0ZSBpZCBnaXZlbiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBteSAkQ29uZmlnT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKTsKCiAgICBteSAlQ2xhc3NQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgKTsKCiAgICAjIGNyZWF0ZSBjb25maWcgaXRlbSBudW1iZXIKICAgIGlmICggJFBhcmFte051bWJlcn0gKSB7CgogICAgICAgICMgZmluZCBleGlzdGluZyBjb25maWcgaXRlbSBudW1iZXIKICAgICAgICBteSAkRXhpc3RzID0gJFNlbGYtPkNvbmZpZ0l0ZW1OdW1iZXJMb29rdXAoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gJFBhcmFte051bWJlcn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRFeGlzdHMpIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0NvbmZpZyBpdGVtIG51bWJlciBhbHJlYWR5IGV4aXN0cyEnLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewoKICAgICAgICBteSAkTnVtYmVyTW9kdWxlID0gJENsYXNzUHJlZmVyZW5jZXN7TnVtYmVyTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze051bWJlck1vZHVsZX1bMF0gOiAnQXV0b0luY3JlbWVudCc7CgogICAgICAgICMgY3JlYXRlIGNvbmZpZyBpdGVtIG51bWJlcgogICAgICAgICRQYXJhbXtOdW1iZXJ9ID0gJFNlbGYtPkNvbmZpZ0l0ZW1OdW1iZXJDcmVhdGUoCiAgICAgICAgICAgIFR5cGUgICAgPT4gIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjokTnVtYmVyTW9kdWxlIiwKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkUGFyYW17Q2xhc3NJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAkTmFtZU1vZHVsZSA9ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9ID8gJENsYXNzUHJlZmVyZW5jZXN7TmFtZU1vZHVsZX1bMF0gOiAnJzsKICAgIGlmICgkTmFtZU1vZHVsZSkgewoKICAgICAgICAjIGNoZWNrIGlmIG5hbWUgbW9kdWxlIGV4aXN0cwogICAgICAgIGlmICggISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDbGFzc0xpc3QtPnsgJFBhcmFte0NsYXNzSUR9IH0hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkQ29uZmlnT2JqZWN0LT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICdORVcnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHN0b3AgcHJvY2Vzc2luZyBpZiB0aGUgbmFtZSBpcyBub3QgdW5pcXVlCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAgICAgIyBidWlsZCBhIHN0cmluZyBvZiBhbGwgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSBqb2luICcsICcsIEB7JE5hbWVEdXBsaWNhdGVzfTsKCiAgICAgICAgICAgICAgICAjIHdyaXRlIGFuIGVycm9yIGxvZyBtZXNzYWdlIGNvbnRhaW5pbmcgYWxsIHRoZSBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgbmFtZSAkUGFyYW17TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgKENvbmZpZ0l0ZW1JRHM6ICREdXBsaWNhdGVzKSEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYgSUkKICAgIGlmICggISRQYXJhbXtOYW1lfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgTmFtZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGluc2VydCBuZXcgY29uZmlnIGl0ZW0KICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgPT4gJ0lOU0VSVCBJTlRPIGNvbmZpZ2l0ZW0gKCcKICAgICAgICAgICAgLiAnY29uZmlnaXRlbV9udW1iZXIsIGN1cl9kZXBsX3N0YXRlX2lkLCBjdXJfaW5jaV9zdGF0ZV9pZCcKICAgICAgICAgICAgLiAnLCBjbGFzc19pZCwgY3JlYXRlX3RpbWUsIGNyZWF0ZV9ieSwgY2hhbmdlX3RpbWUsIGNoYW5nZV9ieScKICAgICAgICAgICAgLiAnKSBWQUxVRVMgKD8sID8sID8sID8sIGN1cnJlbnRfdGltZXN0YW1wLCA/LCBjdXJyZW50X3RpbWVzdGFtcCwgPyknLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte051bWJlcn0sIFwkUGFyYW17RGVwbFN0YXRlSUR9LCBcJFBhcmFte0luY2lTdGF0ZUlEfSwgXCRQYXJhbXtDbGFzc0lEfSwgXCRQYXJhbXtVc2VySUR9LCBcJFBhcmFte1VzZXJJRH0gXSwKICAgICk7CgogICAgIyBmaW5kIGlkIG9mIG5ldyBpdGVtCiAgICAjIFRPRE86IHdoYXQgYWJvdXQgY29uY3VycmVudCBJTlNFUlRzID8/PwogICAgbXkgKCRDb25maWdJdGVtSUQpID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlNlbGVjdFJvd0FycmF5KAogICAgICAgIFNRTCA9PiA8PCdFTkRfU1FMJywKU0VMRUNUIGlkCiAgRlJPTSBjb25maWdpdGVtCiAgV0hFUkUgY29uZmlnaXRlbV9udW1iZXIgPSA/CiAgICBBTkQgY2xhc3NfaWQgPSA/CiAgT1JERVIgQlkgaWQgREVTQwpFTkRfU1FMCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TnVtYmVyfSwgXCRQYXJhbXtDbGFzc0lEfSBdLAogICAgKTsKCiAgICAjIHRyaWdnZXIgQ29uZmlnSXRlbUNyZWF0ZQogICAgJFNlbGYtPkV2ZW50SGFuZGxlcigKICAgICAgICBFdmVudCA9PiAnQ29uZmlnSXRlbUNyZWF0ZScsCiAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRDb25maWdJdGVtSUQgLiAnJSUnIC4gJFBhcmFte051bWJlcn0sCiAgICAgICAgfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgYWRkIHRoZSBmaXJzdCB2ZXJzaW9uCiAgICBteSAkVmVyc2lvbklEID0gJFNlbGYtPlZlcnNpb25BZGQoCiAgICAgICAgRGVzY3JpcHRpb24gPT4gJycsCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgIExhc3RWZXJzaW9uICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAnTkVXJywKICAgICAgICB9LAogICAgKTsKCiAgICBpZiAoICEkVmVyc2lvbklEICkgewoKICAgICAgICAjIGRlbGV0ZSBoaXN0b3J5IGVudHJpZXMKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1faGlzdG9yeSBXSEVSRSBjb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJENvbmZpZ0l0ZW1JRCBdLAogICAgICAgICk7CgogICAgICAgICMgZGVsZXRlIGNvbmZpZyBpdGVtIGlmIG5vIHZlcnNpb24gY291bGQgYmUgY3JlYXRlZAogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbSBXSEVSRSBpZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRDb25maWdJdGVtSUQgXSwKICAgICAgICApOwoKICAgICAgICAjIHdyaXRlIGFuIGVycm9yIGxvZyBtZXNzYWdlIGNvbnRhaW5pbmcgYWxsIHRoZSBkdXBsaWNhdGUgSURzCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgY3JlYXRlIHZlcnNpb24hIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRDb25maWdJdGVtSUQ7Cn0KCj1oZWFkMiBDb25maWdJdGVtRGVsZXRlKCkKCmRlbGV0ZSBhbiBleGlzdGluZyBjb25maWcgaXRlbQoKICAgIG15ICRUcnVlID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1EZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbURlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskQXJndW1lbnR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkQXJndW1lbnQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyByZW1lbWJlciBjb25maWcgaXRlbSBkYXRhIGJlZm9yZSBkZWxldGUKICAgIG15ICRDb25maWdJdGVtRGF0YSA9ICRTZWxmLT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgKTsKCiAgICAjIGRlbGV0ZSBhbGwgbGlua3MgdG8gdGhpcyBjb25maWcgaXRlbSBiZWZvcmUgZGVsZXRpbmcgdGhlIHZlcnNpb25zLgogICAgIyBMaW5rRGVsZXRlQWxsKCkgY2FsbHMgTGlua0RlbGV0ZSgpIGludGVybmFsbHkuIFRoaXMgbWVhbnMgdGhhdAogICAgIyB0aGUgZXZlbnQgaGFuZGxlcnMgYXJlIGhvbm9yZWQuIFRoaXMgbWVhbnMgdGhhdCB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rCiAgICAjIGlzIGFsc28gcHVyZ2VkLgogICAgcmV0dXJuIHVubGVzcyAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpLT5MaW5rRGVsZXRlQWxsKAogICAgICAgIE9iamVjdCA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleSAgICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZGVsZXRlIGR5bmFtaWMgbGluayB0YWJsZSBlbnRyaWVzLCBpZiBhbnkKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9saW5rIFdIRVJFIHNvdXJjZV9jb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgU1FMICA9PiAnREVMRVRFIEZST00gY29uZmlnaXRlbV9saW5rIFdIRVJFIHRhcmdldF9jb25maWdpdGVtX2lkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIGlmIHRoZXJlIGFyZSBzdGF0aWMgKHZlcnNpb25lZCkgbGlua3MsIGRlbGV0ZSBhbGwgb2YgdGhlbQogICAgbXkgJFZlcnNpb25MaXN0UmVmID0gJFNlbGYtPlZlcnNpb25MaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgZm9yIG15ICRWZXJzaW9uSUQgKEAkVmVyc2lvbkxpc3RSZWYpIHsKICAgICAgICAkREJPYmplY3QtPkRvKAogICAgICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtX2xpbmsgV0hFUkUgc291cmNlX2NvbmZpZ2l0ZW1fdmVyc2lvbl9pZCA9ID8nLAogICAgICAgICAgICBCaW5kID0+IFsgXCRWZXJzaW9uSUQgXSwKICAgICAgICApOwogICAgICAgICREQk9iamVjdC0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ0RFTEVURSBGUk9NIGNvbmZpZ2l0ZW1fbGluayBXSEVSRSB0YXJnZXRfY29uZmlnaXRlbV92ZXJzaW9uX2lkID0gPycsCiAgICAgICAgICAgIEJpbmQgPT4gWyBcJFZlcnNpb25JRCBdLAogICAgICAgICk7CiAgICB9CgogICAgIyBkZWxldGUgZXhpc3RpbmcgdmVyc2lvbnMKICAgICRTZWxmLT5WZXJzaW9uRGVsZXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgICMgZ2V0IGEgbGlzdCBvZiBhbGwgYXR0YWNobWVudHMKICAgIG15IEBFeGlzdGluZ0F0dGFjaG1lbnRzID0gJFNlbGYtPkNvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICApOwoKICAgICMgZGVsZXRlIGFsbCBhdHRhY2htZW50cyBvZiB0aGlzIGNvbmZpZyBpdGVtCiAgICBGSUxFTkFNRToKICAgIGZvciBteSAkRmlsZW5hbWUgKEBFeGlzdGluZ0F0dGFjaG1lbnRzKSB7CgogICAgICAgICMgZGVsZXRlIHRoZSBhdHRhY2htZW50CiAgICAgICAgbXkgJERlbGV0aW9uU3VjY2VzcyA9ICRTZWxmLT5Db25maWdJdGVtQXR0YWNobWVudERlbGV0ZSgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBGaWxlbmFtZSAgICAgPT4gJEZpbGVuYW1lLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJERlbGV0aW9uU3VjY2VzcyApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlVua25vd24gcHJvYmxlbSB3aGVuIGRlbGV0aW5nIGF0dGFjaG1lbnQgJEZpbGVuYW1lIG9mIENvbmZpZ0l0ZW0gIgogICAgICAgICAgICAgICAgICAgIC4gIiRQYXJhbXtDb25maWdJdGVtSUR9LiBQbGVhc2UgY2hlY2sgdGhlIFZpcnR1YWxGUyBiYWNrZW5kIGZvciBzdGFsZSAiCiAgICAgICAgICAgICAgICAgICAgLiAiZmlsZXMhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgbXkgJUNsYXNzUHJlZmVyZW5jZXMgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICBJdGVtSUQgPT4gJENvbmZpZ0l0ZW1EYXRhLT57Q2xhc3NJRH0sCiAgICApOwogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpNYWluJyktPlJlcXVpcmUoIktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TmFtZTo6JE5hbWVNb2R1bGUiKSApIHsKCiAgICAgICAgICAgICMgY3JlYXRlIGEgYmFja2VuZCBvYmplY3QKICAgICAgICAgICAgbXkgJE5hbWVNb2R1bGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCROYW1lTW9kdWxlKTsKCiAgICAgICAgICAgIGlmICggJE5hbWVNb2R1bGVPYmplY3QtPmNhbignQ29uZmlnSXRlbU5hbWVEZWxldGUnKSApIHsKICAgICAgICAgICAgICAgICROYW1lTW9kdWxlT2JqZWN0LT5Db25maWdJdGVtTmFtZURlbGV0ZSgKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICRDb25maWdJdGVtRGF0YS0+e05hbWV9LAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDb25maWdJdGVtRGF0YS0+e0NsYXNzfSEiLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHRyaWdnZXIgQ29uZmlnSXRlbURlbGV0ZSBldmVudAogICAgIyB0aGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgZGVsZXRpbmcgdGhlIGNvbmZpZyBpdGVtIGZyb20gdGhlIGRhdGFiYXNlLAogICAgIyBiZWNhdXNlIG9mIGEgZm9yZWlnbiBrZXkgY29uc3RyYWludCBpbiB0aGUgY29uZmlnaXRlbV9oaXN0b3J5IHRhYmxlCiAgICAkU2VsZi0+RXZlbnRIYW5kbGVyKAogICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtRGVsZXRlJywKICAgICAgICBEYXRhICA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQ29tbWVudCAgICAgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBOdW1iZXIgICAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLT57TnVtYmVyfSwKICAgICAgICAgICAgQ2xhc3MgICAgICAgID0+ICRDb25maWdJdGVtRGF0YS0+e0NsYXNzfSwKICAgICAgICAgICAgQ29uZmlnSXRlbSAgID0+ICRDb25maWdJdGVtRGF0YSwKICAgICAgICB9LAogICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICk7CgogICAgIyBkZWxldGUgY29uZmlnIGl0ZW0KICAgIG15ICRTdWNjZXNzID0gJERCT2JqZWN0LT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPycsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17Q29uZmlnSXRlbUlEfSBdLAogICAgKTsKCiAgICAjIGRlbGV0ZSB0aGUgY2FjaGUKICAgIGZvciBteSAkREZEYXRhICggMCwgMSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6Q2FjaGUnKS0+RGVsZXRlKAogICAgICAgICAgICBUeXBlID0+ICRTZWxmLT57Q2FjaGVUeXBlfSwKICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgJ0NvbmZpZ0l0ZW1HZXQnLAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgREZEYXRhICAgICAgID0+ICRERkRhdGEKICAgICAgICAgICAgKSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybiAkU3VjY2VzczsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1VcGRhdGUoKQoKdXBkYXRlIGEgY29uZmlnIGl0ZW0uIEEgbmV3IHZlcnNpb24gd2lsbCBiZSBjcmVhdGVkIG9ubHkgd2hlbiBhIHZlcnNpb24gdHJpZ2dlciBhcHBsaWVzLgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgPT4gMjcsCiAgICAgICAgTnVtYmVyICAgICAgICAgPT4gJzExMScsICAgICMgSUQgb3IgTnVtYmVyIGlzIHJlcXVpcmVkCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gMSwKICAgICAgICBOYW1lICAgICAgICAgICA9PiAnTmFtZScsICAgIyBvcHRpb25hbAogICAgICAgIERlZmluaXRpb25JRCAgID0+IDEyMywgICAgICAjIG9wdGlvbmFsCiAgICAgICAgRGVwbFN0YXRlSUQgICAgPT4gMywgICAgICAgICMgb3B0aW9uYWwKICAgICAgICBJbmNpU3RhdGVJRCAgICA9PiAyLCAgICAgICAgIyBvcHRpb25hbAogICAgICAgIERlc2NyaXB0aW9uICAgID0+ICdBQkNEJywgICAjIG9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkX1ggPT4gJFZhbHVlLCAgICMgb3B0aW9uYWwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbVVwZGF0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgbG9va3VwCiAgICAkUGFyYW17Q29uZmlnSXRlbUlEfSAvLz0gJFNlbGYtPkNvbmZpZ0l0ZW1Mb29rdXAoCiAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17TnVtYmVyfSwKICAgICk7CgogICAgIyBjaGVjayBuZWVkZWQgcGFyYW1ldGVycwogICAgZm9yIG15ICRLZXkgKHF3L0NvbmZpZ0l0ZW1JRCBVc2VySUQvKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRLZXl9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAiIC4gKCAkS2V5IGVxICdDb25maWdJdGVtSUQnID8gJ0NvbmZpZ0l0ZW1JRCBvciBOdW1iZXInIDogJEtleSApLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdhdGhlciBkeW5hbWljIGZpZWxkIGtleXMKICAgIG15IEBEeW5hbWljRmllbGROYW1lcyA9IG1hcAogICAgICAgIHttL15EeW5hbWljRmllbGRfKC4rKS99CiAgICAgICAgc29ydCBrZXlzICVQYXJhbTsKCiAgICAjIGdldCBjdXJyZW50IGNvbmZpZyBpdGVtLCBpbmNsdWRpbmcgaW5mbyBmcm9tIHRoZSBsYXN0IHZlcnNpb24KICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CiAgICBteSAkQ2xhc3MgPSAkQ2xhc3NMaXN0LT57ICRDb25maWdJdGVtLT57Q2xhc3NJRH0gfTsKCiAgICBpZiAoICEkQ2xhc3MgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyB2YWxpZCBjbGFzcyBmb3VuZCBmb3IgaWQgJyRDb25maWdJdGVtLT57Q2xhc3NJRH0nIChDb25maWdJdGVtIyRDb25maWdJdGVtLT57TnVtYmVyfSkhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBpZ25vcmUgdGhlIHBhc3NlZCBpbiBuYW1lIHdoZW4gYSBuYW1lIG1vZHVsZSBpcyBhY3RpdmUKICAgIG15ICVDbGFzc1ByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkdlbmVyYWxDYXRhbG9nUHJlZmVyZW5jZXNHZXQoCiAgICAgICAgSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q2xhc3NJRH0sCiAgICApOwoKICAgICMgZXhlY3V0ZSBuYW1lIGNoZWNrIG9ubHkgaWYgbmFtZSBoYXMgY2hhbmdlZAogICAgbXkgJE5hbWVNb2R1bGUgPSAkQ2xhc3NQcmVmZXJlbmNlc3tOYW1lTW9kdWxlfSA/ICRDbGFzc1ByZWZlcmVuY2Vze05hbWVNb2R1bGV9WzBdIDogJyc7CiAgICBpZiAoJE5hbWVNb2R1bGUpIHsKCiAgICAgICAgIyBjaGVjayBpZiBuYW1lIG1vZHVsZSBleGlzdHMKICAgICAgICBpZiAoICEkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TWFpbicpLT5SZXF1aXJlKCROYW1lTW9kdWxlKSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbid0IGxvYWQgbmFtZSBtb2R1bGUgZm9yIGNsYXNzICRDbGFzc0xpc3QtPnsgJFBhcmFte0NsYXNzSUR9IH0hIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIGRlbGV0ZSAkUGFyYW17TmFtZX07CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtOYW1lfSAmJiAkUGFyYW17TmFtZX0gbmUgJENvbmZpZ0l0ZW0tPntOYW1lfSApIHsKCiAgICAgICAgIyBjaGVjaywgd2hldGhlciB0aGUgZmVhdHVyZSB0byBjaGVjayBmb3IgYSB1bmlxdWUgbmFtZSBpcyBlbmFibGVkCiAgICAgICAgaWYgKCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6RW5hYmxlVW5pcXVlbmVzc0NoZWNrJykgKSB7CgogICAgICAgICAgICBteSAkTmFtZUR1cGxpY2F0ZXMgPSAkU2VsZi0+VW5pcXVlTmFtZUNoZWNrKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICA9PiAkUGFyYW17TmFtZX0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICAjIHN0b3AgcHJvY2Vzc2luZyBpZiB0aGUgbmFtZSBpcyBub3QgdW5pcXVlCiAgICAgICAgICAgIGlmICggSXNBcnJheVJlZldpdGhEYXRhKCROYW1lRHVwbGljYXRlcykgKSB7CgogICAgICAgICAgICAgICAgIyBidWlsZCBhIHN0cmluZyBvZiBhbGwgZHVwbGljYXRlIElEcwogICAgICAgICAgICAgICAgbXkgJER1cGxpY2F0ZXMgPSBqb2luICcsICcsIEB7JE5hbWVEdXBsaWNhdGVzfTsKCiAgICAgICAgICAgICAgICAjIHdyaXRlIGFuIGVycm9yIGxvZyBtZXNzYWdlIGNvbnRhaW5pbmcgYWxsIHRoZSBkdXBsaWNhdGUgSURzCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgbmFtZSAkUGFyYW17TmFtZX0gaXMgYWxyZWFkeSBpbiB1c2UgKENvbmZpZ0l0ZW1JRHM6ICREdXBsaWNhdGVzKSEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgbXkgJVZlcnNpb25UcmlnZ2VyID0gbWFwCiAgICAgICAgeyAkXyA9PiAxIH0KICAgICAgICAoICRDbGFzc1ByZWZlcmVuY2Vze1ZlcnNpb25UcmlnZ2VyfSAvLyBbXSApLT5AKjsKCiAgICBteSAlQ2hhbmdlZDsgICAgICAgICAgICAgICMgdHJhY2sgY2hhbmdlZCB2YWx1ZXMgZm9yIHRoZSBFdmVudCBoYW5kbGVyLCBlLmcuIGZvciB3cml0aW5nIGhpc3RvcnkKICAgIG15ICRBZGRWZXJzaW9uICAgID0gMDsgICAgIyBmbGFnIGZvciBkZWNpZGluZyB3aGV0aGVyIGEgbmV3IHZlcnNpb24gaXMgY3JlYXRlZAogICAgbXkgJFVwZGF0ZVZlcnNpb24gPSAwOyAgICAjIGZsYWcgZm9yIGRlY2lkaW5nIHdoZXRoZXIgdGhlIGN1cnJlbnQgdmVyc2lvbiBuZWVkcyBhbiB1cGRhdGUKCiAgICAjIGNoZWNrIG5hbWUsIGRlcGxveW1lbnQgYW5kIGluY2lkZW50IHN0YXRlLCBhcyB3ZWxsIGFzIERlc2NyaXB0aW9uCiAgICBBVFRSOgogICAgZm9yIG15ICRBdHRyaWJ1dGUgKHF3L05hbWUgRGVwbFN0YXRlSUQgSW5jaVN0YXRlSUQgRGVzY3JpcHRpb24vKSB7CiAgICAgICAgbmV4dCBBVFRSIHVubGVzcyBkZWZpbmVkICRQYXJhbXskQXR0cmlidXRlfTsKICAgICAgICBuZXh0IEFUVFIgaWYgJFBhcmFteyRBdHRyaWJ1dGV9IGVxICRDb25maWdJdGVtLT57JEF0dHJpYnV0ZX07CgogICAgICAgICRDaGFuZ2VkeyRBdHRyaWJ1dGV9ID0gewogICAgICAgICAgICBPbGQgPT4gJENvbmZpZ0l0ZW0tPnskQXR0cmlidXRlfSwKICAgICAgICAgICAgTmV3ID0+ICRQYXJhbXskQXR0cmlidXRlfSwKICAgICAgICB9OwoKICAgICAgICAkVXBkYXRlVmVyc2lvbiA9IDE7CgogICAgICAgIGlmICggJFZlcnNpb25UcmlnZ2VyeyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAkQWRkVmVyc2lvbiA9IDE7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGxhdGVzdCBkZWZpbml0aW9uIGZvciB0aGUgY2xhc3MKICAgIG15ICREZWZpbml0aW9uID0gJFNlbGYtPkRlZmluaXRpb25HZXQoCiAgICAgICAgQ2xhc3NJRCA9PiAkQ29uZmlnSXRlbS0+e0NsYXNzSUR9LAogICAgKTsKCiAgICBteSAlU2tpcEZvclVwZGF0ZURGczsKCiAgICAjIGNoZWNrIGZvciBjaGFuZ2VkIGR5bmFtaWMgZmllbGRzIHRvIHRyaWdnZXIgdmVyc2lvbnMgYW5kIGZpbHRlciBoaXN0b3J5IGVudHJpZXMKICAgIGlmIChARHluYW1pY0ZpZWxkTmFtZXMpIHsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICAgICAgIyBkeW5hbWljIGZpZWxkcwogICAgICAgIE5BTUU6CiAgICAgICAgZm9yIG15ICROYW1lIChARHluYW1pY0ZpZWxkTmFtZXMpIHsKICAgICAgICAgICAgbmV4dCBOQU1FIHVubGVzcyAkRGVmaW5pdGlvbi0+e0R5bmFtaWNGaWVsZFJlZn17JE5hbWV9OwoKICAgICAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJE5hbWUsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAhJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlSXNEaWZmZXJlbnQoCiAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgVmFsdWUxICAgICAgICAgICAgID0+ICRQYXJhbXsiRHluYW1pY0ZpZWxkXyROYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUyICAgICAgICAgICAgID0+ICRDb25maWdJdGVtLT57IkR5bmFtaWNGaWVsZF8kTmFtZSJ9LAogICAgICAgICAgICAgICAgICAgIEV4dGVybmFsU291cmNlICAgICA9PiAkUGFyYW17RXh0ZXJuYWxTb3VyY2V9LAogICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAjIGRvIG5vdCBwYXNzIHVuY2hhbmdlZCBkeW5hbWljIGZpZWxkcyB0byBWZXJzaW9uVXBkYXRlKCkKICAgICAgICAgICAgICAgICMgc3RvcmUgdGhlbSBmb3IgVmVyc2lvbkFkZCgpIGJlY2F1c2Ugb2YgcG90ZW50aWFsIGRpZmZlcmVuY2UgZnJvbSBFeHRlcm5hbFNvdXJjZQogICAgICAgICAgICAgICAgJFNraXBGb3JVcGRhdGVERnN7IkR5bmFtaWNGaWVsZF8kTmFtZSJ9ID0gZGVsZXRlICRQYXJhbXsiRHluYW1pY0ZpZWxkXyROYW1lIn07CgogICAgICAgICAgICAgICAgbmV4dCBOQU1FOwogICAgICAgICAgICB9CgogICAgICAgICAgICAkVXBkYXRlVmVyc2lvbiA9IDE7CgogICAgICAgICAgICBpZiAoICRWZXJzaW9uVHJpZ2dlcnsiRHluYW1pY0ZpZWxkXyROYW1lIn0gKSB7CiAgICAgICAgICAgICAgICAkQWRkVmVyc2lvbiA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCRBZGRWZXJzaW9uKSB7CiAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+VmVyc2lvbkFkZCgKICAgICAgICAgICAgRGVzY3JpcHRpb24gPT4gJENvbmZpZ0l0ZW0tPntEZXNjcmlwdGlvbn0gLy8gJycsCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgJVNraXBGb3JVcGRhdGVERnMsCiAgICAgICAgICAgIExhc3RWZXJzaW9uID0+ICRDb25maWdJdGVtLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgIH0KICAgIGVsc2lmICgkVXBkYXRlVmVyc2lvbikgewogICAgICAgIG15ICRTdWNjZXNzID0gJFNlbGYtPlZlcnNpb25VcGRhdGUoCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgVmVyc2lvbiA9PiAkQ29uZmlnSXRlbSwKICAgICAgICApOwogICAgICAgIHJldHVybiB1bmxlc3MgJFN1Y2Nlc3M7CiAgICB9CgogICAgbXkgJUV2ZW50cyA9ICgKICAgICAgICBOYW1lICAgICAgICA9PiAnTmFtZVVwZGF0ZScsCiAgICAgICAgRGVwbFN0YXRlSUQgPT4gJ0RlcGxveW1lbnRTdGF0ZVVwZGF0ZScsCiAgICAgICAgSW5jaVN0YXRlSUQgPT4gJ0luY2lkZW50U3RhdGVVcGRhdGUnLAogICAgKTsKCiAgICBDSEFOR0U6CiAgICBmb3IgbXkgJEtleSAoIGtleXMgJUNoYW5nZWQgKSB7CiAgICAgICAgbmV4dCBDSEFOR0UgaWYgISRFdmVudHN7JEtleX07CgogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICRFdmVudHN7JEtleX0sCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBDb21tZW50ICAgICAgPT4gJENoYW5nZWR7JEtleX17TmV3fSAuICclJScgLiAkQ2hhbmdlZHskS2V5fXtPbGR9LAogICAgICAgICAgICAgICAgT2xkICAgICAgICAgID0+ICRDaGFuZ2VkeyRLZXl9e09sZH0sCiAgICAgICAgICAgICAgICBOZXcgICAgICAgICAgPT4gJENoYW5nZWR7JEtleX17TmV3fSwKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CgogICAgIyB0cmlnZ2VyIENvbmZpZ0l0ZW1VcGRhdGUgYnV0IG9ubHkgaWYgdGhlcmUgd2VyZSB1cGRhdGVzCiAgICBpZiAoICRBZGRWZXJzaW9uIHx8ICRVcGRhdGVWZXJzaW9uIHx8ICVDaGFuZ2VkICkgewogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdDb25maWdJdGVtVXBkYXRlJywKICAgICAgICAgICAgRGF0YSAgPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkQ29uZmlnSXRlbS0+e0NvbmZpZ0l0ZW1JRH0gLiAnJSUnIC4gJENvbmZpZ0l0ZW0tPntOdW1iZXJ9LAogICAgICAgICAgICAgICAgT2xkRGVwbFN0YXRlID0+ICRDaGFuZ2Vke0RlcGxTdGF0ZUlEfXtPbGR9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50QWRkKCkKCmFkZHMgYW4gYXR0YWNobWVudCB0byBhIGNvbmZpZyBpdGVtCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRBZGQoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgID0+IDEsCiAgICAgICAgRmlsZW5hbWUgICAgICAgID0+ICdmaWxlbmFtZScsCiAgICAgICAgQ29udGVudCAgICAgICAgID0+ICdjb250ZW50JywKICAgICAgICBDb250ZW50VHlwZSAgICAgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIFVzZXJJRCAgICAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudEFkZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIEZpbGVuYW1lIENvbnRlbnQgQ29udGVudFR5cGUgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIHdyaXRlIHRvIHZpcnR1YWwgZnMKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5Xcml0ZSgKICAgICAgICBGaWxlbmFtZSAgICA9PiAiQ29uZmlnSXRlbS8kUGFyYW17Q29uZmlnSXRlbUlEfS8kUGFyYW17RmlsZW5hbWV9IiwKICAgICAgICBNb2RlICAgICAgICA9PiAnYmluYXJ5JywKICAgICAgICBDb250ZW50ICAgICA9PiBcJFBhcmFte0NvbnRlbnR9LAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQ29udGVudElEICAgID0+ICRQYXJhbXtDb250ZW50SUR9LAogICAgICAgICAgICBDb250ZW50VHlwZSAgPT4gJFBhcmFte0NvbnRlbnRUeXBlfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyBjaGVjayBmb3IgZXJyb3IKICAgIGlmICgkU3VjY2VzcykgewoKICAgICAgICAjIHRyaWdnZXIgQXR0YWNobWVudEFkZC1FdmVudAogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdBdHRhY2htZW50QWRkUG9zdCcsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdBdHRhY2htZW50QWRkJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCBhZGQgYXR0YWNobWVudCBmb3IgY29uZmlnIGl0ZW0gJFBhcmFte0NvbmZpZ0l0ZW1JRH0iLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50RGVsZXRlKCkKCkRlbGV0ZSB0aGUgZ2l2ZW4gZmlsZSBmcm9tIHRoZSB2aXJ0dWFsIGZpbGVzeXN0ZW0uCgogICAgbXkgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnREZWxldGUoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywgICAgICAgICAgICAgICAjIHVzZWQgaW4gZXZlbnQgaGFuZGxpbmcsIGUuZy4gZm9yIGxvZ2dpbmcgdGhlIGhpc3RvcnkKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJ1Byb2plY3RwbGFuLnBkZicsICMgaWRlbnRpZmllcyB0aGUgYXR0YWNobWVudCAodG9nZXRoZXIgd2l0aCB0aGUgQ29uZmlnSXRlbUlEKQogICAgICAgIFVzZXJJRCAgICAgICA9PiAxLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudERlbGV0ZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIEZpbGVuYW1lIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBhZGQgcHJlZml4CiAgICBteSAkRmlsZW5hbWUgPSAnQ29uZmlnSXRlbS8nIC4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0gLiAnLycgLiAkUGFyYW17RmlsZW5hbWV9OwoKICAgICMgZGVsZXRlIGZpbGUKICAgIG15ICRTdWNjZXNzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5EZWxldGUoCiAgICAgICAgRmlsZW5hbWUgPT4gJEZpbGVuYW1lLAogICAgKTsKCiAgICAjIGNoZWNrIGZvciBlcnJvcgogICAgaWYgKCRTdWNjZXNzKSB7CgogICAgICAgICMgdHJpZ2dlciBBdHRhY2htZW50RGVsZXRlUG9zdC1FdmVudAogICAgICAgICRTZWxmLT5FdmVudEhhbmRsZXIoCiAgICAgICAgICAgIEV2ZW50ID0+ICdBdHRhY2htZW50RGVsZXRlUG9zdCcsCiAgICAgICAgICAgIERhdGEgID0+IHsKICAgICAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgIENvbW1lbnQgICAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgICAgICAgICAgSGlzdG9yeVR5cGUgID0+ICdBdHRhY2htZW50RGVsZXRlJywKICAgICAgICAgICAgfSwKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNhbm5vdCBkZWxldGUgYXR0YWNobWVudCAkRmlsZW5hbWUhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmV0dXJuICRTdWNjZXNzOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUF0dGFjaG1lbnRHZXQoKQoKVGhpcyBtZXRob2QgcmV0dXJucyBpbmZvcm1hdGlvbiBhYm91dCBvbmUgc3BlY2lmaWMgYXR0YWNobWVudC4KCiAgICBteSAkQXR0YWNobWVudCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEdldCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gNCwKICAgICAgICBGaWxlbmFtZSAgICAgPT4gJ3Rlc3QudHh0JywKICAgICk7CgpyZXR1cm5zCgogICAgewogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgQWxsUHJlZmVyZW5jZXMgPT4gJ3Rlc3QnLAogICAgICAgIH0sCiAgICAgICAgRmlsZW5hbWUgICAgPT4gJ3Rlc3QudHh0JywKICAgICAgICBDb250ZW50ICAgICA9PiAnY29udGVudCcsCiAgICAgICAgQ29udGVudFR5cGUgPT4gJ3RleHQvcGxhaW4nLAogICAgICAgIEZpbGVzaXplICAgID0+IDEyMzQ4NDA5LAogICAgICAgIFR5cGUgICAgICAgID0+ICdhdHRhY2htZW50JywKICAgIH0KCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudEdldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJEFyZ3VtZW50IChxdyhDb25maWdJdGVtSUQgRmlsZW5hbWUpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRBcmd1bWVudH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICRBcmd1bWVudCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgYWRkIHByZWZpeAogICAgbXkgJEZpbGVuYW1lID0gJ0NvbmZpZ0l0ZW0vJyAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gJy8nIC4gJFBhcmFte0ZpbGVuYW1lfTsKCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBGaWxlbmFtZSAgICA9PiAkRmlsZW5hbWUsCiAgICAgICAgUHJlZmVyZW5jZXMgPT4gewogICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgfSwKICAgICk7CgogICAgIyByZXR1cm4gZXJyb3IgaWYgZmlsZSBkb2VzIG5vdCBleGlzdAogICAgaWYgKCAhQEF0dGFjaG1lbnRzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gc3VjaCBhdHRhY2htZW50ICgkRmlsZW5hbWUpISIsCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgZGF0YSBmb3IgYXR0YWNobWVudAogICAgbXkgJUF0dGFjaG1lbnREYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5SZWFkKAogICAgICAgIEZpbGVuYW1lID0+ICRGaWxlbmFtZSwKICAgICAgICBNb2RlICAgICA9PiAnYmluYXJ5JywKICAgICk7CgogICAgbXkgJEF0dGFjaG1lbnRJbmZvID0gewogICAgICAgICVBdHRhY2htZW50RGF0YSwKICAgICAgICBGaWxlbmFtZSAgICA9PiAkUGFyYW17RmlsZW5hbWV9LAogICAgICAgIENvbnRlbnQgICAgID0+ICR7ICRBdHRhY2htZW50RGF0YXtDb250ZW50fSB9LAogICAgICAgIENvbnRlbnRUeXBlID0+ICRBdHRhY2htZW50RGF0YXtQcmVmZXJlbmNlc317Q29udGVudFR5cGV9LAogICAgICAgIFR5cGUgICAgICAgID0+ICdhdHRhY2htZW50JywKICAgICAgICBGaWxlc2l6ZSAgICA9PiAkQXR0YWNobWVudERhdGF7UHJlZmVyZW5jZXN9e0ZpbGVzaXplUmF3fSwKICAgIH07CgogICAgcmV0dXJuICRBdHRhY2htZW50SW5mbzsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BdHRhY2htZW50TGlzdCgpCgpSZXR1cm5zIGFuIGFycmF5IHdpdGggYWxsIGF0dGFjaG1lbnRzIG9mIHRoZSBnaXZlbiBjb25maWcgaXRlbS4KCiAgICBteSBAQXR0YWNobWVudHMgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUF0dGFjaG1lbnRMaXN0KAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICApOwoKcmV0dXJucwoKICAgIEBBdHRhY2htZW50cyA9ICgKICAgICAgICAnZmlsZW5hbWUudHh0JywKICAgICAgICAnb3RoZXJfZmlsZS5wZGYnLAogICAgKTsKCj1jdXQKCnN1YiBDb25maWdJdGVtQXR0YWNobWVudExpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGZpbmQgYWxsIGF0dGFjaG1lbnRzIG9mIHRoaXMgY29uZmlnIGl0ZW0KICAgIG15IEBBdHRhY2htZW50cyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpWaXJ0dWFsRlMnKS0+RmluZCgKICAgICAgICBQcmVmZXJlbmNlcyA9PiB7CiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICB9LAogICAgKTsKCiAgICBmb3IgbXkgJEZpbGVuYW1lIChAQXR0YWNobWVudHMpIHsKCiAgICAgICAgIyByZW1vdmUgZXh0cmEgaW5mb3JtYXRpb24gZnJvbSBmaWxlbmFtZQogICAgICAgICRGaWxlbmFtZSA9fiBzeyBcQSBDb25maWdJdGVtIC8gXGQrIC8gfXt9eG1zOwogICAgfQoKICAgIHJldHVybiBAQXR0YWNobWVudHM7Cn0KCj1oZWFkMiBDb25maWdJdGVtQXR0YWNobWVudEV4aXN0cygpCgpDaGVja3MgaWYgYSBmaWxlIHdpdGggYSBnaXZlbiBmaWxlbmFtZSBleGlzdHMuCgogICAgbXkgJEV4aXN0cyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQXR0YWNobWVudEV4aXN0cygKICAgICAgICBGaWxlbmFtZSA9PiAndGVzdC50eHQnLAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUF0dGFjaG1lbnRFeGlzdHMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KEZpbGVuYW1lIENvbmZpZ0l0ZW1JRCBVc2VySUQpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlZpcnR1YWxGUycpLT5GaW5kKAogICAgICAgIEZpbGVuYW1lID0+ICdDb25maWdJdGVtLycgLiAkUGFyYW17Q29uZmlnSXRlbUlEfSAuICcvJyAuICRQYXJhbXtGaWxlbmFtZX0sCiAgICApOwoKICAgIHJldHVybiAxOwp9Cgo9aGVhZDIgQ29uZmlnSXRlbUxvb2t1cCgpCgpUaGlzIG1ldGhvZCBkb2VzIGEgbG9va3VwIGZvciBhIGNvbmZpZy1pdGVtLiBJZiBhIGNvbmZpZy1pdGVtIGlkIGlzIGdpdmVuLAppdCByZXR1cm5zIHRoZSBudW1iZXIgb2YgdGhlIGNvbmZpZy1pdGVtLiBJZiBhIGNvbmZpZy1pdGVtIG51bWJlciBpcyBnaXZlbiwKdGhlIGFwcHJvcHJpYXRlIGlkIGlzIHJldHVybmVkLgoKICAgIG15ICROdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzNCwKICAgICk7CgpvcgoKICAgIG15ICRJRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtTG9va3VwKAogICAgICAgIENvbmZpZ0l0ZW1OdW1iZXIgPT4gMTAwMDAwMSwKICAgICk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUxvb2t1cCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICgkS2V5KSA9IGZpcnN0IHsgJFBhcmFteyRffSB9IHF3KENvbmZpZ0l0ZW1JRCBDb25maWdJdGVtTnVtYmVyKTsKCiAgICAjIGNoZWNrIGZvciBuZWVkZWQgc3R1ZmYKICAgIGlmICggISRLZXkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCBvciBDb25maWdJdGVtTnVtYmVyIScsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgaWYgcmVzdWx0IGlzIGNhY2hlZCByZXR1cm4gdGhhdCByZXN1bHQKICAgIHJldHVybiAkU2VsZi0+e0NhY2hlfXtDb25maWdJdGVtTG9va3VwfXskS2V5fXsgJFBhcmFteyRLZXl9IH0KICAgICAgICBpZiAkU2VsZi0+e0NhY2hlfXtDb25maWdJdGVtTG9va3VwfXskS2V5fXsgJFBhcmFteyRLZXl9IH07CgogICAgIyBzZXQgdGhlIGFwcHJvcHJpYXRlIFNRTCBzdGF0ZW1lbnQKICAgIG15ICRTUUwgPSAkS2V5IGVxICdDb25maWdJdGVtTnVtYmVyJwogICAgICAgID8KICAgICAgICAnU0VMRUNUIGlkICAgICAgICAgICAgICAgIEZST00gY29uZmlnaXRlbSBXSEVSRSBjb25maWdpdGVtX251bWJlciA9ID8nCiAgICAgICAgOgogICAgICAgICdTRUxFQ1QgY29uZmlnaXRlbV9udW1iZXIgRlJPTSBjb25maWdpdGVtIFdIRVJFIGlkID0gPyc7CgogICAgIyBmZXRjaCB0aGUgcmVxdWVzdGVkIHZhbHVlCiAgICByZXR1cm4gdW5sZXNzICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5QcmVwYXJlKAogICAgICAgIFNRTCAgID0+ICRTUUwsCiAgICAgICAgQmluZCAgPT4gWyBcJFBhcmFteyRLZXl9IF0sCiAgICAgICAgTGltaXQgPT4gMSwKICAgICk7CgogICAgbXkgJFZhbHVlOwogICAgd2hpbGUgKCBteSBAUm93ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPkZldGNocm93QXJyYXkoKSApIHsKICAgICAgICAkVmFsdWUgPSAkUm93WzBdOwogICAgfQoKICAgICRTZWxmLT57Q2FjaGV9e0NvbmZpZ0l0ZW1Mb29rdXB9eyRLZXl9eyAkUGFyYW17JEtleX0gfSA9ICRWYWx1ZTsKCiAgICByZXR1cm4gJFZhbHVlOwp9Cgo9aGVhZDIgVW5pcXVlTmFtZUNoZWNrKCkKClRoaXMgbWV0aG9kIGNoZWNrcyBhbGwgYWxyZWFkeSBleGlzdGluZyBjb25maWcgaXRlbXMsIHdoZXRoZXIgdGhlIGdpdmVuIG5hbWUgZG9lcyBhbHJlYWR5IGV4aXN0CndpdGhpbiB0aGUgc2FtZSBjb25maWcgaXRlbSBjbGFzcyBvciBhbW9uZyBhbGwgY2xhc3NlcywgZGVwZW5kaW5nIG9uIHRoZSBTeXNDb25maWcgdmFsdWUgb2YKVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSAoQ2xhc3Mgb3IgR2xvYmFsKS4KClRoaXMgbWV0aG9kIHJlcXVpcmVzIDMgcGFyYW1ldGVyczogQ29uZmlnSXRlbUlELCBOYW1lIGFuZCBDbGFzcwoiQ29uZmlnSXRlbUlEIiAgaXMgdGhlIElEIG9mIHRoZSBDb25maWdJdGVtLCB3aGljaCBpcyB0byBiZSBjaGVja2VkIGZvciB1bmlxdWVuZXNzCiJOYW1lIiAgICAgICAgICBpcyB0aGUgY29uZmlnIGl0ZW0gbmFtZSB0byBiZSBjaGVja2VkIGZvciB1bmlxdWVuZXNzCiJDbGFzc0lEIiAgICAgICBpcyB0aGUgSUQgb2YgdGhlIGNvbmZpZyBpdGVtJ3MgY2xhc3MKCkFsbCBwYXJhbWV0ZXJzIGFyZSBtYW5kYXRvcnkuCgogICAgbXkgJER1cGxpY2F0ZU5hbWVzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlVuaXF1ZU5hbWVDaGVjaygKICAgICAgICBDb25maWdJdGVtSUQgPT4gJzczJwogICAgICAgIE5hbWUgICAgICAgICA9PiAnUEMjMDA1JywKICAgICAgICBDbGFzc0lEICAgICAgPT4gJzMyJywKICAgICk7CgpUaGUgZ2l2ZW4gbmFtZSBpcyBub3QgdW5pcXVlCgogICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gWyA1LCAzNSwgNDgsIF07ICAgICMgSURzIG9mIENvbmZpZ0l0ZW1zIHdpdGggdGhlIHNhbWUgbmFtZQoKVGhlIGdpdmVuIG5hbWUgaXMgdW5pcXVlCgogICAgbXkgJE5hbWVEdXBsaWNhdGVzID0gW107Cgo9Y3V0CgpzdWIgVW5pcXVlTmFtZUNoZWNrIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBmb3IgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEIE5hbWUgQ2xhc3NJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJNaXNzaW5nIHBhcmFtZXRlciAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBDb25maWdJdGVtSUQgcGFyYW0gZm9yIHZhbGlkIGZvcm1hdAogICAgaWYgKAogICAgICAgICFJc0ludGVnZXIoICRQYXJhbXtDb25maWdJdGVtSUR9ICkKICAgICAgICAmJiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgJiYgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gbmUgJ05FVycgKQogICAgICAgICkKICAgIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBDb25maWdJdGVtSUQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGFuIGludGVnZXIgb3IgJ05FVyciLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgTmFtZSBwYXJhbSBmb3IgdmFsaWQgZm9ybWF0CiAgICBpZiAoICFJc1N0cmluZ1dpdGhEYXRhKCAkUGFyYW17TmFtZX0gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlRoZSBOYW1lIHBhcmFtZXRlciBuZWVkcyB0byBiZSBhIHN0cmluZyEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgQ2xhc3NJRCBwYXJhbSBmb3IgdmFsaWQgZm9ybWF0CiAgICBpZiAoICFJc0ludGVnZXIoICRQYXJhbXtDbGFzc0lEfSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIENsYXNzSUQgcGFyYW1ldGVyIG5lZWRzIHRvIGJlIGFuIGludGVnZXIiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgIG15ICRDbGFzc0xpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICk7CgogICAgIyBjaGVjayBjbGFzcyBsaXN0IGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoJENsYXNzTGlzdCkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJVbmFibGUgdG8gcmV0cmlldmUgYSB2YWxpZCBjbGFzcyBsaXN0ISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgdGhlIGNsYXNzIG5hbWUgZnJvbSB0aGUgY2xhc3MgbGlzdAogICAgbXkgJENsYXNzID0gJENsYXNzTGlzdC0+eyAkUGFyYW17Q2xhc3NJRH0gfTsKCiAgICAjIGNoZWNrIGNsYXNzIGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkQ2xhc3MpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVW5hYmxlIHRvIGRldGVybWluZSBhIGNvbmZpZyBpdGVtIGNsYXNzIHVzaW5nIHRoZSBnaXZlbiBDbGFzc0lEISIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBlbHNpZiAoICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPntEZWJ1Z30gPiAwICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZGVidWcnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUmVzb2x2ZWQgQ2xhc3NJRCAkUGFyYW17Q2xhc3NJRH0gdG8gY2xhc3MgJENsYXNzIiwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHRoZSB1bmlxdWVuZXNzIHNjb3BlIGZyb20gU3lzQ29uZmlnCiAgICBteSAkU2NvcGUgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoJ1VuaXF1ZUNJTmFtZTo6VW5pcXVlbmVzc0NoZWNrU2NvcGUnKTsKCiAgICAjIGNoZWNrIHNjb3BlIGZvciB2YWxpZGl0eQogICAgaWYgKCAhSXNTdHJpbmdXaXRoRGF0YSgkU2NvcGUpICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGNvbmZpZ3VyYXRpb24gb2YgVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSBpcyBpbnZhbGlkISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJFNjb3BlIG5lICdnbG9iYWwnICYmICRTY29wZSBuZSAnY2xhc3MnICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVW5pcXVlQ0lOYW1lOjpVbmlxdWVuZXNzQ2hlY2tTY29wZSBpcyAkU2NvcGUsIGJ1dCBtdXN0IGJlIGVpdGhlciAiCiAgICAgICAgICAgICAgICAuICInZ2xvYmFsJyBvciAnY2xhc3MnISIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIGlmICggJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+e0RlYnVnfSA+IDAgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJUaGUgc2NvcGUgZm9yIGNoZWNraW5nIHRoZSB1bmlxdWVuZXNzIGlzICRTY29wZSIsCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlU2VhcmNoQ3JpdGVyaWE7CgogICAgIyBhZGQgdGhlIGNvbmZpZyBpdGVtIGNsYXNzIHRvIHRoZSBzZWFyY2ggY3JpdGVyaWEgaWYgdGhlIHVuaXF1ZW5lc3Mgc2NvcGUgaXMgbm90IGdsb2JhbAogICAgaWYgKCAkU2NvcGUgbmUgJ2dsb2JhbCcgKSB7CiAgICAgICAgJFNlYXJjaENyaXRlcmlhe0NsYXNzSURzfSA9IFsgJFBhcmFte0NsYXNzSUR9IF07CiAgICB9CgogICAgJFNlYXJjaENyaXRlcmlhe05hbWV9ID0gJFBhcmFte05hbWV9OwoKICAgICMgc2VhcmNoIGZvciBhIGNvbmZpZyBpdGVtIG1hdGNoaW5nIHRoZSBnaXZlbiBuYW1lCiAgICBteSBAQ29uZmlnSXRlbUlEcyA9ICRTZWxmLT5Db25maWdJdGVtU2VhcmNoKAogICAgICAgICVTZWFyY2hDcml0ZXJpYSwKICAgICAgICBSZXN1bHQgPT4gJ0FSUkFZJwogICAgKTsKCiAgICAjIHJlbW92ZSB0aGUgcHJvdmlkZWQgQ29uZmlnSXRlbUlEIGZyb20gdGhlIHJlc3VsdHMsIG90aGVyd2lzZSB0aGUgZHVwbGljYXRlIGNoZWNrIHdvdWxkIGZhaWwKICAgICMgYmVjYXVzZSB0aGUgQ29uZmlnSXRlbSBpdHNlbGYgaXMgZm91bmQgYXMgZHVwbGljYXRlCiAgICBteSBARHVwbGljYXRlcyA9IGdyZXAgeyAkXyBuZSAkUGFyYW17Q29uZmlnSXRlbUlEfSB9IEBDb25maWdJdGVtSURzOwoKICAgICMgaWYgYSBjb25maWcgaXRlbSB3YXMgZm91bmQsIHRoZSBnaXZlbiBuYW1lIGlzIG5vdCB1bmlxdWUKICAgICMgaWYgbm8gY29uZmlnIGl0ZW0gd2FzIGZvdW5kLCB0aGUgZ2l2ZW4gbmFtZSBpcyB1bmlxdWUKCiAgICAjIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBjb25maWcgaXRlbSBzZWFyY2ggZm9yIGR1cGxpY2F0ZXMKICAgIHJldHVybiBcQER1cGxpY2F0ZXM7Cn0KCj1oZWFkMiBDdXJJbmNpU3RhdGVSZWNhbGMoKQoKcmVjYWxjdWxhdGVzIHRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIG9mIHRoaXMgY29uZmlnIGl0ZW0gYW5kIG9mIGNvbmZpZyBpdGVtcwp0aGF0IGFyZSBsaW5rZWQgdG8gaXQuIE9ubHkgbGlua3MgYmV0d2VlbiBjb25maWcgaXRlbXMgYXJlIGNvbnNpZGVyZWQgaGVyZS4gTGlua3MgdG8Kb3IgZnJvbSBjb25maWcgaXRlbSB2ZXJzaW9ucyBhcmUgaWdub3JlZC4KClRoZSBjdXJyZW50IGluY2lkZW50IHN0YXRlIGRlcGVuZHMgb24gdGhlIGluY2lkZW50IHN0YXRlcyB0aGF0IHRoaXMgY29uZmlnIGl0ZW0gZGVwZW5kcyBvbi4KQSBjaGFuZ2Ugb2YgdGhlIGluY2lkZW50IHN0YXRlIG1pZ2h0IGhhdmUgcmVwZXJjdXNzaW9ucyBvbiB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZQpvZiB0aGUgY29uZmlnIGl0ZW1zIHRoYXQgZGVwZW5kIG9uIHRoaXMgY29uZmlnIGl0ZW0uCgpJdCBpcyBhIGNvbW1vbiB1c2UgY2FzZSB0aGF0IEM8Q3VySW5jaVN0YXRlUmVjYWxjKCk+IGlzIGNhbGxlZCBpbiBhIGxvb3Agb3ZlciBhIGxpc3Qgb2YgY29uZmlnIGl0ZW1zLgpFeGFtcGxlcyBhcmUgdGhlIGNvbnNvbGUgY29tbWFuZCBDPEFkbWluOjpJVFNNOjpJbmNpZGVudFN0YXRlOjpSZWNhbGN1bGF0ZT4gb3Igd2hlbiB0aGUgbGlua2luZwpvZiB0aGUgY29uZmlnIGl0ZW1zIGhhcyBjaGFuZ2VkLiBGb3Igb3B0aW1pemluZyB0aGF0IGNhc2UgdGhlcmUgYXJlIHRoZSBwYXJhbWV0ZXJzCkM8TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGU+IGFuZCBDPFNjYW5uZWRDb25maWdJdGVtSURzPiB3aGljaCBjYXJyeSBzdGF0ZSBiZXR3ZWVuCmludm9jYXRpb25zIG9mIHRoaXMgbWV0aG9kLiBUaGV5IHByb3ZpZGUgY2FjaGluZyBhbmQgcHJldmVudCBpbmZpbml0ZSBsb29wcy4KCkNoYW5naW5nIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiBjb25maWcgaXRlbXMgaGFzIHJlcGVyY3Vzc2lvbnMgb24gc2VydmljZXMuIFRoZXNlIGVmZmVjdHMKYXJlIGhhbmRsZWQgaW4gdGhpcyBtZXRob2QgYXMgd2VsbC4KCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5DdXJJbmNpU3RhdGVSZWNhbGMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgPT4gMTIzLAogICAgICAgIE5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlID0+ICROZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSwgICMgb3B0aW9uYWwsIGluY2lkZW50IHN0YXRlcyBvZiBhbHJlYWR5IGNoZWNrZWQgQ0lzCiAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgICAgICAgPT4gJFNjYW5uZWRDb25maWdJdGVtSURzLCAgICAgICAgIyBvcHRpb25hbCwgSURzIGFuZCBpbmNpZGVudCBzdGF0ZXMgb2YgYWxyZWFkeSBjaGVja2VkIENJcwogICAgKTsKCkZvciBhc3luY2hyb25vdXMgZXhlY3V0aW9uIGl0IGlzIGNvbnZlbmllbnQgdG8gcGFzcyBhIGxpc3Qgb2YgY29uZmlnIGl0ZW1zIHRvIEM8Q3VySW5jaVN0YXRlUmVjYWxjKCk+LgoKICAgIG15ICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1ckluY2lTdGF0ZVJlY2FsYygKICAgICAgICBDb25maWdJdGVtSURzICAgICAgICAgICAgICA9PiBbIDEyMywgMTI0LCAxMjUgXSwKICAgICk7CgpJbiB0aGF0IGNhc2UgdGhlIGxvb3AgaXMgZGlzY29udGludWVkIHdoZW4gYW4gaXRlcmF0aW9uIHJlcG9ydGVkIGEgZmFpbHVyZS4KCj1jdXQKCnN1YiBDdXJJbmNpU3RhdGVSZWNhbGMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIHVzZWZ1bCBmb3IgYXN5bmMgZXhlY3V0aW9uCiAgICAjIGFsbCBvdGhlciBwYXJhbWV0ZXJzIHdpbGwgYmUgaWdub3JlZAogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEc30gKSB7CgogICAgICAgICMgdGhlc2UgaGFzaGVzIHdpbGwgYmUgZmlsbGVkIGluIHRoZSBjYWxscyB0byBDdXJJbmNpU3RhdGVSZWNhbGMKICAgICAgICBteSAoICVOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSwgJVNjYW5uZWRDb25maWdJdGVtSURzICk7CgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggJFBhcmFte0NvbmZpZ0l0ZW1JRHN9LT5AKiApIHsKICAgICAgICAgICAgbXkgJFN1Y2Nlc3MgPSAkU2VsZi0+Q3VySW5jaVN0YXRlUmVjYWxjKAogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgIE5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlID0+IFwlTmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGUsCiAgICAgICAgICAgICAgICBTY2FubmVkQ29uZmlnSXRlbUlEcyAgICAgICA9PiBcJVNjYW5uZWRDb25maWdJdGVtSURzLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuIHVubGVzcyAkU3VjY2VzczsKICAgICAgICB9CgogICAgICAgICMgYWxsIGZpbmUKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIENvbmZpZ0l0ZW1JRCEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KICAgIGlmICggcmVmICRQYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnVGhlIHBhcmFtZXRlciBDb25maWdJdGVtSUQgbXVzdCBiZSBhIHBsYWluIHNjYWxhciEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBpbmNpZGVudCBsaW5rIHR5cGVzIGFuZCBkaXJlY3Rpb25zIGZyb20gY29uZmlnLiBFLmcuCiAgICAjIHsgRGVwZW5kc09uID0+ICdCb3RoJywgTG9jYXRpb25PZiA9PiAnU291cmNlJyB9CiAgICBteSAkSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSVRTTTo6Q29yZTo6SW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbicpOwoKICAgICMgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSBob2xkcyB0aGUgZGV0ZXJtaW5lZCBpbmNpZGVudCBzdGF0ZXMgb2YgdGhlIGNvbnNpZGVyZWQgY29uZmlnIGl0ZW1zLgogICAgIyBJdCBtYXkgY29udGFpbiBjb250YWluIGNvbnRlbnQgZnJvbSBwcmV2aW91cyBjYWxscyBvZiBDdXJJbmNpU3RhdGVSZWNhbGMoKSBzbyB0aGF0IHVubmVjZXNzYXJ5IHdvcmsKICAgICMgY2FuIGJlIHNraXBwZWQuCiAgICAjIE5ldyBpbmNpZGVudCBzdGF0ZXMgYXJlIGNhbGN1bGF0ZWQgZnJvbSBhbGwgaW5jaWRlbnQgbGluayB0eXBlcy4KICAgICMgVGhlIG5ld2x5IGRldGVybWluZWQgaW5jaWRlbnQgc3RhdGVzIGFyZSBtYWRlIGF2YWlsYWJsZSB0byB0aGUgY2FsbGVyLCBzbyB0aGF0IHRoZSBjYWxsZXIKICAgICMgY2FuIHBhc3MgaXQgdG8gdGhlIG5leHQgaXRlcmF0aW9uLgogICAgIyBJbmNvcnBvcmF0ZSBkYXRhIGZyb20gcHJldmlvdXMgcnVuKHMpIGFuZCByZW1lbWJlciBrbm93biBkYXRhLgogICAgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSAvLz0ge307CiAgICBteSAkS25vd25OZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZSA9IGRjbG9uZSggJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfSApOwoKICAgICMgUmVtZW1iZXIgdGhlIHNjYW5uZWQgY29uZmlnIGl0ZW1zCiAgICAjIEluY29ycG9yYXRlIGRhdGEgZnJvbSBwcmV2aW91cyBydW4ocykgYW5kIHJlbWVtYmVyIGtub3duIGRhdGEuCiAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9IC8vPSB7fTsKICAgIG15ICRLbm93blNjYW5uZWRDb25maWdJdGVtSURzID0gZGNsb25lKCAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9ICk7CgogICAgIyBGaW5kIGRlZXBseSBjb25uZWN0ZWQgY29uZmlnIGl0ZW1zIHdpdGggYW4gaW5jaWRlbnQgc3RhdGUuCiAgICAjIFRoZSBkaXJlY3Rpb24gaW4gJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24gaXMgaWdub3JlZCBoZXJlIGJlY2F1c2UgZGVwZW5kZWQgb24gaXRlbXMgY291bGQgY2hhbmdlCiAgICAjIHRoZSBpbmNpZGVudCBzdGF0ZSBvZiB0aGUgY3VycmVudCBjb25maWcgaXRlbS4gT3IgY2hhbmdlcyBpbgogICAgIyB0aGUgY3VycmVudCBjb25maWcgaXRlbSBjb3VsZCBjaGFuZ2UgZG93bnN0cmVhbSBjb25maWcgaXRlbXMuCiAgICAkU2VsZi0+X0ZpbmRJbmNpQ29uZmlnSXRlbXMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgSW5jaWRlbnRMaW5rVHlwZXMgICAgPT4gWyBrZXlzICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT4lKiBdLAogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30sCiAgICApOwoKICAgICMgdG8gc3RvcmUgdGhlIHJlbGF0aW9uIGJldHdlZW4gc2VydmljZXMgYW5kIGxpbmtlZCBDSXMKICAgICMgVGhlIGluZm8gd2lsbCBiZSB1c2VkIGZvciB1cGRhdGluZyB0aGUgc2VydmljZXMuCiAgICBteSAlU2VydmljZUNJUmVsYXRpb247CgogICAgIyBjYWxjdWxhdGUgdGhlIG5ldyBDSSBpbmNpZGVudCBzdGF0ZSBmb3IgZWFjaCBjb25maWd1cmVkIGxpbmt0eXBlCiAgICBMSU5LVFlQRToKICAgIGZvciBteSAkTGlua1R5cGUgKCBzb3J0IGtleXMgJEluY2lkZW50TGlua1R5cGVEaXJlY3Rpb24tPiUqICkgewoKICAgICAgICAjIGdldCB0aGUgZGlyZWN0aW9uCiAgICAgICAgbXkgJExpbmtEaXJlY3Rpb24gPSAkSW5jaWRlbnRMaW5rVHlwZURpcmVjdGlvbi0+eyRMaW5rVHlwZX07CgogICAgICAgICMgaW52ZXN0aWdhdGUgYWxsIGNvbmZpZyBpdGVtcyB3aXRoIGEgd2FybmluZyBzdGF0ZQogICAgICAgIENPTkZJR0lURU1JRDoKICAgICAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAleyAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9IH0gKSB7CgogICAgICAgICAgICAjIFNraXAgY29uZmlnIGl0ZW1zIGtub3duIGZyb20gcHJldmlvdXMgZXhlY3V0aW9uKHMpLgogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICBJc1N0cmluZ1dpdGhEYXRhKCAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9e1R5cGV9ICkKICAgICAgICAgICAgICAgICYmCiAgICAgICAgICAgICAgICAkS25vd25TY2FubmVkQ29uZmlnSXRlbUlEcy0+eyRDb25maWdJdGVtSUR9e1R5cGV9IGVxICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgaW52ZXN0aWdhdGUgb25seSBjb25maWcgaXRlbXMgd2l0aCBhbiBpbmNpZGVudCBzdGF0ZQogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCB1bmxlc3MgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfSBlcSAnaW5jaWRlbnQnOwoKICAgICAgICAgICAgIyBhbm5vdGF0ZSBsaW5rZWQgY29uZmlnIGl0ZW1zIHdpdGggYSB3YXJuaW5nCiAgICAgICAgICAgICRTZWxmLT5fRmluZFdhcm5Db25maWdJdGVtcygKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgICAgICAgICBEaXJlY3Rpb24gICAgICAgICAgICA9PiAkTGlua0RpcmVjdGlvbiwKICAgICAgICAgICAgICAgIE51bWJlck9mTGlua1R5cGVzICAgID0+IHNjYWxhciBrZXlzICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT4lKiwKICAgICAgICAgICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBDT05GSUdJVEVNSUQ6CiAgICAgICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IGtleXMgJXsgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSB9ICkgewoKICAgICAgICAgICAgIyBTa2lwIGNvbmZpZyBpdGVtcyBrbm93biBmcm9tIHByZXZpb3VzIGV4ZWN1dGlvbihzKS4KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgSXNTdHJpbmdXaXRoRGF0YSggJEtub3duU2Nhbm5lZENvbmZpZ0l0ZW1JRHMtPnskQ29uZmlnSXRlbUlEfXtUeXBlfSApCiAgICAgICAgICAgICAgICAmJgogICAgICAgICAgICAgICAgJEtub3duU2Nhbm5lZENvbmZpZ0l0ZW1JRHMtPnskQ29uZmlnSXRlbUlEfXtUeXBlfSBlcSAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRDb25maWdJdGVtSUR9e1R5cGV9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGV4dHJhY3QgaW5jaWRlbnQgc3RhdGUgdHlwZQogICAgICAgICAgICBteSAkSW5jaVN0YXRlVHlwZSA9ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX07CgogICAgICAgICAgICAjIEZpbmQgYWxsIGxpbmtlZCBzZXJ2aWNlcyBvZiB0aGlzIGNvbmZpZyBpdGVtLgogICAgICAgICAgICAjIFRoZXNlIGtpbmQgb2YgbGlua3MgYXJlIG5vdCBhdmFpbGFibGUgZnJvbSB0aGUgdGFibGUgY29uZmlnaXRlbV9saW5rCiAgICAgICAgICAgIG15ICVMaW5rZWRTZXJ2aWNlSURzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnKS0+TGlua0tleUxpc3QoCiAgICAgICAgICAgICAgICBPYmplY3QxICAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgICAgIEtleTEgICAgICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgT2JqZWN0MiAgID0+ICdTZXJ2aWNlJywKICAgICAgICAgICAgICAgIFN0YXRlICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICAgICAgVHlwZSAgICAgID0+ICRMaW5rVHlwZSwKICAgICAgICAgICAgICAgIERpcmVjdGlvbiA9PiAkTGlua0RpcmVjdGlvbiwKICAgICAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgU0VSVklDRUlEOgogICAgICAgICAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlTGlua2VkU2VydmljZUlEcyApIHsKCiAgICAgICAgICAgICAgICAjIHJlbWVtYmVyIHRoZSBDSXMgdGhhdCBhcmUgbGlua2VkIHdpdGggdGhpcyBzZXJ2aWNlCiAgICAgICAgICAgICAgICAkU2VydmljZUNJUmVsYXRpb257JFNlcnZpY2VJRH0gLy89IFtdOwogICAgICAgICAgICAgICAgcHVzaCAkU2VydmljZUNJUmVsYXRpb257JFNlcnZpY2VJRH0tPkAqLCAkQ29uZmlnSXRlbUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkSW5jaVN0YXRlVHlwZSBlcSAnaW5jaWRlbnQnOwoKICAgICAgICAgICAgJFBhcmFte05ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlfXskQ29uZmlnSXRlbUlEfSA9ICRJbmNpU3RhdGVUeXBlOwogICAgICAgIH0KICAgIH0KCiAgICAjIGdldCB0aGUgaW5jaWRlbnQgc3RhdGUgbGlzdCBvZiB3YXJuaW5ncwogICAgbXkgJFdhcm5TdGF0ZUxpc3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgICAgICAgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgIFByZWZlcmVuY2VzID0+IHsKICAgICAgICAgICAgRnVuY3Rpb25hbGl0eSA9PiAnd2FybmluZycsCiAgICAgICAgfSwKICAgICk7CgogICAgaWYgKCAhZGVmaW5lZCAkV2FyblN0YXRlTGlzdCApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIklUU006OkNvcmU6OkluY2lkZW50U3RhdGUgV2FybmluZyBjYW5ub3QgYmUgaW52YWxpZC4iLAogICAgICAgICk7CiAgICB9CgogICAgbXkgJVJldmVyc2VXYXJuU3RhdGVMaXN0ID0gcmV2ZXJzZSAleyRXYXJuU3RhdGVMaXN0fTsKICAgIG15IEBTb3J0ZWRXYXJuTGlzdCAgICAgICA9IHNvcnQga2V5cyAlUmV2ZXJzZVdhcm5TdGF0ZUxpc3Q7CiAgICBteSAkV2FybmluZ1N0YXRlSUQgICAgICAgPSAkUmV2ZXJzZVdhcm5TdGF0ZUxpc3R7V2FybmluZ30gfHwgJFJldmVyc2VXYXJuU3RhdGVMaXN0eyAkU29ydGVkV2Fybkxpc3RbMF0gfTsKICAgIG15ICRDYWNoZU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwoKICAgICMgc2V0IHRoZSBuZXcgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBmb3IgQ0lzCiAgICBDT05GSUdJVEVNSUQ6CiAgICBmb3IgbXkgJENvbmZpZ0l0ZW1JRCAoIHNvcnQga2V5cyAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9LT4lKiApIHsKCiAgICAgICAgIyBTa2lwIGNvbmZpZyBpdGVtcyBrbm93biBmcm9tIHByZXZpb3VzIGV4ZWN1dGlvbihzKS4KICAgICAgICBpZiAoCiAgICAgICAgICAgIElzU3RyaW5nV2l0aERhdGEoICRLbm93bk5ld0NvbmZpZ0l0ZW1JbmNpZGVudFN0YXRlLT57JENvbmZpZ0l0ZW1JRH0gKQogICAgICAgICAgICAmJiAkS25vd25OZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZS0+eyRDb25maWdJdGVtSUR9IGVxICRQYXJhbXtOZXdDb25maWdJdGVtSW5jaWRlbnRTdGF0ZX17JENvbmZpZ0l0ZW1JRH0KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQ7CiAgICAgICAgfQoKICAgICAgICAjIGdldCBuZXcgaW5jaWRlbnQgc3RhdGUgdHlwZSAoY2FuIG9ubHkgYmUgJ29wZXJhdGlvbmFsJyBvciAnd2FybmluZycpCiAgICAgICAgbXkgJEluY2lTdGF0ZVR5cGUgPSAkUGFyYW17TmV3Q29uZmlnSXRlbUluY2lkZW50U3RhdGV9eyRDb25maWdJdGVtSUR9OwoKICAgICAgICAjIGdldCBsYXN0IHZlcnNpb24KICAgICAgICBteSAkTGFzdFZlcnNpb24gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDAsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEN1ckluY2lTdGF0ZUlEOwogICAgICAgIGlmICggJEluY2lTdGF0ZVR5cGUgZXEgJ3dhcm5pbmcnICkgewoKICAgICAgICAgICAgIyBjaGVjayB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB0eXBlIGlzIGluICdpbmNpZGVudCcKICAgICAgICAgICAgIyB0aGVuIHdlIGRvIG5vdCB3YW50IHRvIGNoYW5nZSBpdCB0byB3YXJuaW5nCiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRMYXN0VmVyc2lvbi0+e0luY2lTdGF0ZVR5cGV9IGVxICdpbmNpZGVudCc7CgogICAgICAgICAgICAkQ3VySW5jaVN0YXRlSUQgPSAkV2FybmluZ1N0YXRlSUQ7CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJEluY2lTdGF0ZVR5cGUgZXEgJ29wZXJhdGlvbmFsJyApIHsKICAgICAgICAgICAgJEN1ckluY2lTdGF0ZUlEID0gJExhc3RWZXJzaW9uLT57SW5jaVN0YXRlSUR9OwogICAgICAgIH0KCiAgICAgICAgIyBObyB1cGRhdGUgbmVjZXNzYXJ5IGlmIGluY2lkZW50IHN0YXRlIGlkIG9mIHZlcnNpb24gYW5kIGNvbmZpZyBpdGVtIG1hdGNoLgogICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRMYXN0VmVyc2lvbi0+e0N1ckluY2lTdGF0ZUlEfSBlcSAkQ3VySW5jaVN0YXRlSUQ7CgogICAgICAgICMgdXBkYXRlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+RG8oCiAgICAgICAgICAgIFNRTCAgPT4gJ1VQREFURSBjb25maWdpdGVtIFNFVCBjdXJfaW5jaV9zdGF0ZV9pZCA9ID8gV0hFUkUgaWQgPSA/JywKICAgICAgICAgICAgQmluZCA9PiBbIFwkQ3VySW5jaVN0YXRlSUQsIFwkQ29uZmlnSXRlbUlEIF0sCiAgICAgICAgKTsKCiAgICAgICAgIyBUT0RPOiBBbHNvIHRoZSBWZXJzaW9uSUQtY2FjaGVzIGhhdmUgdG8gYmUgY29uc2lkZXJlZCwgdGhleSBhbHNvIGNvbnRhaW4gQ3VySW5jaVN0YXRlCiAgICAgICAgIyBkZWxldGUgdGhlIGNhY2hlCiAgICAgICAgZm9yIG15ICRERkRhdGEgKCAwLCAxICkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPkRlbGV0ZSgKICAgICAgICAgICAgICAgIFR5cGUgPT4gJFNlbGYtPntDYWNoZVR5cGV9LAogICAgICAgICAgICAgICAgS2V5ICA9PiBqb2luKAogICAgICAgICAgICAgICAgICAgICc6OicsICdDb25maWdJdGVtR2V0JywKICAgICAgICAgICAgICAgICAgICBDb25maWdJdGVtSUQgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgICAgICAgICBERkRhdGEgICAgICAgPT4gJERGRGF0YQogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBzZXQgdGhlIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGUgdHlwZSBmb3IgZWFjaCBzZXJ2aWNlIChpbmZsdWVuY2VkIGJ5IGxpbmtlZCBDSXMpCiAgICBTRVJWSUNFSUQ6CiAgICBmb3IgbXkgJFNlcnZpY2VJRCAoIHNvcnQga2V5cyAlU2VydmljZUNJUmVsYXRpb24gKSB7CgogICAgICAgICMgc2V0IGRlZmF1bHQgaW5jaWRlbnQgc3RhdGUgdHlwZQogICAgICAgIG15ICRDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcyA9ICdvcGVyYXRpb25hbCc7CgogICAgICAgICMgZ2V0IHRoZSB1bmlxdWUgY29uZmlnIGl0ZW0gaWRzIHdoaWNoIGFyZSBkaXJlY3RseSBsaW5rZWQgdG8gdGhpcyBzZXJ2aWNlCiAgICAgICAgbXkgJVVuaXF1ZUNvbmZpZ0l0ZW1JRHMgPSBtYXAgeyAkXyA9PiAxIH0gJFNlcnZpY2VDSVJlbGF0aW9ueyRTZXJ2aWNlSUR9LT5AKjsKCiAgICAgICAgIyBpbnZlc3RpZ2F0ZSB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSBvZiBlYWNoIGNvbmZpZyBpdGVtCiAgICAgICAgQ09ORklHSVRFTUlEOgogICAgICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBrZXlzICVVbmlxdWVDb25maWdJdGVtSURzICkgewoKICAgICAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGEgPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgQ2FjaGUgICAgICAgID0+IDAsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRCBpZiAkQ29uZmlnSXRlbURhdGEtPntDdXJEZXBsU3RhdGVUeXBlfSBuZSAncHJvZHVjdGl2ZSc7CiAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEIGlmICRDb25maWdJdGVtRGF0YS0+e0N1ckluY2lTdGF0ZVR5cGV9IGVxICdvcGVyYXRpb25hbCc7CgogICAgICAgICAgICAjIGNoZWNrIGlmIHNlcnZpY2UgbXVzdCBiZSBzZXQgdG8gJ3dhcm5pbmcnCiAgICAgICAgICAgIGlmICggJENvbmZpZ0l0ZW1EYXRhLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ3dhcm5pbmcnICkgewogICAgICAgICAgICAgICAgJEN1ckluY2lTdGF0ZVR5cGVGcm9tQ0lzID0gJ3dhcm5pbmcnOwoKICAgICAgICAgICAgICAgIG5leHQgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGlmIHNlcnZpY2UgbXVzdCBiZSBzZXQgdG8gJ2luY2lkZW50JwogICAgICAgICAgICBpZiAoICRDb25maWdJdGVtRGF0YS0+e0N1ckluY2lTdGF0ZVR5cGV9IGVxICdpbmNpZGVudCcgKSB7CiAgICAgICAgICAgICAgICAkQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMgPSAnaW5jaWRlbnQnOwoKICAgICAgICAgICAgICAgIGxhc3QgQ09ORklHSVRFTUlEOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHVwZGF0ZSB0aGUgY3VycmVudCBpbmNpZGVudCBzdGF0ZSB0eXBlIGZyb20gQ0lzIG9mIHRoZSBzZXJ2aWNlCiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlNlcnZpY2UnKS0+U2VydmljZVByZWZlcmVuY2VzU2V0KAogICAgICAgICAgICBTZXJ2aWNlSUQgPT4gJFNlcnZpY2VJRCwKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdDdXJJbmNpU3RhdGVUeXBlRnJvbUNJcycsCiAgICAgICAgICAgIFZhbHVlICAgICA9PiAkQ3VySW5jaVN0YXRlVHlwZUZyb21DSXMsCiAgICAgICAgICAgIFVzZXJJRCAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBPYmplY3RBdHRyaWJ1dGVzR2V0KCkKCnJldHVybnMgdGhlIGF0dHJpYnV0ZXMgYSBjb25maWcgaXRlbSBjYW4gaGF2ZSBvbiB0aGUgc3lzdGVtLgoKICAgIG15ICVBdHRyaWJ1dGVzID0gJFRpY2tldE9iamVjdC0+T2JqZWN0QXR0cmlidXRlc0dldCgKICAgICAgICBEeW5hbWljRmllbGRzID0+ICgwfDEpLCAgICAgICAgICMgKG9wdGlvbmFsKSBpZiBkeW5hbWljIGZpZWxkIG5hbWVzIGFyZSBpbmNsdWRlZCwgZGVmYXVsdCAwCiAgICAgICAgVmVyc2lvbiAgICAgICA9PiAoMHwxKSwgICAgICAgICAjIChvcHRpb25hbCkgaWYgdmVyc2lvbiBpbmZvcm1hdGlvbiBpcyBpbmNsdWRlZCwgZGVmYXVsdCAxCiAgICAgICAgRWRpdE1hc2sgICAgICA9PiAoMHwxKSwgICAgICAgICAjIChvcHRpb25hbCkgaWYgZWRpdCBtYXNrIGF0dHJpYnV0ZXMgYXJlIHJldHVybmVkIGluc3RlYWQgb2YgYmFja2VuZCBhdHRyaWJ1dGVzLCBkZWZhdWx0IDAKICAgICk7Cgo9Y3V0CgpzdWIgT2JqZWN0QXR0cmlidXRlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICRQYXJhbXtWZXJzaW9ufSAvLz0gMTsKCiAgICBteSAlQ29uZmlnSXRlbUF0dHJpYnV0ZXM7CgogICAgaWYgKCAkUGFyYW17RWRpdE1hc2t9ICkgewogICAgICAgICVDb25maWdJdGVtQXR0cmlidXRlcyA9ICgKICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICBJbmNpU3RhdGVJRCAgID0+IDEsCiAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gMSwKICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAxLAogICAgICAgICk7CiAgICB9CiAgICBlbHNlIHsKICAgICAgICAlQ29uZmlnSXRlbUF0dHJpYnV0ZXMgPSAoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgID0+IDEsCiAgICAgICAgICAgIE51bWJlciAgICAgICAgID0+IDEsCiAgICAgICAgICAgIENsYXNzSUQgICAgICAgID0+IDEsCiAgICAgICAgICAgIENsYXNzZXMgICAgICAgID0+IDEsCiAgICAgICAgICAgIEN1ckRlcGxTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIEN1ckRlcGxTdGF0ZXMgID0+IDEsCiAgICAgICAgICAgIEN1ckluY2lTdGF0ZUlEID0+IDEsCiAgICAgICAgICAgIEN1ckluY2lTdGF0ZXMgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBpZiByZXF1ZXN0ZWQsIHNldCB2ZXJzaW9uIGF0dHJpYnV0ZXMKICAgICAgICBpZiAoICRQYXJhbXtWZXJzaW9ufSApIHsKICAgICAgICAgICAgJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzID0gKAogICAgICAgICAgICAgICAgJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgICA9PiAxLAogICAgICAgICAgICAgICAgVmVyc2lvblN0cmluZyA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICAgICAgRGVwbFN0YXRlcyAgICA9PiAxLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlSUQgICA9PiAxLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlcyAgICA9PiAxLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGlmIGR5bmFtaWMgZmllbGRzIG5lZWQgdG8gYmUgYWRkZWQKICAgIGlmICggJFBhcmFte0R5bmFtaWNGaWVsZHN9ICkgewogICAgICAgIG15ICREeW5hbWljRmllbGRzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpLT5EeW5hbWljRmllbGRMaXN0KAogICAgICAgICAgICBWYWxpZCAgICAgID0+IDEsCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgUmVzdWx0VHlwZSA9PiAnSEFTSCcsCiAgICAgICAgKTsKCiAgICAgICAgZm9yIG15ICRGaWVsZE5hbWUgKCB2YWx1ZXMgJER5bmFtaWNGaWVsZHMtPiUqICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbUF0dHJpYnV0ZXN7IkR5bmFtaWNGaWVsZF8kRmllbGROYW1lIn0gPSAxOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gJUNvbmZpZ0l0ZW1BdHRyaWJ1dGVzOwp9Cgo9aGVhZDEgSU5URVJOQUwgSU5URVJGQUNFCgo9aGVhZDIgX0ZpbmRJbmNpQ29uZmlnSXRlbXMoKQoKZmluZCBjb25uZWN0ZWQgY29uZmlnIGl0ZW1zIHdpdGggYW4gaW5jaWRlbnQgc3RhdGUuCgogICAgJENvbmZpZ0l0ZW1PYmplY3QtPl9GaW5kSW5jaUNvbmZpZ0l0ZW1zKAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtSUQsCiAgICAgICAgSW5jaWRlbnRMaW5rVHlwZXMgICAgPT4gWyBrZXlzICRJbmNpZGVudExpbmtUeXBlRGlyZWN0aW9uLT4lKiBdLAogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+IFwlU2Nhbm5lZENvbmZpZ0l0ZW1JRHMsCiAgICApOwoKVGhlIHNjYW5uZWQgY29uZmlnIGl0ZW1zIHdpbGwgYmUgZW50ZXJlZCBpbiB0aGUgQzxTY2FubmVkQ29uZmlnSXRlbUlEcz4gaGFzaHJlZi4gRWFjaCBjb25maWcgaXRlbSB3aWxsIGJlIHNjYW5uZWQgb25seSBvbmNlLgpUaGUgYXR0cmlidXRlIEM8VHlwZT4gd2lsbCBiZSBlaXRoZXIgJ29wZXJhdGlvbmFsJyBvciAnaW5jaWRlbnQnLgoKVGhlIHNlYXJjaCBmb3IgY29uZmlnIGl0ZW1zIHdpdGggaW5jaWRlbnRzIHJlY3Vyc2VzIGludG8gdGhlIGdyYXBoIG9mIGxpbmtlZCBjb25maWcgaXRlbXMuIFRoZSBkaXJlY3RseQpsaW5rZWQgaXRlbXMgd2lsbCBhbHdheXMgYmUgY2hlY2tlZC4gUmVjdXJzaW9uIHN0b3BzIG9uY2UgYW4gaW5jaWRlbnQgaGFzIGJlZW4gZm91bmQuCgpUaGlzIG1ldGhvZCBvbmx5IGNvbGxlY3RzIGRhdGEsIG5vIGN1cnJlbnQgaW5jaWRlbnQgc3RhdGVzIHdpbGwgYmUgYWx0ZXJlZC4KCj1jdXQKCnN1YiBfRmluZEluY2lDb25maWdJdGVtcyB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICByZXR1cm4gdW5sZXNzICRQYXJhbXtDb25maWdJdGVtSUR9OwoKICAgICMgaWdub3JlIGFscmVhZHkgc2Nhbm5lZCBpZHMgKGluZmluaXRlIGxvb3AgcHJvdGVjdGlvbikKICAgIHJldHVybiBpZiBkZWZpbmVkICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH07CgogICAgIyBzZXQgYSBkZWZhdWx0IHNvIHRoZSBDb25maWdJdGVtIHdvbid0IGJlIHNjYW5uZWQgYWdhaW4KICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH0gPSB7fTsKICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317ICRQYXJhbXtDb25maWdJdGVtSUR9IH0tPntUeXBlfSA9ICdvcGVyYXRpb25hbCc7CgogICAgIyBhZGQgb3duIGNvbmZpZyBpdGVtIGlkIHRvIGxpc3Qgb2YgbGlua2VkIGNvbmZpZyBpdGVtcwogICAgbXkgQENvbmZpZ0l0ZW1JRHMgPSAkUGFyYW17Q29uZmlnSXRlbUlEfTsKCiAgICAjIGZpbmQgdGhlIGRpcmVjdGx5IGxpbmtlZCBjb25maWcgaXRlbXMKICAgIHsKICAgICAgICAjIERpcmVjdGlvbiBtdXN0IEFMV0FZUyBiZSAnQm90aCcgaGVyZSBhcyB3ZSBuZWVkIHRvIGluY2x1ZGUKICAgICAgICAjIGFsbCBsaW5rZWQgQ0lzIHRoYXQgY291bGQgaW5mbHVlbmNlIHRoaXMgb25lIQogICAgICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRTZWxmLT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBUeXBlcyAgICAgICAgPT4gJFBhcmFte0luY2lkZW50TGlua1R5cGVzfSwKICAgICAgICAgICAgRGlyZWN0aW9uICAgID0+ICdCb3RoJywKICAgICAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyByZW1lbWJlciBvbmx5IHRoZSBsaW5rZWQgY29uZmlnIGl0ZW0gaWRzLCBpZ25vcmUgdGhlIGNvbmZpZyBpdGVtIHZlcnNpb25zCiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgZ3JlcCB7ZGVmaW5lZH0KICAgICAgICAgICAgbWFwICB7ICRfLT57Q29uZmlnSXRlbUlEfSB9CiAgICAgICAgICAgICRMaW5rZWRDb25maWdJdGVtcy0+QCo7CiAgICB9CgogICAgIyBMb29wIG92ZXIgdGhlIHJlcXVlc3RlZCBjb25maWcgaXRlbSBhbmQgdGhlIGRpcmVjdGx5IGxpbmtlZCBjb25maWcgaXRlbXMKICAgIENPTkZJR0lURU1JRDoKICAgIGZvciBteSAkQ29uZmlnSXRlbUlEICggc29ydCBAQ29uZmlnSXRlbUlEcyApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW0gZGF0YQogICAgICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICBDYWNoZSAgICAgICAgPT4gMCwKICAgICAgICApOwoKICAgICAgICAjIFdoZW4gYW4gaW5jaWRlbnQgd2FzIGZvdW5kLCBtYXJrIHRoZSBjb25maWcgaXRlbSBhbmQgc3RvcCByZWN1cnNpbmcKICAgICAgICBpZiAoICRDb25maWdJdGVtLT57Q3VySW5jaVN0YXRlVHlwZX0gZXEgJ2luY2lkZW50JyApIHsKICAgICAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskQ29uZmlnSXRlbUlEfXtUeXBlfSA9ICdpbmNpZGVudCc7CgogICAgICAgICAgICBuZXh0IENPTkZJR0lURU1JRDsKICAgICAgICB9CgogICAgICAgICMgbm8gaW5jaWRlbnQgd2FzIGVuY291bnRlcmVkLCBjb250aW51ZSB3aXRoIHJlY3Vyc2lvbgogICAgICAgICMgX0ZpbmRJbmNpQ29uZmlnSXRlbXMoKSBtaWdodCBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCAkUGFyYW17Q29uZmlnSXRlbUlEfS4KICAgICAgICAjIEJ1dCB0aGF0IGNhbGwgd2lsbCBkbyBub3RoaW5nLgogICAgICAgICRTZWxmLT5fRmluZEluY2lDb25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgSW5jaWRlbnRMaW5rVHlwZXMgICAgPT4gJFBhcmFte0luY2lkZW50TGlua1R5cGVzfSwKICAgICAgICAgICAgU2Nhbm5lZENvbmZpZ0l0ZW1JRHMgPT4gJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfSwKICAgICAgICApOwogICAgfQoKICAgIHJldHVybjsKfQoKPWhlYWQyIF9GaW5kV2FybkNvbmZpZ0l0ZW1zKCkKClRoaXMgbWV0aG9kIGlzIGNhbGxlZCBmb3IgY29uZmlnIGl0ZW0gdGhhdCBhcmUgaW4gYSBpbmNpZGVudCBvciB3YXJuaW5nIHN0YXRlLgpGaW5kIGNvbm5lY3RlZCBjb25maWcgaXRlbXMgYW5kIGFubm90YXRlIHRoZW0gd2l0aCBhIHdhcm5pbmcgaW4gQzxTY2FubmVkQ29uZmlnSXRlbUlEcz4uIFByb3BhZ2F0ZSB0aGUgd2FybmluZy4KCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+X0ZpbmRXYXJuQ29uZmlnSXRlbXMoCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICBMaW5rVHlwZSAgICAgICAgICAgICA9PiAkTGlua1R5cGUsCiAgICAgICAgRGlyZWN0aW9uICAgICAgICAgICAgPT4gJExpbmtEaXJlY3Rpb24sCiAgICAgICAgTnVtYmVyT2ZMaW5rVHlwZXMgICAgPT4gMiwgICAgICAgICAgICAgICAgICAgICAjIGp1c3QgZm9yIGluZmluaXRlIGxvb3AgcHJvdGVjdGlvbgogICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRTY2FubmVkQ29uZmlnSXRlbUlEcywKICAgICk7Cgo9Y3V0CgpzdWIgX0ZpbmRXYXJuQ29uZmlnSXRlbXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgcmV0dXJuIHVubGVzcyAkUGFyYW17Q29uZmlnSXRlbUlEfTsKCiAgICAjIEluZmluaXRlIGxvb3AgcHJvdGVjdGlvbi4KICAgICMgSWdub3JlIGFscmVhZHkgc2Nhbm5lZCBpZHMuCiAgICAjIEl0IGlzIG9rIHRoYXQgYSBjb25maWcgaXRlbSBpcyBpbnZlc3RpZ2F0ZWQgYXMgbWFueSB0aW1lcyBhcyB0aGVyZSBhcmUgY29uZmlndXJlZCBsaW5rIHR5cGVzICogbnVtYmVyIG9mIGluY2lkZW50IGNvbmZpZyBpdGVlbXMKICAgIG15ICRJbmNpZGVudENvdW50ID0gdHJ1ZSB7ICggJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXskX317VHlwZX0gfHwgJycgKSBlcSAnaW5jaWRlbnQnIH0KICAgIGtleXMgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfS0+JSo7CiAgICBpZiAoCiAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e0ZpbmRXYXJufQogICAgICAgICYmCiAgICAgICAgJFBhcmFte1NjYW5uZWRDb25maWdJdGVtSURzfXsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gfS0+e0ZpbmRXYXJufSA+PSAoICRQYXJhbXtOdW1iZXJPZkxpbmtUeXBlc30gKiAkSW5jaWRlbnRDb3VudCApCiAgICAgICAgKQogICAgewogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGluY3JlYXNlIHRoZSB2aXNpdCBjb3VudGVyCiAgICAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyAkUGFyYW17Q29uZmlnSXRlbUlEfSB9LT57RmluZFdhcm59Kys7CgogICAgIyBmaW5kIGNvbmZpZyBpdGVtcyB0byB3aGljaCB0aGUgaW5jaWRlbnQgb3Igd2FybmluZyBtdXN0IGJlIHByb3BhZ2F0ZWQKICAgIG15ICRMaW5rZWRDb25maWdJdGVtcyA9ICRTZWxmLT5MaW5rZWRDb25maWdJdGVtcygKICAgICAgICBDb25maWdJdGVtSUQgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgVHlwZXMgICAgICAgID0+IFsgJFBhcmFte0xpbmtUeXBlfSBdLAogICAgICAgIERpcmVjdGlvbiAgICA9PiAkUGFyYW17RGlyZWN0aW9ufSwKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CiAgICBteSBATGlua2VkQ29uZmlnSXRlbUlEcyA9IG1hcCB7ICRfLT57Q29uZmlnSXRlbUlEfSB9ICRMaW5rZWRDb25maWdJdGVtcy0+QCo7CgogICAgQ09ORklHSVRFTUlEOgogICAgZm9yIG15ICRDb25maWdJdGVtSUQgKCBzb3J0IEBMaW5rZWRDb25maWdJdGVtSURzICkgewoKICAgICAgICAjIHN0YXJ0IHJlY3Vyc2lvbgogICAgICAgICRTZWxmLT5fRmluZFdhcm5Db25maWdJdGVtcygKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgICAgPT4gJENvbmZpZ0l0ZW1JRCwKICAgICAgICAgICAgTGlua1R5cGUgICAgICAgICAgICAgPT4gJFBhcmFte0xpbmtUeXBlfSwKICAgICAgICAgICAgRGlyZWN0aW9uICAgICAgICAgICAgPT4gJFBhcmFte0RpcmVjdGlvbn0sCiAgICAgICAgICAgIE51bWJlck9mTGlua1R5cGVzICAgID0+ICRQYXJhbXtOdW1iZXJPZkxpbmtUeXBlc30sCiAgICAgICAgICAgIFNjYW5uZWRDb25maWdJdGVtSURzID0+ICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc30sCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdJVEVNSUQgaWYgKCAkUGFyYW17U2Nhbm5lZENvbmZpZ0l0ZW1JRHN9eyRDb25maWdJdGVtSUR9e1R5cGV9IHx8ICcnICkgZXEgJ2luY2lkZW50JzsKCiAgICAgICAgIyBzZXQgd2FybmluZyBzdGF0ZQogICAgICAgICRQYXJhbXtTY2FubmVkQ29uZmlnSXRlbUlEc317JENvbmZpZ0l0ZW1JRH17VHlwZX0gPSAnd2FybmluZyc7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBfUHJlcGFyZUxpa2VTdHJpbmcoKQoKaW50ZXJuYWwgZnVuY3Rpb24gdG8gcHJlcGFyZSBsaWtlIHN0cmluZ3MKCiAgICAkQ29uZmlnSXRlbU9iamVjdC0+X1ByZXBhcmVMaWtlU3RyaW5nKCAkU3RyaW5nUmVmICk7Cgo9Y3V0CgpzdWIgX1ByZXBhcmVMaWtlU3RyaW5nIHsKICAgIG15ICggJFNlbGYsICRWYWx1ZSApID0gQF87CgogICAgcmV0dXJuIGlmICEkVmFsdWU7CiAgICByZXR1cm4gaWYgcmVmICRWYWx1ZSBuZSAnU0NBTEFSJzsKCiAgICAjIFF1b3RlCiAgICAkeyRWYWx1ZX0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVvdGUoICR7JFZhbHVlfSwgJ0xpa2UnICk7CgogICAgIyByZXBsYWNlICogd2l0aCAlCiAgICAkeyRWYWx1ZX0gPX4gc3sgXCorIH17JX14bXNnOwoKICAgIHJldHVybjsKfQoKPWhlYWQxIElUU00gQ29uZmlnIEl0ZW0gZXZlbnRzOgoKQ29uZmlnSXRlbUNyZWF0ZSwgQ29uZmlnSXRlbVVwZGF0ZSwgVmVyc2lvbkNyZWF0ZSwgVmVyc2lvblVwZGF0ZSwgRGVwbG95bWVudFN0YXRlVXBkYXRlLCBJbmNpZGVudFN0YXRlVXBkYXRlLApDb25maWdJdGVtRGVsZXRlLCBMaW5rQWRkLCBMaW5rRGVsZXRlLCBEZWZpbml0aW9uVXBkYXRlLCBOYW1lVXBkYXRlLCBEZWZpbml0aW9uQ3JlYXRlLCBWZXJzaW9uRGVsZXRlCgo9Y3V0CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/ColumnFilter.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyOwoKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KElzQXJyYXlSZWZXaXRoRGF0YSBJc0hhc2hSZWZXaXRoRGF0YSBJc1N0cmluZ1dpdGhEYXRhKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEQicsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TWFpbicsCiAgICAnS2VybmVsOjpTeXN0ZW06OlVzZXInLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29sdW1uRmlsdGVyIC0gQ29sdW1uIEZpbHRlciBsaWJyYXJ5Cgo9aGVhZDEgREVTQ1JJUFRJT04KCkFsbCBmdW5jdGlvbnMgZm9yIENvbHVtbiBGaWx0ZXJzLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJElUU01Db25maWdJdGVtQ29sdW1uRmlsdGVyT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpDb2x1bW5GaWx0ZXInKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgQ2xhc3NGaWx0ZXJWYWx1ZXNHZXQoKQoKZ2V0IGEgbGlzdCBvZiBhbGwgY29uZmlnIGl0ZW0gY2xhc3NlcwoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5DbGFzc0ZpbHRlclZhbHVlc0dldCgpOwoKICAgIHJldHVybnMKCiAgICAkVmFsdWVzID0gewogICAgICAgIDIyID0+ICdDb21wdXRlcicsCiAgICAgICAgMjMgPT4gJ0hhcmR3YXJlJywKICAgICAgICAyNCA9PiAnTG9jYXRpb24nLAogICAgICAgIDI1ID0+ICdOZXR3b3JrJywKICAgICAgICAyNiA9PiAnU29mdHdhcmUnLAogICAgfTsKCj1jdXQKCnN1YiBDbGFzc0ZpbHRlclZhbHVlc0dldCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIHJldHVybiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKfQoKPWhlYWQyIERlcGxTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBkZXBsb3ltZW50IHN0YXRlcwoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5EZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoKTsKCiAgICByZXR1cm5zCgogICAgJFZhbHVlcyA9IHsKICAgICAgICAyNyA9PiAiRXhwaXJlZCIsCiAgICAgICAgMjggPT4gIkluYWN0aXZlIiwKICAgICAgICAyOSA9PiAiTWFpbnRlbmFuY2UiLAogICAgICAgIDMwID0+ICJQaWxvdCIsCiAgICAgICAgMzEgPT4gIlBsYW5uZWQiLAogICAgICAgIDMyID0+ICJQcm9kdWN0aW9uIiwKICAgICAgICAzMyA9PiAiUmVwYWlyIiwKICAgICAgICAzNCA9PiAiUmV0aXJlZCIsCiAgICAgICAgMzUgPT4gIlJldmlldyIsCiAgICAgICAgMzYgPT4gIlRlc3QvUUEiLAogICAgfTsKCj1jdXQKCnN1YiBEZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpEZXBsb3ltZW50U3RhdGUnLAogICAgICAgIFZhbGlkID0+IDEsCiAgICApOwp9Cgo9aGVhZDIgQ3VyRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCkKCmdldCBhIGxpc3Qgb2YgYWxsIGN1cnJlbnQgZGVwbG95bWVudCBzdGF0ZXMgLSB3cmFwcyBmb3IgRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCkKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+Q3VyRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0KCk7CgogICAgcmV0dXJucwoKICAgICRWYWx1ZXMgPSB7CiAgICAgICAgMjcgPT4gIkV4cGlyZWQiLAogICAgICAgIDI4ID0+ICJJbmFjdGl2ZSIsCiAgICAgICAgMjkgPT4gIk1haW50ZW5hbmNlIiwKICAgICAgICAzMCA9PiAiUGlsb3QiLAogICAgICAgIDMxID0+ICJQbGFubmVkIiwKICAgICAgICAzMiA9PiAiUHJvZHVjdGlvbiIsCiAgICAgICAgMzMgPT4gIlJlcGFpciIsCiAgICAgICAgMzQgPT4gIlJldGlyZWQiLAogICAgICAgIDM1ID0+ICJSZXZpZXciLAogICAgICAgIDM2ID0+ICJUZXN0L1FBIiwKICAgIH07Cgo9Y3V0CgpzdWIgQ3VyRGVwbFN0YXRlRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5EZXBsU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoJVBhcmFtKTsKfQoKPWhlYWQyIEluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBpbmNpZGVudCBzdGF0ZXMKCiAgICBteSAkVmFsdWVzID0gJENvbHVtbkZpbHRlck9iamVjdC0+SW5jaVN0YXRlRmlsdGVyVmFsdWVzR2V0KCk7CgogICAgcmV0dXJucwoKICAgICRWYWx1ZXMgPSB7CiAgICAgICAgMSA9PiAiT3BlcmF0aW9uYWwiLAogICAgICAgIDIgPT4gIldhcm5pbmciLAogICAgICAgIDMgPT4gIkluY2lkZW50IgogICAgfTsKCj1jdXQKCnN1YiBJbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICBWYWxpZCA9PiAxLAogICAgKTsKfQoKPWhlYWQyIEN1ckluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGFsbCBjdXJyZW50IGluY2lkZW50IHN0YXRlcyAtIHdyYXBzIEluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpCgogICAgbXkgJFZhbHVlcyA9ICRDb2x1bW5GaWx0ZXJPYmplY3QtPkN1ckluY2lTdGF0ZUZpbHRlclZhbHVlc0dldCgpOwoKICAgIHJldHVybnMKCiAgICAkVmFsdWVzID0gewogICAgICAgIDEgPT4gIk9wZXJhdGlvbmFsIiwKICAgICAgICAyID0+ICJXYXJuaW5nIiwKICAgICAgICAzID0+ICJJbmNpZGVudCIKICAgIH07Cgo9Y3V0CgpzdWIgQ3VySW5jaVN0YXRlRmlsdGVyVmFsdWVzR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgcmV0dXJuICRTZWxmLT5JbmNpU3RhdGVGaWx0ZXJWYWx1ZXNHZXQoJVBhcmFtKTsKfQoKPWhlYWQyIER5bmFtaWNGaWVsZEZpbHRlclZhbHVlc0dldCgpCgpnZXQgYSBsaXN0IG9mIGEgc3BlY2lmaWMgY29uZmlnIGl0ZW0gZHluYW1pYyBmaWVsZCB2YWx1ZXMgd2l0aGluIHRoZSBnaXZlbiBjb25maWcgaXRlbXMgbGlzdAoKICAgIG15ICRWYWx1ZXMgPSAkQ29sdW1uRmlsdGVyT2JqZWN0LT5EeW5hbWljRmllbGRGaWx0ZXJWYWx1ZXNHZXQoCiAgICAgICAgSVRTTUNvbmZpZ0l0ZW1JRHMgPT4gWzIzLCAxLCA1NiwgNzRdLCAgICAjIGFycmF5IHJlZiBsaXN0IG9mIGNvbmZpZyBpdGVtIElEcwogICAgICAgIFZhbHVlVHlwZSA9PiAnVGV4dCcsICAgICAgICAgICAgICMgVGV4dCB8IEludGVnZXIgfCBEYXRlCiAgICAgICAgRmllbGRJRCAgID0+ICRGaWVsZElELCAgICAgICAgICAgIyBJRCBvZiB0aGUgZHluYW1pYyBmaWVsZAogICAgKTsKCiAgICByZXR1cm5zCgogICAgJFZhbHVlcyA9IHsKICAgICAgICBWYWx1ZUEgPT4gJ1ZhbHVlQScsCiAgICAgICAgVmFsdWVCID0+ICdWYWx1ZUInLAogICAgICAgIFZhbHVlQyA9PiAnVmFsdWVDJwogICAgfTsKCj1jdXQKCnN1YiBEeW5hbWljRmllbGRGaWx0ZXJWYWx1ZXNHZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgZm9yIG15ICROZWVkZWQgKHF3KElUU01Db25maWdJdGVtSURzIFZhbHVlVHlwZSBGaWVsZElEKSkgewoKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICBteSAkSVRTTUNvbmZpZ0l0ZW1JRFN0cmluZyA9ICRTZWxmLT5fSVRTTUNvbmZpZ0l0ZW1JRFN0cmluZ0dldCgKICAgICAgICBJVFNNQ29uZmlnSXRlbUlEcyA9PiAkUGFyYW17SVRTTUNvbmZpZ0l0ZW1JRHN9LAogICAgICAgIENvbHVtbk5hbWUgICAgICAgID0+ICdvYmplY3RfaWQnLAogICAgKTsKCiAgICBpZiAoICFJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtJVFNNQ29uZmlnSXRlbUlEc30gKSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ0lUU01Db25maWdJdGVtSURzIG11c3QgYmUgYW4gYXJyYXkgcmVmIScsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgbXkgJFZhbHVlVHlwZSA9ICd2YWx1ZV90ZXh0JzsKICAgIGlmICggJFBhcmFte1ZhbHVlVHlwZX0gJiYgJFBhcmFte1ZhbHVlVHlwZX0gZXEgJ0RhdGVUaW1lJyApIHsKICAgICAgICAkVmFsdWVUeXBlID0gJ3ZhbHVlX2RhdGUnOwogICAgfQogICAgZWxzaWYgKCAkUGFyYW17VmFsdWVUeXBlfSAmJiAkUGFyYW17VmFsdWVUeXBlfSBlcSAnSW50ZWdlcicgKSB7CiAgICAgICAgJFZhbHVlVHlwZSA9ICd2YWx1ZV9pbnQnOwogICAgfQoKICAgICMgZ2V0IGRhdGFiYXNlIG9iamVjdAogICAgbXkgJERCT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyk7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+CiAgICAgICAgICAgICJTRUxFQ1QgRElTVElOQ1QoJFZhbHVlVHlwZSkiCiAgICAgICAgICAgIC4gJyBGUk9NIGR5bmFtaWNfZmllbGRfdmFsdWUnCiAgICAgICAgICAgIC4gJyBXSEVSRSBmaWVsZF9pZCA9ID8nCiAgICAgICAgICAgIC4gJElUU01Db25maWdJdGVtSURTdHJpbmcKICAgICAgICAgICAgLiAiIE9SREVSIEJZICRWYWx1ZVR5cGUgREVTQyIsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17RmllbGRJRH0gXSwKICAgICk7CgogICAgbXkgJURhdGE7CiAgICB3aGlsZSAoIG15IEBSb3cgPSAkREJPYmplY3QtPkZldGNocm93QXJyYXkoKSApIHsKCiAgICAgICAgIyBjaGVjayBpZiB0aGUgdmFsdWUgaXMgYWxyZWFkeSBzdG9yZWQKICAgICAgICBpZiAoCiAgICAgICAgICAgIGRlZmluZWQgJFJvd1swXQogICAgICAgICAgICAmJiAkUm93WzBdIG5lICcnCiAgICAgICAgICAgICYmICEkRGF0YXsgJFJvd1swXSB9CiAgICAgICAgICAgICkKICAgICAgICB7CgogICAgICAgICAgICBpZiAoICRWYWx1ZVR5cGUgZXEgJ0RhdGUnICkgewoKICAgICAgICAgICAgICAgICMgY2xlYW51cCB0aW1lIHN0YW1wcyAoc29tZSBkYXRhYmFzZXMgYXJlIHVzaW5nIGUuIGcuIDIwMDgtMDItMjUgMjI6MDM6MDAuMDAwMDAwCiAgICAgICAgICAgICAgICAjIGFuZCAwMDAwLTAwLTAwIDAwOjAwOjAwIHRpbWUgc3RhbXBzKQogICAgICAgICAgICAgICAgaWYgKCAkUm93WzBdIGVxICcwMDAwLTAwLTAwIDAwOjAwOjAwJyApIHsKICAgICAgICAgICAgICAgICAgICAkUm93WzBdID0gdW5kZWY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkUm93WzBdID1+IHMvXihcZFxkXGRcZC1cZFxkLVxkXGRcc1xkXGQ6XGRcZDpcZFxkKVwuLis/JC8kMS87CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc3RvcmUgdGhlIHJlc3VsdHMKICAgICAgICAgICAgJERhdGF7ICRSb3dbMF0gfSA9ICRSb3dbMF07CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBcJURhdGE7Cn0KCjE7Cg==</File>
        <File Location="Kernel/System/ITSMConfigItem/ConfigItemACL.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjYgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTDsKCnVzZSB2NS4yNDsKdXNlIHN0cmljdDsKdXNlIHdhcm5pbmdzOwoKIyBjb3JlIG1vZHVsZXMKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpWYXJpYWJsZUNoZWNrIHF3KDphbGwpOwoKb3VyICRPYmplY3RNYW5hZ2VyRGlzYWJsZWQgPSAxOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6Q29uZmlnSXRlbUFDTCAtIGNvbmZpZyBpdGVtIEFDTCBsaWIKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGNvbmZpZyBpdGVtIEFDTCBmdW5jdGlvbnMuCgo9aGVhZDIgQ29uZmlnSXRlbUFjbCgpCgpSZXN0cmljdHMgdGhlIERhdGEgcGFyYW1ldGVyIHNlbnQgdG8gYSBzdWJzZXQgb2YgaXQsIGRlcGVuZGluZyBvbiBhIGdyb3VwIG9mIHVzZXIgZGVmaWVkIHJ1bGVzCmNhbGxlZCBBQ0xzLiBUaGUgcmVkdWNlZCBzdWJzZXQgY2FuIGJlIGFjY2VzcyBmcm9tIENvbmZpZ0l0ZW1BQ0xEYXRhKCkgaWYgUmV0dXJuVHlwZSBwYXJhbWV0ZXIgaXMgc2V0CnRvOiBDb25maWdJdGVtLCBvciBpbiBDb25maWdJdGVtQUNMQWN0aW9uRGF0YSgpLCBpZiBSZXR1cm5UeXBlIEFjdGlvbiBpcyB1c2VkLgoKRWFjaCBBQ0wgY2FuIGNvbnRhaW4gZGlmZmVyZW50IHJlc3RyaWN0aW9ucyBmb3IgZGlmZmVyZW50IG9iamVjdHMgdGhlIFJldHVyblR5cGUgcGFyYW1ldGVyIGRlZmluZXMKd2hpY2ggb2JqZWN0IGlzIGNvbnNpZGVyZWQgZm9yIHRoaXMgcmVzdHJpY3Rpb25zLCBpbiB0aGUgY2FzZSBvZiB0aGUgQ29uZmlnIEl0ZW0gb2JqZWN0IGEgc2Vjb25kCnBhcmFtZXRlciBjYWxsZWQgUmV0dXJuU3VidHlwZSBpcyBuZWVkZWQsIHRvIHNwZWNpZnkgdGhlIGNvbmZpZyBpdGVtIGF0dHJpYnV0ZSB0byBiZSByZXN0cmljdGVkLCBsaWtlOgpDPCJUQkQiPiwgZXRjLiBXaGlsZSBmb3IgdGhlIHJlc3Qgb2YgdGhlIG9iamVjdHMgYSAiLSIgdmFsdWUgbXVzdCBiZSBzZXQuIFRoZSBSZXR1cm5UeXBlCmFuZCBSZXR1cm5TdWJUeXBlIG11c3QgYmUgc2V0IGFjY29yZGluZyB0byB0aGUgRGF0YSBwYXJhbWV0ZXIgc2VudC4KClRoZSByZXN0IG9mIHRoZSBhdHRyaWJ1dGVzIGRlZmluZSB0aGUgbWF0Y2hpbmcgb3B0aW9ucyBmb3IgdGhlIEFDTCBydWxlcy4KCkV4YW1wbGUgdG8gcmVzdHJpY3QgY29uZmlnIGl0ZW0gYWN0aW9uczoKCiAgICBteSAkU3VjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWNsKAogICAgICAgIERhdGEgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFZhbHVlcyB0byByZXN0cmljdAogICAgICAgICAgICAxID0+IEFnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0LAogICAgICAgICAgICAjIC4uLgogICAgICAgIH0sCgogICAgICAgIEFjdGlvbiAgICAgICAgPT4gJ0FnZW50SVRTTUNvbmZpZ0l0ZW1FZGl0JywgICAjIE9wdGlvbmFsCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICBEeW5hbWljRmllbGQgID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbAogICAgICAgICAgICBEeW5hbWljRmllbGRfTmFtZVggPT4gMTIzLAogICAgICAgICAgICBEeW5hbWljRmllbGRfTmFtZVogPT4gJ3NvbWUgdmFsdWUnLAogICAgICAgIH0sCgogICAgICAgIFJldHVyblR5cGUgICAgID0+ICdBY3Rpb24nLCAgICAgICAgICAgICAgICAgICAjIFRvIG1hdGNoIFBvc3NpYmxlLCBQb3NzaWJsZUFkZCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUG9zc2libGVOb3Qga2V5IGluIEFDTAogICAgICAgIFJldHVyblN1YlR5cGUgID0+ICctJywgICAgICAgICAgICAgICAgICAgICAgICAjIFRvIG1hdGNoIFBvc3NpYmxlLCBQb3NzaWJsZUFkZCBvcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgUG9zc2libGVOb3Qgc3ViLWtleSBpbiBBQ0wKCiAgICAgICAgVXNlcklEICAgICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICMgVXNlcklEID0+IDEgaXMgbm90IGFmZmVjdGVkIGJ5IHRoaXMgZnVuY3Rpb24KICAgICk7CgpvciB0byByZXN0cmljdCBjb25maWcgaXRlbSBzdGF0ZXM6CgogICAgJFN1Y2Nlc3MgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUFjbCgKICAgICAgICBEYXRhID0+IHsKICAgICAgICAgICAgMSA9PiAnbmV3JywKICAgICAgICAgICAgMiA9PiAnb3BlbicsCiAgICAgICAgICAgICMgLi4uCiAgICAgICAgfSwKICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdDb25maWdJdGVtJywKICAgICAgICBSZXR1cm5TdWJUeXBlID0+ICdTdGF0ZScsCiAgICAgICAgVXNlcklEICAgICAgICA9PiAxMjMsCiAgICApOwoKcmV0dXJuczoKICAgICRTdWNjZXNzID0gMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpZiBhbiBBQ0wgbWF0Y2hlcywgb3IgZmFsc2Ugb3RoZXJ3aXNlLgoKSWYgQUNMIG1vZHVsZXMgYXJlIGNvbmZpZ3VyZWQgaW4gdGhlIEM8SVRTTUNvbmZpZ0l0ZW06OkFjbDo6TW9kdWxlPiBjb25maWcga2V5LCB0aGV5IGFyZSBpbnZva2VkCmR1cmluZyB0aGUgY2FsbCB0byBDPENvbmZpZ0l0ZW1BY2w+LiBUaGUgY29uZmlndXJhdGlvbiBvZiBhIG1vZHVsZSBsb29rcyBsaWtlIHRoaXM6CgogICAgICRDb25maWdPYmplY3QtPnsnSVRTTUNvbmZpZ0l0ZW06OkFjbDo6TW9kdWxlJ30tPnsnVGhlTmFtZSd9ID0gewogICAgICAgICBNb2R1bGUgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6QWNsOjpUaGVBY2xNb2R1bGUnLAogICAgICAgICBDaGVja3MgPT4gWydUQkQnXSwKICAgICAgICAgUmV0dXJuVHlwZSA9PiAnQ29uZmlnSXRlbScsCiAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gWydUQkQnXSwKICAgICB9OwoKRWFjaCB0aW1lIHRoZSBDPFJldHVyblR5cGU+IGFuZCBvbmUgb2YgdGhlIEM8UmV0dXJuU3ViVHlwZT4gZW50cmllcyBpcyBpZGVudGljYWwgdG8gdGhlIHNhbWUKYXJndW1lbnRzIHBhc3NlZCB0byBDPENvbmZpZ0l0ZW1BY2w+LCB0aGUgbW9kdWxlIG9mIHRoZSBuYW1lIGluIEM8TW9kdWxlPiBpcyBsb2FkZWQsIHRoZSBDPG5ldz4gbWV0aG9kCmlzIGNhbGxlZCBvbiBpdCwgYW5kIHRoZW4gdGhlIEM8UnVuPiBtZXRob2QgaXMgY2FsbGVkLgoKVGhlIEM8Q2hlY2tzPiBhcnJheSByZWZlcmVuY2UgaW4gdGhlIGNvbmZpZ3VyYXRpb24gY29udHJvbHMgd2hhdCBhcmd1bWVudHMgYXJlIHBhc3NlZC4gdG8gdGhlCkM8UnVuPiBtZXRob2QuClZhbGlkIGtleXMgYXJlIEM8RnJvbnRlbmQ+IGFuZCBDPENvbmZpZ0l0ZW0+LgpJZiBhbnkgb2YgdGhvc2UgYXJlIHByZXNlbnQsIHRoZSBDPENoZWNrcz4gYXJndW1lbnQgcGFzc2VkIHRvIEM8UnVuPiBjb250YWlucyBhbiBlbnRyeSB3aXRoIHRoZSBzYW1lCm5hbWUsIGFuZCBhcyBhIHZhbHVlIHRoZSBhc3NvY2lhdGVkIGRhdGEuCgpUaGUgQzxSdW4+IG1ldGhvZCBjYW4gYWRkIGVudHJpZXMgdG8gdGhlIEM8QWNsPiBwYXJhbSBoYXNoLCB3aGljaCBhcmUgdGhlbiBldmFsdWF0ZWQgYWxvbmcgd2l0aCBhbGwKb3RoZXIgQUNMLiBJdCBzaG91bGQgb25seSBhZGQgZW50cmllcyB3aG9zZSBjb25kaXRpb25hbHMgY2FuIGJlIGNoZWNrZWQgd2l0aCB0aGUgZGF0YSBzcGVjaWZpZWQgaW4KdGhlIEM8Q2hlY2tzPiBjb25maWd1cmF0aW9uIGVudHJ5LgoKVGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgQzxSdW4+IG1ldGhvZCBpcyBpZ25vcmVkLgoKPWN1dAoKc3ViIENvbmZpZ0l0ZW1BY2wgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZCBzdHVmZgogICAgaWYgKCAhJFBhcmFte1VzZXJJRH0gJiYgISRQYXJhbXtDdXN0b21lclVzZXJJRH0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIFVzZXJJRCBvciBDdXN0b21lclVzZXJJRCEnLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoUmV0dXJuU3ViVHlwZSBSZXR1cm5UeXBlIERhdGEpKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkbyBub3QgZXhlY3V0ZSBBQ0xzIGlmIFVzZXJJRCAxIGlzIHVzZWQKICAgIHJldHVybiBpZiAkUGFyYW17VXNlcklEfSAmJiAkUGFyYW17VXNlcklEfSA9PSAxOwoKICAgIG15ICRDb25maWdPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKICAgIG15ICRBQ0xzICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdDb25maWdJdGVtQWNsJyk7CiAgICBteSAkQWNsTW9kdWxlcyA9ICRDb25maWdPYmplY3QtPkdldCgnSVRTTUNvbmZpZ0l0ZW06OkFjbDo6TW9kdWxlJyk7CgogICAgIyBkbyBub3QgZXhlY3V0ZSBBQ0xzIGlmIG5laXRoZXIgQ29uZmlnSXRlbUFjbCBub3IgSVRTTUNvbmZpZ0l0ZW06OkFjbDo6TW9kdWxlIGlzIGNvbmZpZ3VyZWQKICAgIGlmICggISRBQ0xzICYmICEkQWNsTW9kdWxlcyApIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBmaW5kIG91dCB3aGljaCBkYXRhIHdlIGFjdHVhbGx5IG5lZWQKICAgIG15ICVBcHBsaWNhYmxlQWNsTW9kdWxlczsKICAgIG15ICVSZXF1aXJlZENoZWNrczsKICAgIG15ICRDaGVja0FsbCA9IDA7CgogICAgTU9EVUxFTkFNRToKICAgIGZvciBteSAkTW9kdWxlTmFtZSAoIHNvcnQga2V5cyAleyAkQWNsTW9kdWxlcyAvLyB7fSB9ICkgewogICAgICAgIG15ICRNb2R1bGUgPSAkQWNsTW9kdWxlcy0+eyRNb2R1bGVOYW1lfTsKCiAgICAgICAgaWYgKCAkTW9kdWxlLT57UmV0dXJuVHlwZX0gJiYgJE1vZHVsZS0+e1JldHVyblR5cGV9IG5lICRQYXJhbXtSZXR1cm5UeXBlfSApIHsKICAgICAgICAgICAgbmV4dCBNT0RVTEVOQU1FOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gKSB7CgogICAgICAgICAgICAjIFRPRE86IHRoaXMgbG9va3MgYnJva2VuLiAkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gaXMgYSBoYXNocmVmLCB5ZXQgdGhlIHZhbHVlIGlzIGRlcmVmZXJlbmNlZCBhcyBhbiBhcnJheQogICAgICAgICAgICBpZiAoIHJlZiggJE1vZHVsZS0+e1JldHVyblN1YlR5cGV9ICkgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgbmV4dCBNT0RVTEVOQU1FIGlmICFncmVwIHsgJFBhcmFte1JldHVyblN1YlR5cGV9IGVxICRfIH0KICAgICAgICAgICAgICAgICAgICBAeyAkTW9kdWxlLT57UmV0dXJuU3ViVHlwZX0gfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKCiAgICAgICAgICAgICAgICAjIGEgc2NhbGFyLCB3ZSBob3BlLCBidXQgaXQgY291bGQgYWxzbyBiZSBhbiBhcnJheQogICAgICAgICAgICAgICAgIyBUT0RPOiB0aGlzIGZpbHRlciBsb29rcyBicm9rZW4KICAgICAgICAgICAgICAgICMgISRNb2R1bGUtPntSZXR1cm5TdWJUeXBlfSBpcyBlaXRoZXIgcXt9IG9yIDEsIChvciAhITAsIGFuZCAhITEpCiAgICAgICAgICAgICAgICAjIHNvIGl0IGlzIHVubGlrZWx5IHRoYXQgYSBzdHJpbmcgY29tcGFyaXNvbiB3b3VsZCBnaXZlIGEgdHJ1ZSB2YWx1ZQogICAgICAgICAgICAgICAgbmV4dCBNT0RVTEVOQU1FIGlmICggISRNb2R1bGUtPntSZXR1cm5TdWJUeXBlfSApIGVxICRQYXJhbXtSZXR1cm5TdWJUeXBlfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBoZXJlIG9ubHkgbW9kdWxlcyBhcHBsaWNhYmxlIHRvIHRoaXMgQUNMIGludm9jYXRpb24gcmVtYWluCiAgICAgICAgJEFwcGxpY2FibGVBY2xNb2R1bGVzeyRNb2R1bGVOYW1lfSA9ICRNb2R1bGU7CgogICAgICAgIGlmICggJE1vZHVsZS0+e0NoZWNrc30gJiYgcmVmKCAkTW9kdWxlLT57Q2hlY2tzfSApIGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICRSZXF1aXJlZENoZWNrc3skX30gPSAxIGZvciBAeyAkTW9kdWxlLT57Q2hlY2tzfSB9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRNb2R1bGUtPntDaGVja3N9ICkgewogICAgICAgICAgICAkUmVxdWlyZWRDaGVja3N7ICRNb2R1bGUtPntDaGVja3N9IH0gPSAxOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJENoZWNrQWxsID0gMTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIGlmICElQXBwbGljYWJsZUFjbE1vZHVsZXMgJiYgISRBQ0xzICYmICEkQ2hlY2tBbGw7CgogICAgZm9yIG15ICRBQ0wgKCB2YWx1ZXMgJXsgJEFDTHMgLy8ge30gfSApIHsKICAgICAgICBmb3IgbXkgJFNvdXJjZSAocXcvIFByb3BlcnRpZXMgUHJvcGVydGllc0RhdGFiYXNlLykgewogICAgICAgICAgICBmb3IgbXkgJENoZWNrICggc29ydCBrZXlzICV7ICRBQ0wtPnskU291cmNlfSB9ICkgewogICAgICAgICAgICAgICAgbXkgJENsZWFuZWRVcCA9ICRDaGVjazsKICAgICAgICAgICAgICAgICRDbGVhbmVkVXAgPX4gcy8oPzpJRHxOYW1lfExvZ2luKSQvLzsKICAgICAgICAgICAgICAgICRDbGVhbmVkVXAgPX4gcy9eKD86TmV4dHxOZXd8T2xkKS8vOwogICAgICAgICAgICAgICAgJFJlcXVpcmVkQ2hlY2tzeyRDbGVhbmVkVXB9ID0gMTsKICAgICAgICAgICAgICAgIGlmICggJENoZWNrIGVxICdDb25maWdJdGVtJyApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIHJlZiggJEFDTC0+e1Byb3BlcnRpZXN9eyRDaGVja30gKSBlcSAnSEFTSCcgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZvciBteSAkSW5uZXJDaGVjayAoIHNvcnQga2V5cyAleyAkQUNMLT57JFNvdXJjZX17JENoZWNrfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJElubmVyQ2hlY2sgPX4gcy8oPzpJRHxOYW1lfExvZ2luKSQvLzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRJbm5lckNoZWNrID1+IHMvXig/Ok5leHR8TmV3fE9sZCkvLzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRSZXF1aXJlZENoZWNrc3skSW5uZXJDaGVja30gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgZ2F0aGVyIGFsbCByZXF1aXJlZCBkYXRhIHRvIGJlIGNvbXBhcmVkIGFnYWluc3QgdGhlIEFDTHMKICAgIG15ICRDaGVja1Jlc3VsdCA9ICRTZWxmLT5fR2V0Q2hlY2tzKAogICAgICAgICVQYXJhbSwKICAgICAgICBDaGVja0FsbCAgICAgICA9PiAkQ2hlY2tBbGwsCiAgICAgICAgUmVxdWlyZWRDaGVja3MgPT4gXCVSZXF1aXJlZENoZWNrcywKICAgICk7CiAgICBteSAlQ2hlY2tzICAgICAgICAgPSAleyAkQ2hlY2tSZXN1bHQtPntDaGVja3N9ICAgICAgICAgfHwge30gfTsKICAgIG15ICVDaGVja3NEYXRhYmFzZSA9ICV7ICRDaGVja1Jlc3VsdC0+e0NoZWNrc0RhdGFiYXNlfSB8fCB7fSB9OwoKICAgICMgbm90ZSB0aGF0ICVBY2xzIGlzIGp1c3QgdGhlIGRlcmVmZXJlbmNlZCAkQUNMcwogICAgbXkgJUFjbHM7CiAgICBpZiAoICRDb25maWdPYmplY3QtPkdldCgnQ29uZmlnSXRlbUFjbCcpICkgewogICAgICAgICVBY2xzID0gJXsgJENvbmZpZ09iamVjdC0+R2V0KCdDb25maWdJdGVtQWNsJykgfTsKICAgIH0KCiAgICAjIGNoZWNrIEFDTCBtb2R1bGUKICAgIE1PRFVMRToKICAgIGZvciBteSAkTW9kdWxlTmFtZSAoIHNvcnQga2V5cyAlQXBwbGljYWJsZUFjbE1vZHVsZXMgKSB7CgogICAgICAgIG15ICRNb2R1bGUgPSAkQXBwbGljYWJsZUFjbE1vZHVsZXN7JE1vZHVsZU5hbWV9OwoKICAgICAgICBuZXh0IE1PRFVMRSBpZiAhJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1vZHVsZS0+e01vZHVsZX0gKTsKCiAgICAgICAgbXkgJEdlbmVyaWMgPSAkTW9kdWxlLT57TW9kdWxlfS0+bmV3KCk7CgogICAgICAgICRHZW5lcmljLT5SdW4oCiAgICAgICAgICAgICVQYXJhbSwKICAgICAgICAgICAgQWNsICAgID0+IFwlQWNscywKICAgICAgICAgICAgQ2hlY2tzID0+IFwlQ2hlY2tzLAogICAgICAgICAgICBDb25maWcgPT4gJE1vZHVsZSwKICAgICAgICApOwogICAgfQoKICAgICMgZ2V0IHVzZWQgZGF0YQogICAgbXkgJURhdGE7CiAgICBpZiAoIHJlZiAkUGFyYW17RGF0YX0gKSB7CiAgICAgICAgJURhdGEgPSAleyAkUGFyYW17RGF0YX0gfTsKICAgIH0KCiAgICBteSAlTmV3RGF0YTsKICAgIG15ICRVc2VOZXdNYXN0ZXJQYXJhbXMgPSAwOwoKICAgIGlmICggJFBhcmFte1JldHVyblR5cGV9IGVxICdBY3Rpb24nICkgewoKICAgICAgICBpZiAoICFJc0hhc2hSZWZXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgKSB7CgogICAgICAgICAgICAjIHVzZSBEYXRhIGlmIGlzIGEgc3RyaW5nIGFuZCBpdCBpcyBub3QgJy0nCiAgICAgICAgICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0RhdGF9ICkgJiYgJFBhcmFte0RhdGF9IG5lICctJyApIHsKICAgICAgICAgICAgICAgICVEYXRhID0gKCAxID0+ICRQYXJhbXtEYXRhfSApOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIG90aGVyd2lzZSB1c2UgdGhlIHBhcmFtIEFjdGlvbgogICAgICAgICAgICBlbHNpZiAoIElzU3RyaW5nV2l0aERhdGEoICRQYXJhbXtBY3Rpb259ICkgKSB7CiAgICAgICAgICAgICAgICAlRGF0YSA9ICggMSA9PiAkUGFyYW17QWN0aW9ufSApOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBteSAlTmV3QWN0aW9uRGF0YSA9ICVEYXRhOwoKICAgICAgICAjIGNhbGN1bGF0ZSBkZWZhdWx0IGNvbmZpZyBpdGVtIGFjdGlvbiBBQ0wgZGF0YQogICAgICAgIG15IEBBY3Rpb25zVG9EZWxldGU7CiAgICAgICAgbXkgJERlZmF1bHRBY3Rpb25EYXRhID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbUFDTDo6RGVmYXVsdDo6QWN0aW9uJykgfHwge307CgogICAgICAgIGlmICggSXNIYXNoUmVmV2l0aERhdGEoJERlZmF1bHRBY3Rpb25EYXRhKSApIHsKCiAgICAgICAgICAgIGZvciBteSAkSW5kZXggKCBzb3J0IGtleXMgJU5ld0FjdGlvbkRhdGEgKSB7CgogICAgICAgICAgICAgICAgbXkgJEFjdGlvbiA9ICROZXdBY3Rpb25EYXRheyRJbmRleH07CiAgICAgICAgICAgICAgICBpZiAoICEkRGVmYXVsdEFjdGlvbkRhdGEtPnskSW5kZXh9ICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQEFjdGlvbnNUb0RlbGV0ZSwgJEFjdGlvbjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJFNlbGYtPntEZWZhdWx0Q29uZmlnSXRlbUFjbEFjdGlvbkRhdGF9ID0gXCVOZXdBY3Rpb25EYXRhOwoKICAgICAgICBmb3IgbXkgJEFjdGlvbiAoQEFjdGlvbnNUb0RlbGV0ZSkgewogICAgICAgICAgICBkZWxldGUgJFNlbGYtPntEZWZhdWx0Q29uZmlnSXRlbUFjbEFjdGlvbkRhdGF9LT57JEFjdGlvbn07CiAgICAgICAgfQogICAgfQoKICAgICMgc2V0IE5ld1RtcERhdGEgYWZ0ZXIgUG9zc2libGUgRGF0YSByZWNhbGN1bGF0aW9uIG9uIFJldHVyblR5cGUgQWN0aW9uCiAgICBteSAlTmV3VG1wRGF0YSA9ICVEYXRhOwoKICAgICMgZ2V0IHRoZSBkZWJ1ZyBwYXJhbWV0ZXJzCiAgICAkU2VsZi0+e0FDTERlYnVnfSAgICAgICAgICAgID0gJENvbmZpZ09iamVjdC0+R2V0KCdJVFNNQ29uZmlnSXRlbUFDTDo6RGVidWc6OkVuYWJsZWQnKSAgICAgfHwgMDsKICAgICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0gPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtQUNMOjpEZWJ1Zzo6TG9nUHJpb3JpdHknKSB8fCAnZGVidWcnOwoKICAgIG15ICRBQ0xEZWJ1Z0NvbmZpZ0ZpbHRlcnMgPSAkQ29uZmlnT2JqZWN0LT5HZXQoJ0lUU01Db25maWdJdGVtQUNMOjpEZWJ1Zzo6RmlsdGVyJykgfHwge307CiAgICBmb3IgbXkgJEZpbHRlck5hbWUgKCBzb3J0IGtleXMgJXskQUNMRGVidWdDb25maWdGaWx0ZXJzfSApIHsKICAgICAgICBteSAlRmlsdGVyID0gJXsgJEFDTERlYnVnQ29uZmlnRmlsdGVycy0+eyRGaWx0ZXJOYW1lfSB9OwogICAgICAgIGZvciBteSAkRmlsdGVySXRlbSAoIHNvcnQga2V5cyAlRmlsdGVyICkgewogICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnRmlsdGVyc30tPnskRmlsdGVySXRlbX0gPSAkRmlsdGVyeyRGaWx0ZXJJdGVtfTsKICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBpZiBkZWJ1ZyBmaWx0ZXJzIGFwcGx5IChjb25maWcgaXRlbSkKICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CgogICAgICAgIERFQlVHRklMVEVSOgogICAgICAgIGZvciBteSAkRGVidWdGaWx0ZXIgKCBzb3J0IGtleXMgJXsgJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9IH0gKSB7CiAgICAgICAgICAgIG5leHQgREVCVUdGSUxURVIgaWYgJERlYnVnRmlsdGVyIGVxICdBQ0xOYW1lJzsKICAgICAgICAgICAgbmV4dCBERUJVR0ZJTFRFUiBpZiAhJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9LT57JERlYnVnRmlsdGVyfTsKCiAgICAgICAgICAgIGlmICggJERlYnVnRmlsdGVyID1+IG17PE9UT0JPX0lUU01DT05GSUdJVEVNXyhbXj5dKyk+fW1zeCApIHsKICAgICAgICAgICAgICAgIG15ICRJVFNNQ29uZmlnSXRlbVBhcmFtID0gJDE7CgogICAgICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgICAgIGRlZmluZWQgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JElUU01Db25maWdJdGVtUGFyYW19CiAgICAgICAgICAgICAgICAgICAgJiYgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JElUU01Db25maWdJdGVtUGFyYW19CiAgICAgICAgICAgICAgICAgICAgJiYgJFNlbGYtPntBQ0xEZWJ1Z0ZpbHRlcnN9LT57JERlYnVnRmlsdGVyfSBuZQogICAgICAgICAgICAgICAgICAgICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRJVFNNQ29uZmlnSXRlbVBhcmFtfQogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnfSA9IDA7CiAgICAgICAgICAgICAgICAgICAgbGFzdCBERUJVR0ZJTFRFUjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHJlbWVtYmVyIGxhc3QgQUNMRGVidWcgc3RhdGUgKGJlZm9yZSBBQ0xzIGxvb3ApCiAgICAkU2VsZi0+e0FDTERlYnVnUmVjb3Zlcnl9ID0gJFNlbGYtPntBQ0xEZWJ1Z307CgogICAgQUNMUlVMRVM6CiAgICBmb3IgbXkgJEFjbCAoIHNvcnQga2V5cyAlQWNscyApIHsKCiAgICAgICAgIyBjaGVjayBpZiBkZWJ1ZyBmaWx0ZXJzIGFwcGx5IChBQ0wpIChvbmx5IGlmIEFDTERlYnVnIGlzIGFjdGl2ZSkKICAgICAgICBpZiAoCiAgICAgICAgICAgICRTZWxmLT57QUNMRGVidWdSZWNvdmVyeX0KICAgICAgICAgICAgJiYgZGVmaW5lZCAkU2VsZi0+e0FDTERlYnVnRmlsdGVyc30tPnsnQUNMTmFtZSd9CiAgICAgICAgICAgICYmICRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfS0+eydBQ0xOYW1lJ30KICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgIyBpZiBub3QgbWF0Y2ggY3VycmVudCBBQ0wgZGlzYWJsZSBBQ0xEZWJ1ZwogICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWdGaWx0ZXJzfS0+eydBQ0xOYW1lJ30gbmUgJEFjbCApIHsKICAgICAgICAgICAgICAgICRTZWxmLT57QUNMRGVidWd9ID0gMDsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWVuYWJsZSBvdGhlcndpc2UgKHdlIGFyZSBzdXJlIGl0IHdhcyBlbmFibGVkIGJlZm9yZSkKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAkU2VsZi0+e0FDTERlYnVnfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVTdGVwID0gJXsgJEFjbHN7JEFjbH0gfTsKCiAgICAgICAgIyBjaGVjayBmb3JjZSBtYXRjaAogICAgICAgIG15ICRGb3JjZU1hdGNoOwogICAgICAgIGlmICgKICAgICAgICAgICAgIUlzSGFzaFJlZldpdGhEYXRhKCAkU3RlcHtQcm9wZXJ0aWVzfSApCiAgICAgICAgICAgICYmICFJc0hhc2hSZWZXaXRoRGF0YSggJFN0ZXB7UHJvcGVydGllc0RhdGFiYXNlfSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRGb3JjZU1hdGNoID0gMTsKICAgICAgICB9CgogICAgICAgIG15ICRQcm9wZXJ0aWVzTWF0Y2g7CiAgICAgICAgbXkgJFByb3BlcnRpZXNNYXRjaFRyeTsKICAgICAgICBteSAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2g7CiAgICAgICAgbXkgJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoVHJ5OwogICAgICAgIG15ICRVc2VOZXdQYXJhbXMgPSAwOwoKICAgICAgICBmb3IgbXkgJFByb3BlcnRpZXNIYXNoIChxdyhQcm9wZXJ0aWVzIFByb3BlcnRpZXNEYXRhYmFzZSkpIHsKCiAgICAgICAgICAgIG15ICVVc2VkQ2hlY2tzID0gJUNoZWNrczsKICAgICAgICAgICAgaWYgKCAkUHJvcGVydGllc0hhc2ggZXEgJ1Byb3BlcnRpZXNEYXRhYmFzZScgKSB7CiAgICAgICAgICAgICAgICAlVXNlZENoZWNrcyA9ICVDaGVja3NEYXRhYmFzZTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzZXQgbWF0Y2ggcGFyYW1zCiAgICAgICAgICAgIG15ICRNYXRjaCAgICA9IDE7CiAgICAgICAgICAgIG15ICRNYXRjaFRyeSA9IDA7CiAgICAgICAgICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRTdGVweyRQcm9wZXJ0aWVzSGFzaH0gfSApIHsKICAgICAgICAgICAgICAgIGZvciBteSAkRGF0YSAoIHNvcnQga2V5cyAleyAkU3RlcHskUHJvcGVydGllc0hhc2h9LT57JEtleX0gfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hQcm9wZXJ0eSA9IDA7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRJdGVtICggQHsgJFN0ZXB7JFByb3BlcnRpZXNIYXNofS0+eyRLZXl9LT57JERhdGF9IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggcmVmICRVc2VkQ2hlY2tzeyRLZXl9LT57JERhdGF9IGVxICdBUlJBWScgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hJdGVtID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggc3Vic3RyKCAkSXRlbSwgMCwgbGVuZ3RoICdbTm90JyApIGVxICdbTm90JyApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2hJdGVtID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRNYXRjaGVkQXJyYXlEYXRhSXRlbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSUkFZREFUQUlURU06CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJEFycmF5RGF0YUl0ZW0gKCBAeyAkVXNlZENoZWNrc3skS2V5fS0+eyREYXRhfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaGVkQXJyYXlEYXRhSXRlbSA9ICRBcnJheURhdGFJdGVtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15ICRMb29wTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICRJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICRBcnJheURhdGFJdGVtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICEkTG9vcE1hdGNoUmVzdWx0LT57U2tpcH0gKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoSXRlbSA9ICRMb29wTWF0Y2hSZXN1bHQtPntNYXRjaH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgQVJSQVlEQVRBSVRFTTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJE1hdGNoSXRlbSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaFByb3BlcnR5ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyAkUHJvcGVydGllc0hhc2g6JyRLZXktPiREYXRhJyBNYXRjaGVkQVJSQVkgKCRJdGVtIGVxICRNYXRjaGVkQXJyYXlEYXRhSXRlbSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQgJFVzZWRDaGVja3N7JEtleX0tPnskRGF0YX0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJERhdGFJdGVtICAgID0gJFVzZWRDaGVja3N7JEtleX0tPnskRGF0YX07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJEl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YUl0ZW0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE1hdGNoUmVzdWx0LT57TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRNYXRjaFByb3BlcnR5ID0gMTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWJ1ZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnICRQcm9wZXJ0aWVzSGFzaDonJEtleS0+JERhdGEnIE1hdGNoZWQgKCRJdGVtIGVxICRVc2VkQ2hlY2tzeyRLZXl9LT57JERhdGF9KSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICggISRNYXRjaFByb3BlcnR5ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkTWF0Y2ggPSAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkTWF0Y2hUcnkgPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGNoZWNrIGZvcmNlIG9wdGlvbgogICAgICAgICAgICBpZiAoJEZvcmNlTWF0Y2gpIHsKICAgICAgICAgICAgICAgICRNYXRjaCAgICA9IDE7CiAgICAgICAgICAgICAgICAkTWF0Y2hUcnkgPSAxOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRQcm9wZXJ0aWVzSGFzaCBlcSAnUHJvcGVydGllcycgKSB7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc01hdGNoICAgID0gJE1hdGNoOwogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNNYXRjaFRyeSA9ICRNYXRjaFRyeTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaCAgICA9ICRNYXRjaDsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaFRyeSA9ICRNYXRjaFRyeTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBpZiBwcm9wZXJ0aWVzIGlzIG1pc3NpbmcKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRTdGVwe1Byb3BlcnRpZXN9ICkgKSB7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc01hdGNoICAgID0gJFByb3BlcnRpZXNEYXRhYmFzZU1hdGNoOwogICAgICAgICAgICAgICAgJFByb3BlcnRpZXNNYXRjaFRyeSA9ICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaFRyeTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBjaGVjayBpZiBwcm9wZXJ0aWVzIGRhdGFiYXNlIGlzIG1pc3NpbmcKICAgICAgICAgICAgaWYgKCAhSXNIYXNoUmVmV2l0aERhdGEoICRTdGVwe1Byb3BlcnRpZXNEYXRhYmFzZX0gKSApIHsKICAgICAgICAgICAgICAgICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaCAgICA9ICRQcm9wZXJ0aWVzTWF0Y2g7CiAgICAgICAgICAgICAgICAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2hUcnkgPSAkUHJvcGVydGllc01hdGNoVHJ5OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIHRoZSBmb2xsb3dpbmcgbG9naWMgc2hvdWxkIGJlIGFwcGxpZWQgdG8gY2FsY3VsYXRlIGlmIGFuIEFDTCBtYXRjaGVzOgogICAgICAgICMgaWYgYm90aCBQcm9wZXJ0aWVzIGFuZCBQcm9wZXJ0aWVzRGF0YWJhc2UgbWF0Y2ggPT4gbWF0Y2gKICAgICAgICAjIGlmIFByb3BlcnRpZXMgbWF0Y2hlcywgYW5kIFByb3BlcnRpZXNEYXRhYmFzZSBkb2VzIG5vdCBtYXRjaCA9PiBubyBtYXRjaAogICAgICAgICMgaWYgUHJvcGVydGllc0RhdGFiYXNlIG1hdGNoZXMsIGJ1dCBQcm9wZXJ0aWVzIGRvZXMgbm90IG1hdGNoID0+IG5vIG1hdGNoCiAgICAgICAgIyBpZiBQcm9wZXJ0aWVzRGF0YWJhc2UgbWF0Y2hlcywgYW5kIFByb3BlcnRpZXMgaXMgbWlzc2luZyA9PiBtYXRjaAogICAgICAgICMgaWYgUHJvcGVydGllcyBtYXRjaGVzLCBhbmQgUHJvcGVydGllc0RhdGFiYXNlIGlzIG1pc3NpbmcgPT4gbWF0Y2guCiAgICAgICAgbXkgJE1hdGNoOwogICAgICAgIGlmICggJFByb3BlcnRpZXNNYXRjaCAmJiAkUHJvcGVydGllc0RhdGFiYXNlTWF0Y2ggKSB7CiAgICAgICAgICAgICRNYXRjaCA9IDE7CiAgICAgICAgfQoKICAgICAgICBteSAkTWF0Y2hUcnk7CiAgICAgICAgaWYgKCAkUHJvcGVydGllc01hdGNoVHJ5ICYmICRQcm9wZXJ0aWVzRGF0YWJhc2VNYXRjaFRyeSApIHsKICAgICAgICAgICAgJE1hdGNoVHJ5ID0gMTsKICAgICAgICB9CgogICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgaWYgKCAkTWF0Y2ggJiYgJE1hdGNoVHJ5ICkgewogICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgTWF0Y2hlZCBmb3IgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG15ICVTcGVjaWFsUmV0dXJuVHlwZXMgPSAoCiAgICAgICAgICAgIEFjdGlvbiAgICAgICAgID0+IDEsCiAgICAgICAgICAgIFByb2Nlc3MgICAgICAgID0+IDEsCiAgICAgICAgICAgIEFjdGl2aXR5RGlhbG9nID0+IDEsCiAgICAgICAgICAgIEZvcm0gICAgICAgICAgID0+IDEsCiAgICAgICAgICAgIEZvcm1TdGQgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAkU3BlY2lhbFJldHVyblR5cGVzeyAkUGFyYW17UmV0dXJuVHlwZX0gfSApIHsKCiAgICAgICAgICAgICMgYnVpbGQgbmV3IFNwZWNpYWwgUmV0dXJuVHlwZSBkYXRhIGhhc2ggKFByb2Nlc3NNYW5hZ2VtZW50KQogICAgICAgICAgICAjIGZvciBTcGVjaWFsIFJldHVyblR5cGUgU3RlcHtQb3NzaWJsZX0KICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgKCAlQ2hlY2tzIHx8ICVDaGVja3NEYXRhYmFzZSApCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2gKICAgICAgICAgICAgICAgICYmICRNYXRjaFRyeQogICAgICAgICAgICAgICAgJiYgJFN0ZXB7UG9zc2libGV9LT57ICRQYXJhbXtSZXR1cm5UeXBlfSB9CiAgICAgICAgICAgICAgICAmJiBJc0FycmF5UmVmV2l0aERhdGEoICRTdGVwe1Bvc3NpYmxlfS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfSApCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgcmVzZXQgcmV0dXJuIGRhdGEgYXMgaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBqdXN0IHRoZSBQb3NzaWJsZSBJdGVtcyBleGNsdWRlZCB0aGUKICAgICAgICAgICAgICAgICMgICAgb25lcyB0aGF0IGFyZSBub3QgaW4gdGhlIHBvc3NpYmxlIHNlY3Rpb24sIHRoaXMgaXMgdGhlIHNhbWUgYXMgcmVtb3ZlIGFsbAogICAgICAgICAgICAgICAgIyAgICBtaXNzaW5nIGl0ZW1zIGZyb20gdGhlIG9yaWdpbmFsIGRhdGEKICAgICAgICAgICAgICAgICVOZXdUbXBEYXRhID0gKCk7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBSZXNldCByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfScnIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcG9zc2libGUgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXcgKCBAeyAkU3RlcHtQb3NzaWJsZX0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJE5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGF7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdUbXBEYXRheyRJRH0gPSAkRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZSBwYXJhbSAnJERhdGF7JElEfScgYWRkZWQgdG8gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZSBwYXJhbSAnJERhdGF7JElEfScgc2tpcHBlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBmb3IgU3BlY2lhbCBSZXR1cm5UeXBlIFN0ZXB7UG9zc2libGVBZGR9CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlQWRkfS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfQogICAgICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RlcHtQb3NzaWJsZUFkZH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgJFVzZU5ld1BhcmFtcyA9IDE7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlQWRkOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIHBvc3NpYmxlIGFkZCBsaXN0CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggc29ydCBrZXlzICVEYXRhICkgewoKICAgICAgICAgICAgICAgICAgICBmb3IgbXkgJE5ldyAoIEB7ICRTdGVwe1Bvc3NpYmxlQWRkfS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YXskSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE1hdGNoUmVzdWx0LT57TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1RtcERhdGF7JElEfSA9ICREYXRheyRJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlQWRkIHBhcmFtICckRGF0YXskSUR9JyBhZGRlZCB0byByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlQWRkIHBhcmFtICckRGF0YXskSUR9JyBza2lwcGVkIGZyb20gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGZvciBTcGVjaWFsIFN0ZXB7UG9zc2libGVOb3R9CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlTm90fS0+eyAkUGFyYW17UmV0dXJuVHlwZX0gfQogICAgICAgICAgICAgICAgJiYgSXNBcnJheVJlZldpdGhEYXRhKCAkU3RlcHtQb3NzaWJsZU5vdH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gKQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CgogICAgICAgICAgICAgICAgJFVzZU5ld1BhcmFtcyA9IDE7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlTm90OickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAjIG5vdCBwb3NzaWJsZSBsaXN0CiAgICAgICAgICAgICAgICBmb3IgbXkgJElEICggc29ydCBrZXlzICVEYXRhICkgewogICAgICAgICAgICAgICAgICAgIG15ICRNYXRjaCA9IDE7CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXcgKCBAeyAkU3RlcHtQb3NzaWJsZU5vdH0tPnsgJFBhcmFte1JldHVyblR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExvb3BNYXRjaFJlc3VsdCA9ICRTZWxmLT5fQ29tcGFyZU1hdGNoV2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICROZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDEKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTG9vcE1hdGNoUmVzdWx0LT57TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICEkTWF0Y2ggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZU5vdCBwYXJhbSAnJERhdGF7JElEfScgcmVtb3ZlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE5ld1RtcERhdGF7JElEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkTmV3VG1wRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVOb3QgcGFyYW0gJyREYXRheyRJRH0nIGxlYXZlZCBmb3IgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGVsc2lmICggJFBhcmFte1JldHVyblR5cGV9IGVxICdDb25maWdJdGVtJyApIHsKCiAgICAgICAgICAgICMgYnVpbGQgbmV3IGNvbmZpZyBpdGVtIGRhdGEgaGFzaAogICAgICAgICAgICAjIFN0ZXAgQ29uZmlnSXRlbSBQb3NzaWJsZSAoUmVzZXRzIFdoaXRlIGxpc3QpCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlfS0+e0NvbmZpZ0l0ZW19LT57ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgcmVzZXQgcmV0dXJuIGRhdGEgYXMgaXQgd2lsbCBiZSBmaWxsZWQgd2l0aCBqdXN0IHRoZSBQb3NzaWJsZSBJdGVtcyBleGNsdWRlZCB0aGUgb25lcwogICAgICAgICAgICAgICAgIyB0aGF0IGFyZSBub3QgaW4gdGhlIHBvc3NpYmxlIHNlY3Rpb24sIHRoaXMgaXMgdGhlIHNhbWUgYXMgcmVtb3ZlIGFsbCBtaXNzaW5nIGl0ZW1zIGZyb20KICAgICAgICAgICAgICAgICMgdGhlIG9yaWdpbmFsIGRhdGEKICAgICAgICAgICAgICAgICVOZXdUbXBEYXRhID0gKCk7CgogICAgICAgICAgICAgICAgIyBkZWJ1ZyBsb2cKICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICRTZWxmLT57QUNMRGVidWdMb2dQcmlvcml0eX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgVXNlZCB3aXRoIFBvc3NpYmxlOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBSZXNldCByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfScnIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcG9zc2libGUgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKCiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICROZXcgKCBAeyAkU3RlcHtQb3NzaWJsZX0tPntDb25maWdJdGVtfS0+eyAkUGFyYW17UmV0dXJuU3ViVHlwZX0gfSB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2hSZXN1bHQgPSAkU2VsZi0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICAgICA9PiAkTmV3LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YSAgICAgICA9PiAkRGF0YXskSUR9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU2luZ2xlSXRlbSA9PiAxCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE1hdGNoUmVzdWx0LT57TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1RtcERhdGF7JElEfSA9ICREYXRheyRJRH07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlIHBhcmFtICckRGF0YXskSUR9JyBhZGRlZCB0byByZXR1cm4gZGF0YTonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFBvc3NpYmxlIHBhcmFtICckRGF0YXskSUR9JyBza2lwcGVkIGZyb20gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIFN0ZXAgQ29uZmlnSXRlbSBQb3NzaWJsZUFkZCAoQWRkIG5ldyBvcHRpb25zIHRvIHRoZSB3aGl0ZSBsaXN0KQogICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAoICVDaGVja3MgfHwgJUNoZWNrc0RhdGFiYXNlICkKICAgICAgICAgICAgICAgICYmICRNYXRjaAogICAgICAgICAgICAgICAgJiYgJE1hdGNoVHJ5CiAgICAgICAgICAgICAgICAmJiAkU3RlcHtQb3NzaWJsZUFkZH0tPntDb25maWdJdGVtfS0+eyAkUGFyYW17UmV0dXJuU3ViVHlwZX0gfQogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkVXNlTmV3UGFyYW1zID0gMTsKCiAgICAgICAgICAgICAgICAjIGRlYnVnIGxvZwogICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBVc2VkIHdpdGggUG9zc2libGVBZGQ6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgcG9zc2libGUgYWRkIGxpc3QKICAgICAgICAgICAgICAgIGZvciBteSAkSUQgKCBzb3J0IGtleXMgJURhdGEgKSB7CgogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGVBZGR9LT57Q29uZmlnSXRlbX0tPnsgJFBhcmFte1JldHVyblN1YlR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJE1hdGNoUmVzdWx0ID0gJFNlbGYtPl9Db21wYXJlTWF0Y2hXaXRoRGF0YSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hdGNoICAgICAgPT4gJE5ldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGEgICAgICAgPT4gJERhdGF7JElEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNpbmdsZUl0ZW0gPT4gMQogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRNYXRjaFJlc3VsdC0+e01hdGNofSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdUbXBEYXRheyRJRH0gPSAkRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZUFkZCBwYXJhbSAnJERhdGF7JElEfScgYWRkZWQgdG8gcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2VsZi0+e0FDTERlYnVnfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZUFkZCBwYXJhbSAnJERhdGF7JElEfScgc2tpcHBlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBTdGVwIENvbmZpZ0l0ZW0gUG9zc2libGVOb3QgKHJlbW92ZXMgb3B0aW9ucyBmcm9tIHdoaXRlIGxpc3QpCiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICggJUNoZWNrcyB8fCAlQ2hlY2tzRGF0YWJhc2UgKQogICAgICAgICAgICAgICAgJiYgJE1hdGNoCiAgICAgICAgICAgICAgICAmJiAkTWF0Y2hUcnkKICAgICAgICAgICAgICAgICYmICRTdGVwe1Bvc3NpYmxlTm90fS0+e0NvbmZpZ0l0ZW19LT57ICRQYXJhbXtSZXR1cm5TdWJUeXBlfSB9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRVc2VOZXdQYXJhbXMgPSAxOwoKICAgICAgICAgICAgICAgICMgZGVidWcgbG9nCiAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1BQ0wgJyRBY2wnIFVzZWQgd2l0aCBQb3NzaWJsZU5vdDonJFBhcmFte1JldHVyblR5cGV9OiRQYXJhbXtSZXR1cm5TdWJUeXBlfSciLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBub3QgcG9zc2libGUgbGlzdAogICAgICAgICAgICAgICAgZm9yIG15ICRJRCAoIHNvcnQga2V5cyAlRGF0YSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkTWF0Y2ggPSAxOwogICAgICAgICAgICAgICAgICAgIGZvciBteSAkTmV3ICggQHsgJFN0ZXB7UG9zc2libGVOb3R9LT57Q29uZmlnSXRlbX0tPnsgJFBhcmFte1JldHVyblN1YlR5cGV9IH0gfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJExvb3BNYXRjaFJlc3VsdCA9ICRTZWxmLT5fQ29tcGFyZU1hdGNoV2l0aERhdGEoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRjaCAgICAgID0+ICROZXcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEYXRhICAgICAgID0+ICREYXRheyRJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaW5nbGVJdGVtID0+IDEKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCAkTG9vcE1hdGNoUmVzdWx0LT57TWF0Y2h9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE1hdGNoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoICEkTWF0Y2ggKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJFNlbGYtPntBQ0xEZWJ1Z30gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAkU2VsZi0+e0FDTERlYnVnTG9nUHJpb3JpdHl9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDb25maWdJdGVtQUNMICckQWNsJyBQb3NzaWJsZU5vdCBwYXJhbSAnJERhdGF7JElEfScgcmVtb3ZlZCBmcm9tIHJldHVybiBkYXRhOickUGFyYW17UmV0dXJuVHlwZX06JFBhcmFte1JldHVyblN1YlR5cGV9JyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICggJE5ld1RtcERhdGF7JElEfSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSAkTmV3VG1wRGF0YXskSUR9OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICRTZWxmLT57QUNMRGVidWd9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJFNlbGYtPntBQ0xEZWJ1Z0xvZ1ByaW9yaXR5fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29uZmlnSXRlbUFDTCAnJEFjbCcgUG9zc2libGVOb3QgcGFyYW0gJyREYXRheyRJRH0nIGxlYXZlZCBmb3IgcmV0dXJuIGRhdGE6JyRQYXJhbXtSZXR1cm5UeXBlfTokUGFyYW17UmV0dXJuU3ViVHlwZX0nIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgcmVtZW1iZXIgdG8gbmV3IHBhcmFtcyBpZiBnaXZlbgogICAgICAgIGlmICgkVXNlTmV3UGFyYW1zKSB7CiAgICAgICAgICAgICVOZXdEYXRhICAgICAgICAgICAgPSAlTmV3VG1wRGF0YTsKICAgICAgICAgICAgJFVzZU5ld01hc3RlclBhcmFtcyA9IDE7CiAgICAgICAgfQoKICAgICAgICAjIHJldHVybiBuZXcgcGFyYW1zIGlmIHN0b3AgYWZ0ZXIgdGhpcyBzdGVwCiAgICAgICAgaWYgKCAkVXNlTmV3UGFyYW1zICYmICRTdGVwe1N0b3BBZnRlck1hdGNofSApIHsKICAgICAgICAgICAgJFNlbGYtPntDb25maWdJdGVtQWNsRGF0YX0gPSBcJU5ld0RhdGE7CgogICAgICAgICAgICAjIGlmIHdlIHN0b3AgYWZ0ZXIgdGhlIGZpcnN0IG1hdGNoCiAgICAgICAgICAgICMgZXhpdCB0aGUgQUNMUlVMRVMgbG9vcAogICAgICAgICAgICBsYXN0IEFDTFJVTEVTOwogICAgICAgIH0KICAgIH0KCiAgICAjIHJldHVybiBpZiBubyBuZXcgcGFyYW0gZXhpc3RzCiAgICByZXR1cm4gaWYgISRVc2VOZXdNYXN0ZXJQYXJhbXM7CgogICAgJFNlbGYtPntDb25maWdJdGVtQWNsRGF0YX0gPSBcJU5ld0RhdGE7CgogICAgcmV0dXJuIDE7Cn0KCj1oZWFkMiBDb25maWdJdGVtQWNsRGF0YSgpCgpyZXR1cm4gdGhlIGN1cnJlbnQgQUNMIGRhdGEgaGFzaCBhZnRlciBDb25maWdJdGVtQWNsKCkKCiAgICBteSAlQWNsID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xEYXRhKCk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUFjbERhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICByZXR1cm4gJXsgJFNlbGYtPntDb25maWdJdGVtQWNsRGF0YX0gfHwge30gfTsKfQoKPWhlYWQyIENvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhKCkKCnJldHVybiB0aGUgY3VycmVudCBBQ0wgYWN0aW9uIGRhdGEgaGFzaCBhZnRlciBDb25maWdJdGVtQWNsKCkKCiAgICBteSAlQWNsQWN0aW9uID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1BY2xBY3Rpb25EYXRhKCk7Cgo9Y3V0CgpzdWIgQ29uZmlnSXRlbUFjbEFjdGlvbkRhdGEgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBpZiAoICRTZWxmLT57Q29uZmlnSXRlbUFjbERhdGF9ICkgewogICAgICAgIHJldHVybiAleyAkU2VsZi0+e0NvbmZpZ0l0ZW1BY2xEYXRhfSB9OwogICAgfQogICAgcmV0dXJuICV7ICRTZWxmLT57RGVmYXVsdENvbmZpZ0l0ZW1BY3Rpb25EYXRhfSB8fCB7fSB9Owp9Cgo9YmVnaW4gSW50ZXJuYWw6Cgo9Y3V0Cgo9aGVhZDIgX0dldENoZWNrcygpCgpjcmVhdGVzIHR3byBjaGVjayBoYXNoZXMgKG9uZSBmb3IgY3VycmVudCBkYXRhIHVwZGF0YWJsZSB2aWEgQUpBWCByZWZyZXNoZXMgYW5kIGFub3RoZXIgZm9yCnN0YXRpYyBjb25maWcgaXRlbSBkYXRhIHN0b3JlZCBpbiB0aGUgREIpIHdpdGggdGhlIHJlcXVpcmVkIGRhdGEgdG8gdXNlIGFzIGEgYmFzaXMgdG8gbWF0Y2ggdGhlIEFDTHMKCiAgICBteSAkQ2hlY3NrUmVzdWx0ID0gJENvbmZpZ0l0ZW1PYmplY3QtPl9HZXRDaGVja3MoCiAgICAgICAgQ2hlY2tBbGwgPT4gJzEnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICBSZXF1aXJlZENoZWNrcyA9PiAkUmVxdWlyZWRDaGVja0hhc2hSZWYsICAgICAgIyBPcHRpb25hbCBhIGhhc2ggcmVmZXJlbmNlIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgYXR0cmlidXRlcyB0byBnYXRoZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgZS4gZy4gVXNlciA9PiAxLCB3aWxsIGZldGNoIGFsbCB1c2VyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgaW5mb3JtYXRpb24gZnJvbSB0aGUgZGF0YWJhc2UsIHRoaXMgZGF0YQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICAgIHdpbGwgYmUgdHJpZWQgdG8gbWF0Y2ggd2l0aCBjdXJyZW50IEFDTHMKICAgICAgICBBY3Rpb24gICAgICAgID0+ICdBZ2VudElUU01Db25maWdJdGVtWm9vbScsICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgQ29uZmlnSXRlbUlEICAgICAgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsCiAgICAgICAgRHluYW1pY0ZpZWxkICA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+IDEyMywKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVaID0+ICdzb21lIHZhbHVlJywKICAgICAgICB9LAoKICAgICAgICBSZXNwb25zaWJsZUlEICAgID0+IDEyMywgICAgICAgICAgICAgICAgICAgICAgIyBPcHRpb25hbAogICAgICAgIE5ld1Jlc3BvbnNpYmxlSUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAjIE9wdGlvbmFsLCBSZXNwb25zaWJsZUlEIG9yIE5ld1Jlc3BvbnNpYmxlSUQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIGNhbiBiZSB1c2VkIGFuZCB0aGV5IGJvdGggcmVmZXJzIHRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICAgIFJlc3BvbnNpYmxlSUQKICAgICAgICBSZXNwb25zaWJsZSAgICAgID0+ICdzb21lIHVzZXIgbG9naW4nICAgICAgICAgIyBPcHRpb25hbAoKICAgICAgICBVc2VySUQgICAgICAgICA9PiAxMjMsICAgICAgICAgICAgICAgICAgICAgICAgIyBVc2VySUQgPT4gMSBpcyBub3QgYWZmZWN0ZWQgYnkgdGhpcyBmdW5jdGlvbgogICAgKTsKCnJldHVybnM6CiAgICAkQ2hlY2tzUmVzdWx0ID0gewogICAgICAgIENoZWNrcyA9PiB7CiAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIENvbmZpZ0l0ZW0gPT4gewogICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEID0+IDEyMywKICAgICAgICAgICAgICAgICMgLi4uCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgICMgLi4uCiAgICAgICAgfSwKICAgICAgICBDaGVja3NEYXRhYmFzZSA9PgogICAgICAgICAgICAjIC4uLgogICAgICAgICAgICBDb25maWdJdGVtID0+IHsKICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgICAgICAgICAjIC4uLgogICAgICAgICAgICB9LAogICAgICAgICAgICAjIC4uLgogICAgICAgIH0sCiAgICB9OwoKPWN1dAoKc3ViIF9HZXRDaGVja3MgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2hlY2tBbGwgICAgICAgPSAkUGFyYW17Q2hlY2tBbGx9OwogICAgbXkgJVJlcXVpcmVkQ2hlY2tzID0gJXsgJFBhcmFte1JlcXVpcmVkQ2hlY2tzfSB9OwoKICAgICMgZ2V0IHVzZWQgaW50ZXJmYWNlIGZvciBwcm9jZXNzIG1hbmFnZW1lbnQgY2hlY2tzCiAgICBteSAkSW50ZXJmYWNlID0gJ0FnZW50SW50ZXJmYWNlJzsKICAgIGlmICggISRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICRJbnRlcmZhY2UgPSAnQ3VzdG9tZXJJbnRlcmZhY2UnOwogICAgfQoKICAgIG15ICVDaGVja3M7CiAgICBteSAlQ2hlY2tzRGF0YWJhc2U7CgogICAgaWYgKCAkUGFyYW17QWN0aW9ufSApIHsKICAgICAgICAkQ2hlY2tze0Zyb250ZW5kfSA9IHsKICAgICAgICAgICAgQWN0aW9uID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgIH07CiAgICAgICAgJENoZWNrc0RhdGFiYXNle0Zyb250ZW5kfSA9IHsKICAgICAgICAgICAgQWN0aW9uID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgIH07CiAgICB9CgogICAgIyBnZXQgY29uZmlnIG9iamVjdAogICAgbXkgJENvbmZpZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyk7CgogICAgIyB1c2UgY29uZmlnIGl0ZW0gZGF0YSBpZiBjb25maWcgaXRlbSBpZCBpcyBnaXZlbgogICAgIyBkbyB0aGF0IGFsd2F5cywgZXZlbiBpZiAkUmVxdWlyZWRDaGVja3N7Q29uZmlnSXRlbX0gaXMgbm90IHRoYXQKICAgICMgKGJlY2F1c2UgdG9vIG11Y2ggc3R1ZmYgZGVwZW5kcyBvbiBpdCkKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgbXkgJENvbmZpZ0l0ZW0gPSAkU2VsZi0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgKTsKICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19ID0gJENvbmZpZ0l0ZW07CgogICAgICAgICMga2VlcCBkYXRhYmFzZSBjb25maWcgaXRlbSBkYXRhIHNlcGFyYXRlZCBzaW5jZSB0aGUgcmVmZXJlbmNlIGlzIGFmZmVjdGVkIGJlbG93CiAgICAgICAgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19ID0gXCV7JENvbmZpZ0l0ZW19OwogICAgfQogICAgZWxzZSB7CiAgICAgICAgJENoZWNrc3tDb25maWdJdGVtfSA9IHsKICAgICAgICAgICAgQ2xhc3MgICA9PiAkUGFyYW17Q2xhc3N9LAogICAgICAgICAgICBDbGFzc0lEID0+ICRQYXJhbXtDbGFzc0lEfSwKICAgICAgICB9OwogICAgfQoKICAgICMgY2hlY2sgZm9yIGR5bmFtaWMgZmllbGRzCiAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkfSApICkgewogICAgICAgICRDaGVja3N7RHluYW1pY0ZpZWxkfSA9ICRQYXJhbXtEeW5hbWljRmllbGR9OwoKICAgICAgICAjIHVwZGF0ZSBvciBhZGQgZHluYW1pYyBmaWVsZHMgaW5mb3JtYXRpb24gdG8gdGhlIGNvbmZpZyBpdGVtIGNoZWNrCiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lICggc29ydCBrZXlzICV7ICRQYXJhbXtEeW5hbWljRmllbGR9IH0gKSB7CiAgICAgICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0tPnskRHluYW1pY0ZpZWxkTmFtZX0gPSAkUGFyYW17RHluYW1pY0ZpZWxkfS0+eyREeW5hbWljRmllbGROYW1lfTsKICAgICAgICB9CiAgICB9CgogICAgIyBhbHdheXMgZ2V0IGluZm8gZnJvbSBjb25maWcgaXRlbSB0b28gYW5kIHNldCBpdCB0byB0aGUgRHluYW1pYyBGaWVsZCBjaGVjayBoYXNoIGlmIHRoZSBpbmZvIGlzCiAgICAjIGRpZmZlcmVudC4gdGhpcyBjYW4gYmUgZG9uZSBiZWNhdXNlIGluIHRoZSBwcmV2aW91cyBzdGVwIGNvbmZpZyBpdGVtIGluZm8gd2FzIHVwZGF0ZWQuIGJ1dCBtYXliZQogICAgIyBjb25maWcgaXRlbSBoYXMgbW9yZSBpbmZvcm1hdGlvbiBzdG9yZWQgdGhhbiBpbiB0aGUgRHluYW1pY0ZpZWxkIHBhcmFtZXRlci4KICAgIElUU01DT05GSUdJVEVNQVRUUklCVVRFOgogICAgZm9yIG15ICRDb25maWdJdGVtQXR0cmlidXRlICggc29ydCBrZXlzICV7ICRDaGVja3N7Q29uZmlnSXRlbX0gLy8ge30gfSApIHsKICAgICAgICBuZXh0IElUU01DT05GSUdJVEVNQVRUUklCVVRFIGlmICEkQ29uZmlnSXRlbUF0dHJpYnV0ZTsKCiAgICAgICAgIyBjaGVjayBpZiBpcyBhIGR5bmFtaWMgZmllbGQgd2l0aCBkYXRhCiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAkQ29uZmlnSXRlbUF0dHJpYnV0ZSAhfiBteyBcQSBEeW5hbWljRmllbGRfIH1zbXg7CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhZGVmaW5lZCAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwogICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEUgaWYgIWxlbmd0aCAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwoKICAgICAgICBpZiAoCiAgICAgICAgICAgIHJlZiAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9IGVxICdBUlJBWScKICAgICAgICAgICAgJiYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJENoZWNrc3tDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSApCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgIG5leHQgSVRTTUNPTkZJR0lURU1BVFRSSUJVVEU7CiAgICAgICAgfQoKICAgICAgICAjIGNvbXBhcmUgaWYgZGF0YSBpcyBkaWZmZXJlbnQgYW5kIHNraXAgb24gc2FtZSBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkQ2hlY2tze0R5bmFtaWNGaWVsZH0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0KICAgICAgICAgICAgJiYgIURhdGFJc0RpZmZlcmVudCgKICAgICAgICAgICAgICAgIERhdGExID0+ICRDaGVja3N7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0sCiAgICAgICAgICAgICAgICBEYXRhMiA9PiAkQ2hlY2tze0R5bmFtaWNGaWVsZH0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX0sCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURTsKICAgICAgICB9CgogICAgICAgICRDaGVja3N7RHluYW1pY0ZpZWxkfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfSA9ICRDaGVja3N7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX07CiAgICB9CgogICAgIyBhbHNvIGNvcHkgdGhlIGRhdGFiYXNlIGluZm9ybWF0aW9uIHRvIHRoZSBhcHByb3ByaWF0ZSBoYXNoCiAgICBJVFNNQ09ORklHSVRFTUFUVFJJQlVURToKICAgIGZvciBteSAkQ29uZmlnSXRlbUF0dHJpYnV0ZSAoIHNvcnQga2V5cyAleyAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0gfSApIHsKICAgICAgICBuZXh0IElUU01DT05GSUdJVEVNQVRUUklCVVRFIGlmICEkQ29uZmlnSXRlbUF0dHJpYnV0ZTsKCiAgICAgICAgIyBjaGVjayBpZiBpcyBhIGR5bmFtaWMgZmllbGQgd2l0aCBkYXRhCiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAkQ29uZmlnSXRlbUF0dHJpYnV0ZSAhfiBteyBcQSBEeW5hbWljRmllbGRfIH1zbXg7CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhZGVmaW5lZCAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0tPnskQ29uZmlnSXRlbUF0dHJpYnV0ZX07CiAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURSBpZiAhbGVuZ3RoICRDaGVja3NEYXRhYmFzZXtDb25maWdJdGVtfS0+eyRDb25maWdJdGVtQXR0cmlidXRlfTsKCiAgICAgICAgaWYgKAogICAgICAgICAgICByZWYgJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9IGVxICdBUlJBWScKICAgICAgICAgICAgJiYgIUlzQXJyYXlSZWZXaXRoRGF0YSggJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9ICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgbmV4dCBJVFNNQ09ORklHSVRFTUFUVFJJQlVURTsKICAgICAgICB9CgogICAgICAgICRDaGVja3NEYXRhYmFzZXtEeW5hbWljRmllbGR9LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9ID0gJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57JENvbmZpZ0l0ZW1BdHRyaWJ1dGV9OwogICAgfQoKICAgICMgdXNlIHVzZXIgZGF0YQogICAgaWYgKCAoICRDaGVja0FsbCB8fCAkUmVxdWlyZWRDaGVja3N7VXNlcn0gKSAmJiAkUGFyYW17VXNlcklEfSApIHsKCiAgICAgICAgbXkgJVVzZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VXNlcicpLT5HZXRVc2VyRGF0YSgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgICMgZ2V0IGdyb3VwIG9iamVjdAogICAgICAgIG15ICRHcm91cE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHcm91cCcpOwoKICAgICAgICBmb3IgbXkgJFR5cGUgKCBAeyAkQ29uZmlnT2JqZWN0LT5HZXQoJ1N5c3RlbTo6UGVybWlzc2lvbicpIH0gKSB7CgogICAgICAgICAgICBteSAlR3JvdXBzID0gJEdyb3VwT2JqZWN0LT5QZXJtaXNzaW9uVXNlckdldCgKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgIFR5cGUgICA9PiAkVHlwZSwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIG15IEBHcm91cE5hbWVzID0gc29ydCB2YWx1ZXMgJUdyb3VwczsKCiAgICAgICAgICAgICRVc2VyeyJHcm91cF8kVHlwZSJ9ID0gXEBHcm91cE5hbWVzOwogICAgICAgIH0KCiAgICAgICAgbXkgJVJvbGVJRHMgPSAkR3JvdXBPYmplY3QtPlBlcm1pc3Npb25Vc2VyUm9sZUdldCgKICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICk7CgogICAgICAgIG15IEBSb2xlTmFtZXMgPSBzb3J0IHZhbHVlcyAlUm9sZUlEczsKCiAgICAgICAgJFVzZXJ7Um9sZX0gICAgICAgICAgID0gXEBSb2xlTmFtZXM7CiAgICAgICAgJENoZWNrc3tVc2VyfSAgICAgICAgID0gXCVVc2VyOwogICAgICAgICRDaGVja3NEYXRhYmFzZXtVc2VyfSA9IFwlVXNlcjsKICAgIH0KCiAgICAjIHVzZSB0eXBlIGRhdGEgKGlmIGdpdmVuKQogICAgaWYgKCAkQ2hlY2tBbGwgfHwgJFJlcXVpcmVkQ2hlY2tze1R5cGV9ICkgewoKICAgICAgICAjIGdldCB0eXBlIG9iamVjdAogICAgICAgIG15ICRUeXBlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKTsKCiAgICAgICAgaWYgKCAkUGFyYW17VHlwZUlEfSApIHsKICAgICAgICAgICAgbXkgJVR5cGUgPSAkVHlwZU9iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgICAgIElEICAgICA9PiAkUGFyYW17VHlwZUlEfSwKICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICApOwogICAgICAgICAgICAkQ2hlY2tze1R5cGV9ID0gXCVUeXBlOwoKICAgICAgICAgICAgIyB1cGRhdGUgb3IgYWRkIGNvbmZpZyBpdGVtIHR5cGUgaW5mb3JtYXRpb24gdG8gdGhlIGNvbmZpZyBpdGVtIGNoZWNrCiAgICAgICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0tPntUeXBlfSAgID0gJENoZWNrc3tUeXBlfS0+e05hbWV9OwogICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZUlEfSA9ICRDaGVja3N7VHlwZX0tPntJRH07CiAgICAgICAgfQogICAgICAgIGVsc2lmICggJFBhcmFte1R5cGV9ICkgewoKICAgICAgICAgICAgIyBUT0RPIEF0dGVudGlvbiEKICAgICAgICAgICAgIwogICAgICAgICAgICAjIFRoZSBwYXJhbWV0ZXIgdHlwZSBjYW4gY29udGFpbiBub3Qgb25seSB0aGUgd2FudGVkIGNvbmZpZyBpdGVtIHR5cGUsIGJlY2F1c2UgYWxzbwogICAgICAgICAgICAjIHNvbWUgb3RoZXIgZnVuY3Rpb25zIGluIEtlcm5lbC9TeXN0ZW0vSVRTTUNvbmZpZ0l0ZW0ucG0gdXNlIGEgdHlwZSBwYXJhbWV0ZXIsIGZvciBleGFtcGxlCiAgICAgICAgICAgICMgTW92ZUxpc3QoKSBldGMuLi4gVGhlc2UgZnVuY3Rpb25zIGNvdWxkIGJlIHJld3JpdHRlbiB0byBub3QKICAgICAgICAgICAgIyB1c2UgYSBUeXBlIHBhcmFtZXRlciwgb3IgdGhlIGZ1bmN0aW9ucyB0aGF0IGNhbGwgQ29uZmlnSXRlbUFjbCgpIGNvdWxkIGJlIG1vZGlmaWVkIHRvCiAgICAgICAgICAgICMgbm90IGp1c3QgcGFzcyB0aGUgY29tcGxldGUgUGFyYW0tSGFzaCwgYnV0IGluc3RlYWQgYSBuZXcgcGFyYW1ldGVyLCBsaWtlIEZyb250RW5kUGFyYW1ldGVyLgogICAgICAgICAgICAjCiAgICAgICAgICAgICMgQXMgYSB3b3JrYXJvdW5kIHdlIGxvb2t1cCB0aGUgVHlwZUxpc3QgZmlyc3QsIGFuZCBjb21wYXJlIGlmIHRoZSB0eXBlIHBhcmFtZXRlcgogICAgICAgICAgICAjIGlzIGZvdW5kIGluIHRoZSBsaXN0LCBzbyB3ZSBjYW4gYmUgbW9yZSBzdXJlIHRoYXQgaXQgaXMgdGhlIHR5cGUgdGhhdCB3ZSB3YW50IGhlcmUuCgogICAgICAgICAgICAjIGxvb2t1cCB0aGUgdHlwZSBsaXN0ICh3b3JrYXJvdW5kIGZvciBkZXNjcmliZWQgcHJvYmxlbSkKICAgICAgICAgICAgbXkgJVR5cGVMaXN0ID0gcmV2ZXJzZSAkVHlwZU9iamVjdC0+VHlwZUxpc3QoKTsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgdHlwZSBpcyBpbiB0aGUgdHlwZSBsaXN0ICh3b3JrYXJvdW5kIGZvciBkZXNjcmliZWQgcHJvYmxlbSkKICAgICAgICAgICAgaWYgKCAkVHlwZUxpc3R7ICRQYXJhbXtUeXBlfSB9ICkgewogICAgICAgICAgICAgICAgbXkgJVR5cGUgPSAkVHlwZU9iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgICAgICAgICBOYW1lICAgPT4gJFBhcmFte1R5cGV9LAogICAgICAgICAgICAgICAgICAgIFVzZXJJRCA9PiAxLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICRDaGVja3N7VHlwZX0gPSBcJVR5cGU7CgogICAgICAgICAgICAgICAgIyB1cGRhdGUgb3IgYWRkIGNvbmZpZyBpdGVtIHR5cGUgaW5mb3JtYXRpb24gdG8gdGhlIGNvbmZpZyBpdGVtIGNoZWNrCiAgICAgICAgICAgICAgICAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZX0gICA9ICRDaGVja3N7VHlwZX0tPntOYW1lfTsKICAgICAgICAgICAgICAgICRDaGVja3N7Q29uZmlnSXRlbX0tPntUeXBlSUR9ID0gJENoZWNrc3tUeXBlfS0+e0lEfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICEkUGFyYW17VHlwZUlEfSAmJiAhJFBhcmFte1R5cGV9ICkgewogICAgICAgICAgICBpZiAoIElzUG9zaXRpdmVJbnRlZ2VyKCAkQ2hlY2tze0NvbmZpZ0l0ZW19LT57VHlwZUlEfSApICkgewoKICAgICAgICAgICAgICAgICMgZ2V0IHR5cGUgZGF0YSBmcm9tIHRoZSBjb25maWcgaXRlbQogICAgICAgICAgICAgICAgbXkgJVR5cGUgPSAkVHlwZU9iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgICAgICAgICBJRCAgICAgPT4gJENoZWNrc3tDb25maWdJdGVtfS0+e1R5cGVJRH0sCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+IDEsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgJENoZWNrc3tUeXBlfSA9IFwlVHlwZTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBjcmVhdGUgaGFzaCB3aXRoIHRoZSBjb25maWcgaXRlbSBpbmZvcm1hdGlvbiBzdG9yZWQgaW4gdGhlIGRhdGFiYXNlCiAgICAgICAgaWYgKCBJc1Bvc2l0aXZlSW50ZWdlciggJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57VHlwZUlEfSApICkgewoKICAgICAgICAgICAgIyBjaGVjayBpZiBkYXRhYmFzZSBkYXRhIG1hdGNoZXMgY3VycmVudCBkYXRhIChwZXJmb3JtYW5jZSkKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgZGVmaW5lZCAkQ2hlY2tze1R5cGV9LT57SUR9CiAgICAgICAgICAgICAgICAmJiAkQ2hlY2tzRGF0YWJhc2V7Q29uZmlnSXRlbX0tPntUeXBlSUR9IGVxICRDaGVja3N7VHlwZX0tPntJRH0KICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJENoZWNrc0RhdGFiYXNle1R5cGV9ID0gJENoZWNrc3tUeXBlfTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBvdGhlcndpc2UgY29tcGxldGUgdGhlIGRhdGEgcXVlcnlpbmcgdGhlIGRhdGFiYXNlIGFnYWluCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgbXkgJVR5cGUgPSAkVHlwZU9iamVjdC0+VHlwZUdldCgKICAgICAgICAgICAgICAgICAgICBJRCAgICAgPT4gJENoZWNrc0RhdGFiYXNle0NvbmZpZ0l0ZW19LT57VHlwZUlEfSwKICAgICAgICAgICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAkQ2hlY2tzRGF0YWJhc2V7VHlwZX0gPSBcJVR5cGU7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyB3aXRoaW4gdGhpcyBmdW5jdGlvbiAlUGFyYW0gaXMgbW9kaWZpZWQgYnkgcmVwbGFjZW1lbnRzIGxpa2U6CiAgICAjICAgICRQYXJhbXtQcmlvcml0eUlEfSA9ICRQYXJhbXtOZXdQcmlvcml0eUlEfQogICAgIyAgICBhcHBhcmVudGx5IHRoaXMgY2hhbmdlcyBhcmUgbm90IGxvbmdlciBuZWVkZWQgb3V0c2lkZSB0aGlzIGZ1bmN0aW9uIGFuZCBpdCBpcyBub3QgbmVjZXNzYXJ5CiAgICAjICAgIHRvIHJldHVybiBzdWNoIHJlcGxhY2VtZW50cwoKICAgIHJldHVybiB7CiAgICAgICAgQ2hlY2tzICAgICAgICAgPT4gXCVDaGVja3MsCiAgICAgICAgQ2hlY2tzRGF0YWJhc2UgPT4gXCVDaGVja3NEYXRhYmFzZSwKICAgIH07Cn0KCj1oZWFkMiBfQ29tcGFyZU1hdGNoV2l0aERhdGEoKQoKQ29tcGFyZXMgYSBwcm9wZXJ0aWVzIGVsZW1lbnQgd2l0aCB0aGUgZGF0YSBzZW50IHRvIHRoZSBBQ0wsIHRoZSBjb21wYXJlIHJlc3VsdHMgdmFyaWVzIG9uIGhvdyB0aGUKQUNMIHByb3BlcnRpZXMgd2hlcmUgZGVmaW5lZCBpbmNsdWRpbmcgbm9ybWFsLCBuZWdhdGVkLCByZWd1bGFyIGV4cHJlc3Npb24gYW5kIG5lZ2F0ZWQgcmVndWxhcgpleHByZXNzaW9uIGNvbXBhcmlzb25zLgoKICAgIG15ICRSZXN1bHQgPSAkQ29uZmlnSXRlbU9iamVjdC0+X0NvbXBhcmVNYXRjaFdpdGhEYXRhKAogICAgICAgIE1hdGNoID0+ICdhIHZhbHVlJywgICAgICAgICAjIG9yICdbTm90XWEgdmFsdWUnLCBvciAnW1JlZ0V4cF12YWwnIG9yICdbTm90UmVnRXhwXXZhbCcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgICBvciAnW05vdHJlZ2V4cF12YWwnIG9yICdbTm90cmVnZXhwXScKICAgICAgICBEYXRhID0+ICdhIHZhbHVlJywKICAgICAgICBTaW5nbGVJdGVtID0+IDEsICAgICAgICAgICAgIyBvciAwLCBvcHRpb25hbCwgZGVmYXVsdCAwCiAgICApOwoKUmV0dXJuczoKCiAgICAkUmVzdWx0ID0gewogICAgICAgIFN1Y2Nlc3MgPT4gMSwgICAgICAgICAgICAgICAjIG9yIGZhbHNlCiAgICAgICAgTWF0Y2ggICA9PiAxLCAgICAgICAgICAgICAgICMgb3IgZmFsc2UKICAgICAgICBTa2lwICAgID0+IDEsICAgICAgICAgICAgICAgIyBvciBmYWxzZSAoaW4gY2VydGFpbiBjYXNlcyB3aGVyZSBTaW5nbGVJdGVtIGlzIHNldCkKICAgIH07Cgo9Y3V0CgpzdWIgX0NvbXBhcmVNYXRjaFdpdGhEYXRhIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhNYXRjaCBEYXRhKSkgewogICAgICAgIGlmICggIWRlZmluZWQgJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQoKICAgIG15ICRNYXRjaCA9ICRQYXJhbXtNYXRjaH07CiAgICBteSAkRGF0YSAgPSAkUGFyYW17RGF0YX07CgogICAgIyBOZWdhdGVkIG1hdGNoZXMgcmVxdWlyZXMgYSBkaWZmZXJlbnQgbG9naWMuCiAgICBpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tOb3QnICkgZXEgJ1tOb3QnICkgewoKICAgICAgICAjIE5vdCBlcXVhbCBtYXRjaAogICAgICAgIGlmICggc3Vic3RyKCAkTWF0Y2gsIDAsIGxlbmd0aCAnW05vdF0nICkgZXEgJ1tOb3RdJyApIHsKICAgICAgICAgICAgbXkgJE5vdFZhbHVlID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbTm90XSc7CiAgICAgICAgICAgIGlmICggJE5vdFZhbHVlIGVxICREYXRhICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAwLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBOb3QgcmVnLWV4cCBtYXRjaCBjYXNlLXNlbnNpdGl2ZS4KICAgICAgICBlbHNpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tOb3RSZWdFeHBdJyApIGVxICdbTm90UmVnRXhwXScgKSB7CiAgICAgICAgICAgIG15ICRSZWdFeHAgPSBzdWJzdHIgJE1hdGNoLCBsZW5ndGggJ1tOb3RSZWdFeHBdJzsKICAgICAgICAgICAgaWYgKCAkRGF0YSA9fiAvJFJlZ0V4cC8gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDAsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIE5vdCByZWctZXhwIG1hdGNoIGNhc2UtaW5zZW5zaXRpdmUuCiAgICAgICAgZWxzaWYgKCBzdWJzdHIoICRNYXRjaCwgMCwgbGVuZ3RoICdbTm90cmVnZXhwXScgKSBlcSAnW05vdHJlZ2V4cF0nICkgewogICAgICAgICAgICBteSAkUmVnRXhwID0gc3Vic3RyICRNYXRjaCwgbGVuZ3RoICdbTm90cmVnZXhwXSc7CiAgICAgICAgICAgIGlmICggJERhdGEgPX4gLyRSZWdFeHAvaSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMCwKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJFBhcmFte1NpbmdsZUl0ZW19ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAxLAogICAgICAgICAgICAgICAgU2tpcCAgICA9PiAwLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMSwKICAgICAgICAgICAgICAgIFNraXAgICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CiAgICBlbHNlIHsKCiAgICAgICAgIyBFcXVhbCBtYXRjaC4KICAgICAgICBpZiAoICRNYXRjaCBlcSAkRGF0YSApIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgIE1hdGNoICAgPT4gMSwKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgICMgUmVnLWV4cCBtYXRjaCBjYXNlLXNlbnNpdGl2ZS4KICAgICAgICBlbHNpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tSZWdFeHBdJyApIGVxICdbUmVnRXhwXScgKSB7CiAgICAgICAgICAgIG15ICRSZWdFeHAgPSBzdWJzdHIgJE1hdGNoLCBsZW5ndGggJ1tSZWdFeHBdJzsKICAgICAgICAgICAgaWYgKCAkRGF0YSA9fiAvJFJlZ0V4cC8gKSB7CiAgICAgICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIFN1Y2Nlc3MgPT4gMSwKICAgICAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDEsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIFJlZy1leHAgbWF0Y2ggY2FzZS1pbnNlbnNpdGl2ZS4KICAgICAgICBlbHNpZiAoIHN1YnN0ciggJE1hdGNoLCAwLCBsZW5ndGggJ1tyZWdleHBdJyApIGVxICdbcmVnZXhwXScgKSB7CiAgICAgICAgICAgIG15ICRSZWdFeHAgPSBzdWJzdHIgJE1hdGNoLCBsZW5ndGggJ1tyZWdleHBdJzsKICAgICAgICAgICAgaWYgKCAkRGF0YSA9fiAvJFJlZ0V4cC9pICkgewogICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAxLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKCAkUGFyYW17U2luZ2xlSXRlbX0gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzID0+IDEsCiAgICAgICAgICAgICAgICBNYXRjaCAgID0+IDAsCiAgICAgICAgICAgICAgICBTa2lwICAgID0+IDAsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyA9PiAxLAogICAgICAgICAgICAgICAgTWF0Y2ggICA9PiAwLAogICAgICAgICAgICAgICAgU2tpcCAgICA9PiAxLAogICAgICAgICAgICB9OwogICAgICAgIH0KICAgIH0KfQoKPWVuZCBJbnRlcm5hbDoKCj1jdXQKCjE7Cg==</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+ICdnY19jZGVwbC5uYW1lJywKICAgICAgICBDdXJJbmNpU3RhdGUgPT4gJ2djX2NpbmNpLm5hbWUnLAogICAgICAgIEFnZSAgICAgICAgICA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgICAgIENyZWF0ZWQgICAgICA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgICAgIENoYW5nZWQgICAgICA9PiAnY2kuY2hhbmdlX3RpbWUnLAogICAgKTsKCiAgICAjIGNoZWNrIHR5cGVzIG9mIGdpdmVuIGFyZ3VtZW50cwogICAgS0VZOgogICAgZm9yIG15ICRLZXkgKAogICAgICAgIHF3KAogICAgICAgICAgICBDb25maWdJdGVtSUQgQ2xhc3NJRHMgRGVwbFN0YXRlSURzIEN1ckRlcGxTdGF0ZUlEcyBJbmNpU3RhdGVJRHMgQ3VySW5jaVN0YXRlSURzIENyZWF0ZUJ5IENoYW5nZUJ5CiAgICAgICAgKQogICAgICAgICkKICAgIHsKICAgICAgICBuZXh0IEtFWSBpZiAhJFBhcmFteyRLZXl9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aHkgbm8gc2VhcmNoIGZvciAnMCcgPz8/CiAgICAgICAgbmV4dCBLRVkgaWYgcmVmICRQYXJhbXskS2V5fSBlcSAnQVJSQVknICYmIEB7ICRQYXJhbXskS2V5fSB9OwoKICAgICAgICAjIGxvZyBlcnJvcgogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGdpdmVuIHBhcmFtICckS2V5JyBpcyBpbnZhbGlkIG9yIGFuIGVtcHR5IGFycmF5IHJlZmVyZW5jZSEiLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGdldCBvYmplY3RzCiAgICBteSAkREJPYmplY3QgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwoKICAgICMgcXVvdGUgaWQgYXJyYXkgZWxlbWVudHMKICAgIEFSR1VNRU5UOgogICAgZm9yIG15ICRLZXkgKAogICAgICAgIHF3KAogICAgICAgICAgICBDbGFzc0lEcyBEZXBsU3RhdGVJRHMgQ3VyRGVwbFN0YXRlSURzIEluY2lTdGF0ZUlEcyBDdXJJbmNpU3RhdGVJRHMgQ3JlYXRlQnkgQ2hhbmdlQnkKICAgICAgICApCiAgICAgICAgKQogICAgewogICAgICAgIG5leHQgQVJHVU1FTlQgaWYgISRQYXJhbXskS2V5fTsKCiAgICAgICAgIyBxdW90ZSBlbGVtZW50cwogICAgICAgIGZvciBteSAkRWxlbWVudCAoIEB7ICRQYXJhbXskS2V5fSB9ICkgewogICAgICAgICAgICBpZiAoICFkZWZpbmVkICREQk9iamVjdC0+UXVvdGUoICRFbGVtZW50LCAnSW50ZWdlcicgKSApIHsKCiAgICAgICAgICAgICAgICAjIGxvZyBlcnJvcgogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiVGhlIGdpdmVuIHBhcmFtICckRWxlbWVudCcgaW4gJyRLZXknIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBjaGVjayBzb3J0L29yZGVyIGJ5IG9wdGlvbnMKICAgIG15IEBTb3J0QnlBcnJheSAgPSByZWYgJFNvcnRCeSBlcSAnQVJSQVknICA/ICRTb3J0QnktPkAqICA6ICRTb3J0Qnk7CiAgICBteSBAT3JkZXJCeUFycmF5ID0gcmVmICRPcmRlckJ5IGVxICdBUlJBWScgPyAkT3JkZXJCeS0+QCogOiAkT3JkZXJCeTsKCiAgICBmb3IgbXkgJENvdW50ICggMCAuLiAkI1NvcnRCeUFycmF5ICkgewogICAgICAgIGlmICgKICAgICAgICAgICAgISRTb3J0T3B0aW9uc3sgJFNvcnRCeUFycmF5WyRDb3VudF0gfQogICAgICAgICAgICAmJiAkU29ydEJ5QXJyYXlbJENvdW50XSAhfiAvXkR5bmFtaWNGaWVsZF8vCiAgICAgICAgICAgICkKICAgICAgICB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIHZhbGlkIFNvcnRCeSAoJyAuICRTb3J0QnlBcnJheVskQ291bnRdIC4gJykhJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgVE9ETzogZmFsbCBiYWNrIHRvIGEgZGVmYXVsdCBvZiAnVXAnCiAgICAgICAgaWYgKCAkT3JkZXJCeUFycmF5WyRDb3VudF0gbmUgJ0Rvd24nICYmICRPcmRlckJ5QXJyYXlbJENvdW50XSBuZSAnVXAnICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCB2YWxpZCBPcmRlckJ5ICgnIC4gJE9yZGVyQnlBcnJheVskQ291bnRdIC4gJykhJywKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBjcmVhdGUgc3FsCiAgICBteSAkU1FMU2VsZWN0OwoKICAgICMgVE9ETzogYWRkIHZlcnNpb24gc2VhcmNoCiAgICBpZiAoICRSZXN1bHQgZXEgJ0NPVU5UJyApIHsKICAgICAgICAkU1FMU2VsZWN0ID0gJ1NFTEVDVCBDT1VOVChESVNUSU5DVChjaS5pZCkpJzsKICAgIH0KICAgIGVsc2UgewogICAgICAgICRTUUxTZWxlY3QgPSAnU0VMRUNUIERJU1RJTkNUIGNpLmlkLCBjaS5jb25maWdpdGVtX251bWJlcic7CiAgICB9CgogICAgbXkgJFNRTEZyb20gPSAnIEZST00gY29uZmlnaXRlbSBjaSc7CgogICAgIyBjaGVjayBmb3IgbmVlZGVkIHZlcnNpb24gc2VhcmNoIGluZGV4IHRhYmxlIGpvaW4KICAgIG15ICRWZXJzaW9uVGFibGVKb2luZWQ7CiAgICBpZiAoICRTZWxmLT5fVmVyc2lvblNlYXJjaEluZGV4U1FMSm9pbk5lZWRlZCggU2VhcmNoUGFyYW1zID0+IFwlUGFyYW0gKSApIHsKICAgICAgICAkU1FMRnJvbSAuPSAnIElOTkVSIEpPSU4gY29uZmlnaXRlbV92ZXJzaW9uIHYgT04gY2kubGFzdF92ZXJzaW9uX2lkID0gdi5pZCc7CiAgICAgICAgJFZlcnNpb25UYWJsZUpvaW5lZCA9IDE7CiAgICB9CgogICAgbXkgJFNRTEV4dCA9ICcgV0hFUkUgMSA9IDEnOwoKICAgICMgTGltaXQgdGhlIHNlYXJjaCB0byBqdXN0IG9uZSAob3IgYSBsaXN0KSBDb25maWdJdGVtSUQKICAgIGlmICggSXNTdHJpbmdXaXRoRGF0YSggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB8fCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtDb25maWdJdGVtSUR9ICkgKSB7CgogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAnY2kuaWQnLAogICAgICAgICAgICBWYWx1ZXMgICAgPT4gcmVmICRQYXJhbXtDb25maWdJdGVtSUR9IGVxICdBUlJBWScgPyAkUGFyYW17Q29uZmlnSXRlbUlEfSA6IFsgJFBhcmFte0NvbmZpZ0l0ZW1JRH0gXSwKICAgICAgICAgICAgUXVvdGVUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICAgICAgQmluZE1vZGUgID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkU1FMRXh0IC49ICcgQU5EICggJyAuICRTUUxRdWVyeUluQ29uZGl0aW9uIC4gJyApICc7CiAgICB9CgogICAgIyBsb29rdXAgY2xhc3NlcwogICAgaWYgKCAkUGFyYW17Q2xhc3Nlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlQ2xhc3NMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICApIC8vIHt9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIG15ICRDbGFzcyAoIEB7ICRQYXJhbXtDbGFzc2VzfSB9ICkgewoKICAgICAgICAgICAgaWYgKCAhJENsYXNzTG9va3VweyRDbGFzc30gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBJRCBmb3IgJENsYXNzIGZvdW5kISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17Q2xhc3NJRHN9IH0sICRDbGFzc0xvb2t1cHskQ2xhc3N9OwogICAgICAgIH0KICAgIH0KCiAgICAjIHBlcm1pc3Npb25zIGFyZSBoYW5kbGVkIHZpYSBjbGFzc2VzCiAgICBpZiAoICRQYXJhbXtVc2VySUR9ICYmICRQYXJhbXtVc2VySUR9ICE9IDEgKSB7CgogICAgICAgIG15IEBDbGFzc0lEcyA9ICRQYXJhbXtDbGFzc0lEc30gPyAkUGFyYW17Q2xhc3NJRHN9LT5AKiA6CiAgICAgICAgICAgIGtleXMgJXsKICAgICAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICAgICAgICAgICkgLy8ge30KICAgICAgICAgICAgfTsKCiAgICAgICAgbXkgQEFsbG93ZWRDbGFzc0lEczsKCiAgICAgICAgZm9yIG15ICRDbGFzc0lEIChAQ2xhc3NJRHMpIHsKICAgICAgICAgICAgbXkgJEhhc0FjY2VzcyA9ICRTZWxmLT5QZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgU2NvcGUgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICAgICAgICAgIFVzZXJJRCAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICBUeXBlICAgID0+ICRQYXJhbXtQZXJtaXNzaW9ufSAvLyAncm8nLAogICAgICAgICAgICApOwoKICAgICAgICAgICAgaWYgKCRIYXNBY2Nlc3MpIHsKICAgICAgICAgICAgICAgIHB1c2ggQEFsbG93ZWRDbGFzc0lEcywgJENsYXNzSUQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBpZiAhQEFsbG93ZWRDbGFzc0lEczsKCiAgICAgICAgJFBhcmFte0NsYXNzSURzfSA9IFxAQWxsb3dlZENsYXNzSURzOwogICAgfQoKICAgICMgY2xhc3MgaWRzCiAgICBpZiAoICRQYXJhbXtDbGFzc0lEc30gKSB7CiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdjaS5jbGFzc19pZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICA9PiAkUGFyYW17Q2xhc3NJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBkZXBsb3ltZW50IHN0YXRlcwogICAgaWYgKCAkUGFyYW17RGVwbFN0YXRlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlRGVwbFN0YXRlTG9va3VwID0gcmV2ZXJzZSAlewogICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScsCiAgICAgICAgICAgICkgLy8ge30KICAgICAgICB9OwoKICAgICAgICBmb3IgbXkgJERlcGxTdGF0ZSAoIEB7ICRQYXJhbXtEZXBsU3RhdGVzfSB9ICkgewoKICAgICAgICAgICAgaWYgKCAhJERlcGxTdGF0ZUxvb2t1cHskRGVwbFN0YXRlfSApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5vIElEIGZvciAkRGVwbFN0YXRlIGZvdW5kISIsCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcHVzaCBAeyAkUGFyYW17RGVwbFN0YXRlSURzfSB9LCAkRGVwbFN0YXRlTG9va3VweyREZXBsU3RhdGV9OwogICAgICAgIH0KICAgIH0KCiAgICAjIGRlcGxveW1lbnQgc3RhdGUgaWRzCiAgICBpZiAoICRQYXJhbXtEZXBsU3RhdGVJRHN9ICkgewogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAndi5kZXBsX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtEZXBsU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBjdXJyZW50IGRlcGxveW1lbnQgc3RhdGVzCiAgICBpZiAoICRQYXJhbXtDdXJEZXBsU3RhdGVzfSApIHsKCiAgICAgICAgIyBnZXQgY2xhc3MgbGlzdAogICAgICAgIG15ICVDdXJEZXBsU3RhdGVMb29rdXAgPSByZXZlcnNlICV7CiAgICAgICAgICAgICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6RGVwbG95bWVudFN0YXRlJywKICAgICAgICAgICAgKSAvLyB7fQogICAgICAgIH07CgogICAgICAgIGZvciBteSAkQ3VyRGVwbFN0YXRlICggQHsgJFBhcmFte0N1ckRlcGxTdGF0ZXN9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkQ3VyRGVwbFN0YXRlTG9va3VweyRDdXJEZXBsU3RhdGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gSUQgZm9yICRDdXJEZXBsU3RhdGUgZm91bmQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtDdXJEZXBsU3RhdGVJRHN9IH0sICRDdXJEZXBsU3RhdGVMb29rdXB7JEN1ckRlcGxTdGF0ZX07CiAgICAgICAgfQogICAgfQoKICAgICMgY3VycmVudCBkZXBsb3ltZW50IHN0YXRlIGlkcwogICAgaWYgKCAkUGFyYW17Q3VyRGVwbFN0YXRlSURzfSApIHsKICAgICAgICBteSAkU1FMUXVlcnlJbkNvbmRpdGlvbiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5RdWVyeUluQ29uZGl0aW9uKAogICAgICAgICAgICBLZXkgICAgICAgPT4gJ2NpLmN1cl9kZXBsX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtDdXJEZXBsU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBpbmNpZGVudCBzdGF0ZXMKICAgIGlmICggJFBhcmFte0luY2lTdGF0ZXN9ICkgewoKICAgICAgICAjIGdldCBjbGFzcyBsaXN0CiAgICAgICAgbXkgJUluY2lTdGF0ZUxvb2t1cCA9IHJldmVyc2UgJXsKICAgICAgICAgICAgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCgKICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb3JlOjpJbmNpZGVudFN0YXRlJywKICAgICAgICAgICAgKSAvLyB7fQogICAgICAgIH07CgogICAgICAgIGZvciBteSAkSW5jaVN0YXRlICggQHsgJFBhcmFte0luY2lTdGF0ZXN9IH0gKSB7CgogICAgICAgICAgICBpZiAoICEkSW5jaVN0YXRlTG9va3VweyRJbmNpU3RhdGV9ICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTm8gSUQgZm9yICRJbmNpU3RhdGUgZm91bmQhIiwKICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwdXNoIEB7ICRQYXJhbXtJbmNpU3RhdGVJRHN9IH0sICRJbmNpU3RhdGVMb29rdXB7JEluY2lTdGF0ZX07CiAgICAgICAgfQogICAgfQoKICAgICMgaW5jaWRlbnQgc3RhdGUgaWRzCiAgICBpZiAoICRQYXJhbXtJbmNpU3RhdGVJRHN9ICkgewogICAgICAgIG15ICRTUUxRdWVyeUluQ29uZGl0aW9uID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkRCJyktPlF1ZXJ5SW5Db25kaXRpb24oCiAgICAgICAgICAgIEtleSAgICAgICA9PiAndi5pbmNpX3N0YXRlX2lkJywKICAgICAgICAgICAgVmFsdWVzICAgID0+ICRQYXJhbXtJbmNpU3RhdGVJRHN9LAogICAgICAgICAgICBRdW90ZVR5cGUgPT4gJ0ludGVnZXInLAogICAgICAgICAgICBCaW5kTW9kZSAgPT4gMCwKICAgICAgICApOwogICAgICAgICRTUUxFeHQgLj0gJyBBTkQgKCAnIC4gJFNRTFF1ZXJ5SW5Db25kaXRpb24gLiAnICkgJzsKICAgIH0KCiAgICAjIGxvb2t1cCBjdXJyZW50IGluY2lkZW50IHN0YXRlcwogICAgaWYgKCAkUGFyYW17Q3VySW5jaVN0YXRlc30gKSB7CgogICAgICAgICMgZ2V0IGNsYXNzIGxpc3QKICAgICAgICBteSAlQ3VySW5jaVN0YXRlTG9va3VwID0gcmV2ZXJzZSAlewogICAgICAgICAgICAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvcmU6OkluY2lkZW50U3RhdGUnLAogICAgICAgICAgICApIC8vIHt9CiAgICAgICAgfTsKCiAgICAgICAgZm9yIG15ICRDdXJJbmNpU3RhdGUgKCBAeyAkUGFyYW17Q3VySW5jaVN0YXRlc30gfSApIHsKCiAgICAgICAgICAgIGlmICggISRDdXJJbmNpU3RhdGVMb29rdXB7JEN1ckluY2lTdGF0ZX0gKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJObyBJRCBmb3IgJEN1ckluY2lTdGF0ZSBmb3VuZCEiLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHB1c2ggQHsgJFBhcmFte0N1ckluY2lTdGF0ZUlEc30gfSwgJEN1ckluY2lTdGF0ZUxvb2t1cHskQ3VySW5jaVN0YXRlfTsKICAgICAgICB9CiAgICB9CgogICAgIyBpbmNpZGVudCBzdGF0ZSBpZHMKICAgIGlmICggJFBhcmFte0N1ckluY2lTdGF0ZUlEc30gKSB7CiAgICAgICAgbXkgJFNRTFF1ZXJ5SW5Db25kaXRpb24gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKS0+UXVlcnlJbkNvbmRpdGlvbigKICAgICAgICAgICAgS2V5ICAgICAgID0+ICdjaS5jdXJfaW5jaV9zdGF0ZV9pZCcsCiAgICAgICAgICAgIFZhbHVlcyAgICA9PiAkUGFyYW17Q3VySW5jaVN0YXRlSURzfSwKICAgICAgICAgICAgUXVvdGVUeXBlID0+ICdJbnRlZ2VyJywKICAgICAgICAgICAgQmluZE1vZGUgID0+IDAsCiAgICAgICAgKTsKICAgICAgICAkU1FMRXh0IC49ICcgQU5EICggJyAuICRTUUxRdWVyeUluQ29uZGl0aW9uIC4gJyApICc7CiAgICB9CgogICAgIyBvdGhlciBjb25maWcgaXRlbSBzdHVmZgogICAgbXkgJUZpZWxkU1FMTWFwID0gKAogICAgICAgIE51bWJlciAgID0+ICdjaS5jb25maWdpdGVtX251bWJlcicsCiAgICAgICAgTmFtZSAgICAgPT4gJ3YubmFtZScsCiAgICAgICAgQ3JlYXRlQnkgPT4gJ2NpLmNyZWF0ZV9ieScsCiAgICAgICAgQ2hhbmdlQnkgPT4gJ2NpLmNoYW5nZV9ieScsCiAgICApOwoKICAgIEFUVFJJQlVURToKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVGaWVsZFNRTE1hcCApIHsKICAgICAgICBuZXh0IEFUVFJJQlVURSBpZiAhZGVmaW5lZCAkUGFyYW17JEtleX07CgogICAgICAgICMgaWYgaXQncyBubyByZWYsIHB1dCBpdCB0byBhcnJheSByZWYKICAgICAgICBpZiAoIHJlZiAkUGFyYW17JEtleX0gZXEgJycgKSB7CiAgICAgICAgICAgICRQYXJhbXskS2V5fSA9IFsgJFBhcmFteyRLZXl9IF07CiAgICAgICAgfQoKICAgICAgICAjIHByb2NjZXNzIGFycmF5IHJlZgogICAgICAgIG15ICRVc2VkID0gMDsKCiAgICAgICAgVkFMVUU6CiAgICAgICAgZm9yIG15ICRWYWx1ZSAoIEB7ICRQYXJhbXskS2V5fSB9ICkgewogICAgICAgICAgICBuZXh0IFZBTFVFIGlmICFkZWZpbmVkICRWYWx1ZSB8fCAhbGVuZ3RoICRWYWx1ZTsKCiAgICAgICAgICAgICRWYWx1ZSA9fiBzL1wqLyUvZ2k7CgogICAgICAgICAgICAjIGNoZWNrIHNlYXJjaCBhdHRyaWJ1dGUsIHdlIGRvIG5vdCBuZWVkIHRvIHNlYXJjaCBmb3IgKgogICAgICAgICAgICBuZXh0IFZBTFVFIGlmICRWYWx1ZSA9fiAvXlwlezEsM30kLzsKCiAgICAgICAgICAgIGlmICggISRVc2VkICkgewogICAgICAgICAgICAgICAgJFNRTEV4dCAuPSAnIEFORCAoJzsKICAgICAgICAgICAgICAgICRVc2VkID0gMTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJyBPUiAnOwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoJFF1ZXJ5Q29uZGl0aW9uKSB7CgogICAgICAgICAgICAgICAgIyB1c2Ugc2VhcmNoIGNvbmRpdGlvbiBleHRlbnNpb24KICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJERCT2JqZWN0LT5RdWVyeUNvbmRpdGlvbigKICAgICAgICAgICAgICAgICAgICBLZXkgICA9PiAkRmllbGRTUUxNYXB7JEtleX0sCiAgICAgICAgICAgICAgICAgICAgVmFsdWUgPT4gJFZhbHVlLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJEZpZWxkU1FMTWFweyRLZXl9IC4gIiA9ICciIC4gJERCT2JqZWN0LT5RdW90ZSgkVmFsdWUpIC4gIiciOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJFVzZWQpIHsKICAgICAgICAgICAgJFNRTEV4dCAuPSAnKSc7CiAgICAgICAgfQogICAgfQoKICAgICMgUmVtZW1iZXIgYWxyZWFkeSBqb2luZWQgdGFibGVzIGZvciBzb3J0aW5nLgogICAgbXkgJUR5bmFtaWNGaWVsZEpvaW5UYWJsZXM7CiAgICBteSAkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIgPSAxOwoKICAgICMgZ2V0IGR5bmFtaWMgZmllbGQgb2JqZWN0cwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKCiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJFBhcmFtTmFtZSAoIGtleXMgJVBhcmFtICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkUGFyYW1OYW1lID1+IG0vXkR5bmFtaWNGaWVsZF8oLispLzsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZCA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgTmFtZSA9PiAkMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkLT4lKiApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnRXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gcXFbTm8gc3VjaCBkeW5hbWljIGZpZWxkICIkMSIgKG9yIGl0IGlzIGluYWN0aXZlKV0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICBteSAkU2VhcmNoUGFyYW0gPSBkZWxldGUgJFBhcmFteyJEeW5hbWljRmllbGRfJER5bmFtaWNGaWVsZC0+e05hbWV9In07CgogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkU2VhcmNoUGFyYW07CiAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIHJlZiAkU2VhcmNoUGFyYW0gZXEgJ0hBU0gnOwoKICAgICAgICBteSAkTmVlZEpvaW47CiAgICAgICAgbXkgJFF1ZXJ5Rm9yRW1wdHlWYWx1ZXMgPSAwOwoKICAgICAgICBmb3IgbXkgJE9wZXJhdG9yICggc29ydCBrZXlzICRTZWFyY2hQYXJhbS0+JSogKSB7CgogICAgICAgICAgICBteSBAU2VhcmNoUGFyYW1zID0gKCByZWYgJFNlYXJjaFBhcmFtLT57JE9wZXJhdG9yfSBlcSAnQVJSQVknICkKICAgICAgICAgICAgICAgID8gQHsgJFNlYXJjaFBhcmFtLT57JE9wZXJhdG9yfSB9CiAgICAgICAgICAgICAgICA6ICggJFNlYXJjaFBhcmFtLT57JE9wZXJhdG9yfSApOwoKICAgICAgICAgICAgbXkgJFNRTEV4dFN1YiA9ICcgQU5EICgnOwogICAgICAgICAgICBteSAkQ291bnRlciAgID0gMDsKICAgICAgICAgICAgVEVYVDoKICAgICAgICAgICAgZm9yIG15ICRUZXh0IChAU2VhcmNoUGFyYW1zKSB7CiAgICAgICAgICAgICAgICBuZXh0IFRFWFQgdW5sZXNzIGRlZmluZWQgJFRleHQ7CiAgICAgICAgICAgICAgICBuZXh0IFRFWFQgaWYgJFRleHQgZXEgJyc7CgogICAgICAgICAgICAgICAgJFRleHQgPX4gcy9cKi8lL2dpOwoKICAgICAgICAgICAgICAgICMgY2hlY2sgc2VhcmNoIGF0dHJpYnV0ZSwgd2UgZG8gbm90IG5lZWQgdG8gc2VhcmNoIGZvciAqCiAgICAgICAgICAgICAgICBuZXh0IFRFWFQgaWYgJFRleHQgPX4gL15cJXsxLDN9JC87CgogICAgICAgICAgICAgICAgIyBza2lwIHZhbGlkYXRpb24gZm9yIGVtcHR5IHZhbHVlcwogICAgICAgICAgICAgICAgaWYgKCAkT3BlcmF0b3IgbmUgJ0VtcHR5JyApIHsKCiAgICAgICAgICAgICAgICAgICAgIyB2YWxpZGF0ZSBkYXRhIHR5cGUKICAgICAgICAgICAgICAgICAgICBteSAkVmFsaWRhdGVTdWNjZXNzID0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlZhbHVlVmFsaWRhdGUoCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gJFRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vVmFsaWRhdGVSZWdleCAgICA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0gfHwgMSwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgIGlmICggISRWYWxpZGF0ZVN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNlYXJjaCBub3QgZXhlY3V0ZWQgZHVlIHRvIGludmFsaWQgdmFsdWUgJyIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuICRUZXh0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiJyBvbiBmaWVsZCAnIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gJER5bmFtaWNGaWVsZC0+e05hbWV9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiAiJyEiLAogICAgICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGlmICgkQ291bnRlcikgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJyBPUiAnOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgRW1wdHkgPT4gMSByZXF1aXJlcyBhIExFRlQgSk9JTi4KICAgICAgICAgICAgICAgIGlmICggJE9wZXJhdG9yIGVxICdFbXB0eScgJiYgJFRleHQgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEV4dFN1YiAuPSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+U2VhcmNoU1FMR2V0KAogICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZCwKICAgICAgICAgICAgICAgICAgICAgICAgVGFibGVBbGlhcyAgICAgICAgID0+ICJkZnZFbXB0eSREeW5hbWljRmllbGRKb2luQ291bnRlciIsCiAgICAgICAgICAgICAgICAgICAgICAgIE9wZXJhdG9yICAgICAgICAgICA9PiAkT3BlcmF0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgIFNlYXJjaFRlcm0gICAgICAgICA9PiAkVGV4dCwKICAgICAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICRRdWVyeUZvckVtcHR5VmFsdWVzID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICRTUUxFeHRTdWIgLj0gJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QtPlNlYXJjaFNRTEdldCgKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAiZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyIiwKICAgICAgICAgICAgICAgICAgICAgICAgT3BlcmF0b3IgICAgICAgICAgID0+ICRPcGVyYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgU2VhcmNoVGVybSAgICAgICAgID0+ICRUZXh0LAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgJENvdW50ZXIrKzsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU1FMRXh0U3ViIC49ICcpJzsKICAgICAgICAgICAgaWYgKCRDb3VudGVyKSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICRTUUxFeHRTdWI7CiAgICAgICAgICAgICAgICAkTmVlZEpvaW4gPSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoJE5lZWRKb2luKSB7CgogICAgICAgICAgICBpZiAoICEkVmVyc2lvblRhYmxlSm9pbmVkICkgewogICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2IE9OIGNpLmxhc3RfdmVyc2lvbl9pZCA9IHYuaWQnOwogICAgICAgICAgICAgICAgJFZlcnNpb25UYWJsZUpvaW5lZCA9IDE7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICgkUXVlcnlGb3JFbXB0eVZhbHVlcykgewoKICAgICAgICAgICAgICAgICMgVXNlIExFRlQgSk9JTiB0byBhbGxvdyBmb3IgbnVsbCB2YWx1ZXMuCiAgICAgICAgICAgICAgICAkU1FMRnJvbSAuPSAiIExFRlQgSk9JTiBkeW5hbWljX2ZpZWxkX3ZhbHVlIGRmdkVtcHR5JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyCiAgICAgICAgICAgICAgICAgICAgT04gKHYuaWQgPSBkZnZFbXB0eSREeW5hbWljRmllbGRKb2luQ291bnRlci5vYmplY3RfaWQKICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRmdkVtcHR5JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLmZpZWxkX2lkID0gIiAuCiAgICAgICAgICAgICAgICAgICAgJERCT2JqZWN0LT5RdW90ZSggJER5bmFtaWNGaWVsZC0+e0lEfSwgJ0ludGVnZXInICkgLiAiKSAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gIiBJTk5FUiBKT0lOIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyCiAgICAgICAgICAgICAgICAgICAgT04gKHYuaWQgPSBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIub2JqZWN0X2lkCiAgICAgICAgICAgICAgICAgICAgICAgIEFORCBkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIuZmllbGRfaWQgPSAiIC4KICAgICAgICAgICAgICAgICAgICAkREJPYmplY3QtPlF1b3RlKCAkRHluYW1pY0ZpZWxkLT57SUR9LCAnSW50ZWdlcicgKSAuICIpICI7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luVGFibGVzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICJkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiOwoKICAgICAgICAgICAgJER5bmFtaWNGaWVsZEpvaW5Db3VudGVyKys7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IHRpbWUgb2JqZWN0CiAgICAjIHJlbWVtYmVyIGN1cnJlbnQgdGltZSB0byBwcmV2ZW50IHNlYXJjaGVzIGZvciBmdXR1cmUgdGltZXN0YW1wcwogICAgbXkgJERhdGVUaW1lT2JqZWN0ID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJyk7CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIvbmV3ZXIgdGhhbiB4IG1pbnV0ZXMKICAgIG15ICVDb25maWdJdGVtVGltZSA9ICgKICAgICAgICBDb25maWdJdGVtQ3JlYXRlVGltZSA9PiAnY2kuY3JlYXRlX3RpbWUnLAogICAgKTsKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVDb25maWdJdGVtVGltZSApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIgdGhhbiB4IG1pbnV0ZXMKICAgICAgICBpZiAoIGRlZmluZWQgJFBhcmFteyAkS2V5IC4gJ09sZGVyTWludXRlcycgfSApIHsKCiAgICAgICAgICAgICRQYXJhbXsgJEtleSAuICdPbGRlck1pbnV0ZXMnIH0gfHw9IDA7CgogICAgICAgICAgICBteSAkVGltZSA9ICREYXRlVGltZU9iamVjdC0+Q2xvbmUoKTsKICAgICAgICAgICAgJFRpbWUtPlN1YnRyYWN0KCBNaW51dGVzID0+ICRQYXJhbXsgJEtleSAuICdPbGRlck1pbnV0ZXMnIH0gKTsKCiAgICAgICAgICAgIG15ICRUYXJnZXRUaW1lID0gJEtleSBlcSAnQ29uZmlnSXRlbUNyZWF0ZVRpbWUnID8gJFRpbWUtPlRvU3RyaW5nKCkgOiAkVGltZS0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgJFNRTEV4dCAuPSBzcHJpbnRmKCAiIEFORCAoICVzIDw9ICclcycgKSIsICRDb25maWdJdGVtVGltZXskS2V5fSwgJFRhcmdldFRpbWUgKTsKICAgICAgICB9CgogICAgICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjcmVhdGVkIG5ld2VyIHRoYW4geCBtaW51dGVzCiAgICAgICAgaWYgKCBkZWZpbmVkICRQYXJhbXsgJEtleSAuICdOZXdlck1pbnV0ZXMnIH0gKSB7CgogICAgICAgICAgICAkUGFyYW17ICRLZXkgLiAnTmV3ZXJNaW51dGVzJyB9IHx8PSAwOwoKICAgICAgICAgICAgbXkgJFRpbWUgPSAkS2VybmVsOjpPTS0+Q3JlYXRlKCdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnKTsKICAgICAgICAgICAgJFRpbWUtPlN1YnRyYWN0KCBNaW51dGVzID0+ICRQYXJhbXsgJEtleSAuICdOZXdlck1pbnV0ZXMnIH0gKTsKCiAgICAgICAgICAgIG15ICRUYXJnZXRUaW1lID0gJEtleSBlcSAnQ29uZmlnSXRlbUNyZWF0ZVRpbWUnID8gJFRpbWUtPlRvU3RyaW5nKCkgOiAkVGltZS0+VG9FcG9jaCgpOwoKICAgICAgICAgICAgJFNRTEV4dCAuPSBzcHJpbnRmKCAiIEFORCAoICVzID49ICclcycgKSIsICRDb25maWdJdGVtVGltZXskS2V5fSwgJFRhcmdldFRpbWUgKTsKICAgICAgICB9CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIvbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICVDb25maWdJdGVtVGltZSApIHsKCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgb2xkZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgICAgICBteSAkQ29tcGFyZU9sZGVyTmV3ZXJEYXRlOwogICAgICAgIGlmICggJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfSApIHsKCiAgICAgICAgICAgICMgY2hlY2sgdGltZSBmb3JtYXQKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfQogICAgICAgICAgICAgICAgIX4gL1xkXGRcZFxkLShcZFxkfFxkKS0oXGRcZHxcZCkgKFxkXGR8XGQpOihcZFxkfFxkKTooXGRcZHxcZCkvCiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkludmFsaWQgdGltZSBmb3JtYXQgJyIgLiAkUGFyYW17ICRLZXkgLiAnT2xkZXJEYXRlJyB9IC4gIichIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgICAgICdLZXJuZWw6OlN5c3RlbTo6RGF0ZVRpbWUnLAogICAgICAgICAgICAgICAgT2JqZWN0UGFyYW1zID0+IHsKICAgICAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFteyAkS2V5IC4gJ09sZGVyRGF0ZScgfSwKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgKTsKICAgICAgICAgICAgaWYgKCAhJFRpbWUgKSB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+CiAgICAgICAgICAgICAgICAgICAgICAgICJTZWFyY2ggbm90IGV4ZWN1dGVkIGR1ZSB0byBpbnZhbGlkIHRpbWUgJyIKICAgICAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17ICRLZXkgLiAnT2xkZXJEYXRlJyB9IC4gIichIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgJENvbXBhcmVPbGRlck5ld2VyRGF0ZSA9ICRUaW1lOwoKICAgICAgICAgICAgbXkgJFRhcmdldFRpbWUgPSAkS2V5IGVxICdDb25maWdJdGVtQ3JlYXRlVGltZScgPyAkVGltZS0+VG9TdHJpbmcoKSA6ICRUaW1lLT5Ub0Vwb2NoKCk7CgogICAgICAgICAgICAkU1FMRXh0IC49IHNwcmludGYoICIgQU5EICggJXMgPD0gJyVzJyApIiwgJENvbmZpZ0l0ZW1UaW1leyRLZXl9LCAkVGFyZ2V0VGltZSApOwogICAgICAgIH0KCiAgICAgICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNyZWF0ZWQgbmV3ZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgICAgICBpZiAoICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0gKSB7CiAgICAgICAgICAgIGlmICgKICAgICAgICAgICAgICAgICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0KICAgICAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICAgICAgKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJbnZhbGlkIHRpbWUgZm9ybWF0ICciIC4gJFBhcmFteyAkS2V5IC4gJ05ld2VyRGF0ZScgfSAuICInISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICBteSAkVGltZSA9ICRLZXJuZWw6Ok9NLT5DcmVhdGUoCiAgICAgICAgICAgICAgICAnS2VybmVsOjpTeXN0ZW06OkRhdGVUaW1lJywKICAgICAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICAgICAgU3RyaW5nID0+ICRQYXJhbXsgJEtleSAuICdOZXdlckRhdGUnIH0sCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICk7CiAgICAgICAgICAgIGlmICggISRUaW1lICkgewogICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PgogICAgICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgICAgIC4gJFBhcmFteyAkS2V5IC4gJ05ld2VyRGF0ZScgfSAuICInISIsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBuZXdlciBkYXRlIGlzIGFmdGVyIGN1cnJlbnQgZGF0ZQogICAgICAgICAgICByZXR1cm4gaWYgJFRpbWUgPiAkRGF0ZVRpbWVPYmplY3Q7CgogICAgICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBvbGRlci9uZXdlciBkYXRlIHJlc3RyaWN0aW9uIHNob3cgbm93IHZhbGlkIHRpbWVmcmFtZQogICAgICAgICAgICByZXR1cm4gaWYgJENvbXBhcmVPbGRlck5ld2VyRGF0ZSAmJiAkVGltZSA+ICRDb21wYXJlT2xkZXJOZXdlckRhdGU7CgogICAgICAgICAgICBteSAkVGFyZ2V0VGltZSA9ICRLZXkgZXEgJ0NvbmZpZ0l0ZW1DcmVhdGVUaW1lJyA/ICRUaW1lLT5Ub1N0cmluZygpIDogJFRpbWUtPlRvRXBvY2goKTsKCiAgICAgICAgICAgICRTUUxFeHQgLj0gc3ByaW50ZiggIiBBTkQgKCAlcyA+PSAnJXMnICkiLCAkQ29uZmlnSXRlbVRpbWV7JEtleX0sICRUYXJnZXRUaW1lICk7CiAgICAgICAgfQogICAgfQoKICAgICMgZ2V0IGNvbmZpZyBpdGVtcyBjaGFuZ2VkIG9sZGVyIHRoYW4geCBtaW51dGVzCiAgICBpZiAoIGRlZmluZWQgJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyTWludXRlc30gKSB7CgogICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXN9IHx8PSAwOwoKICAgICAgICBteSAkVGltZVN0YW1wID0gJERhdGVUaW1lT2JqZWN0LT5DbG9uZSgpOwogICAgICAgICRUaW1lU3RhbXAtPlN1YnRyYWN0KCBNaW51dGVzID0+ICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlck1pbnV0ZXN9ICk7CgogICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9ID0gJFRpbWVTdGFtcC0+VG9TdHJpbmcoKTsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbXMgY2hhbmdlZCBuZXdlciB0aGFuIHggbWludXRlcwogICAgaWYgKCBkZWZpbmVkICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlck1pbnV0ZXN9ICkgewoKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSB8fD0gMDsKCiAgICAgICAgbXkgJFRpbWVTdGFtcCA9ICREYXRlVGltZU9iamVjdC0+Q2xvbmUoKTsKICAgICAgICAkVGltZVN0YW1wLT5TdWJ0cmFjdCggTWludXRlcyA9PiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJNaW51dGVzfSApOwoKICAgICAgICAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfSA9ICRUaW1lU3RhbXAtPlRvU3RyaW5nKCk7CiAgICB9CgogICAgIyBnZXQgY29uZmlnIGl0ZW1zIGNoYW5nZWQgb2xkZXIgdGhhbiB4eHh4LXh4LXh4IHh4Onh4IGRhdGUKICAgIG15ICRDb21wYXJlTGFzdENoYW5nZVRpbWVPbGRlck5ld2VyRGF0ZTsKICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0gKSB7CgogICAgICAgICMgY2hlY2sgdGltZSBmb3JtYXQKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVPbGRlckRhdGV9CiAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU9sZGVyRGF0ZX0sCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lT2xkZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgJENvbXBhcmVMYXN0Q2hhbmdlVGltZU9sZGVyTmV3ZXJEYXRlID0gJFRpbWU7CgogICAgICAgICRTUUxFeHQgLj0gIiBBTkQgY2kuY2hhbmdlX3RpbWUgPD0gJyIgLiAkVGltZS0+VG9TdHJpbmcoKSAuICInIjsKICAgIH0KCiAgICAjIGdldCBjb25maWcgaXRlbXMgY2hhbmdlZCBuZXdlciB0aGFuIHh4eHgteHgteHggeHg6eHggZGF0ZQogICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfSApIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRQYXJhbXtDb25maWdJdGVtTGFzdENoYW5nZVRpbWVOZXdlckRhdGV9CiAgICAgICAgICAgICF+IC9cZFxkXGRcZC0oXGRcZHxcZCktKFxkXGR8XGQpIChcZFxkfFxkKTooXGRcZHxcZCk6KFxkXGR8XGQpLwogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCB0aW1lIGZvcm1hdCAnJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0nISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICRUaW1lID0gJEtlcm5lbDo6T00tPkNyZWF0ZSgKICAgICAgICAgICAgJ0tlcm5lbDo6U3lzdGVtOjpEYXRlVGltZScsCiAgICAgICAgICAgIE9iamVjdFBhcmFtcyA9PiB7CiAgICAgICAgICAgICAgICBTdHJpbmcgPT4gJFBhcmFte0NvbmZpZ0l0ZW1MYXN0Q2hhbmdlVGltZU5ld2VyRGF0ZX0sCiAgICAgICAgICAgIH0KICAgICAgICApOwoKICAgICAgICBpZiAoICEkVGltZSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4KICAgICAgICAgICAgICAgICAgICAiU2VhcmNoIG5vdCBleGVjdXRlZCBkdWUgdG8gaW52YWxpZCB0aW1lICciCiAgICAgICAgICAgICAgICAgICAgLiAkUGFyYW17Q29uZmlnSXRlbUxhc3RDaGFuZ2VUaW1lTmV3ZXJEYXRlfSAuICInISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgICMgZG9uJ3QgZXhlY3V0ZSBxdWVyaWVzIGlmIG5ld2VyIGRhdGUgaXMgYWZ0ZXIgY3VycmVudCBkYXRlCiAgICAgICAgcmV0dXJuIGlmICRUaW1lID4gJERhdGVUaW1lT2JqZWN0OwoKICAgICAgICAjIGRvbid0IGV4ZWN1dGUgcXVlcmllcyBpZiBvbGRlci9uZXdlciBkYXRlIHJlc3RyaWN0aW9uIHNob3cgbm93IHZhbGlkIHRpbWVmcmFtZQogICAgICAgIHJldHVybgogICAgICAgICAgICBpZiAkQ29tcGFyZUxhc3RDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGUgJiYgJFRpbWUgPiAkQ29tcGFyZUxhc3RDaGFuZ2VUaW1lT2xkZXJOZXdlckRhdGU7CgogICAgICAgICRTUUxFeHQgLj0gIiBBTkQgY2kuY2hhbmdlX3RpbWUgPj0gJyIgLiAkVGltZS0+VG9TdHJpbmcoKSAuICInIjsKICAgIH0KCiAgICAjIGRhdGFiYXNlIHF1ZXJ5IGZvciBzb3J0L29yZGVyIGJ5IG9wdGlvbgogICAgaWYgKCAkUmVzdWx0IG5lICdDT1VOVCcgKSB7CiAgICAgICAgJFNRTEV4dCAuPSAnIE9SREVSIEJZJzsKCiAgICAgICAgbXkgJUpvaW5lZFRhYmxlczsKICAgICAgICBmb3IgbXkgJENvdW50ICggMCAuLiAkI1NvcnRCeUFycmF5ICkgewogICAgICAgICAgICBpZiAoICRDb3VudCA+IDAgKSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICcsJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzb3J0IGJ5IGR5bmFtaWMgZmllbGQKICAgICAgICAgICAgaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSA9fiAvXkR5bmFtaWNGaWVsZF8oLiopLyApIHsKICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGROYW1lID0gJDE7CiAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkICAgICA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICQxLAogICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICBpZiAoICEkRHluYW1pY0ZpZWxkICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCB2YWxpZCBTb3J0QnkgKCcgLiAkU29ydEJ5QXJyYXlbJENvdW50XSAuICcpIScsCiAgICAgICAgICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgSWYgdGhlIHRhYmxlIHdhcyBhbHJlYWR5IGpvaW5lZCBmb3Igc2VhcmNoaW5nLCB3ZSByZXVzZSBpdC4KICAgICAgICAgICAgICAgIGlmICggISREeW5hbWljRmllbGRKb2luVGFibGVzeyREeW5hbWljRmllbGROYW1lfSApIHsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJFZlcnNpb25UYWJsZUpvaW5lZCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGNvbmZpZ2l0ZW1fdmVyc2lvbiB2IE9OIGNpLmxhc3RfdmVyc2lvbl9pZCA9IHYuaWQnOwogICAgICAgICAgICAgICAgICAgICAgICAkVmVyc2lvblRhYmxlSm9pbmVkID0gMTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRTUUxGcm9tCiAgICAgICAgICAgICAgICAgICAgICAgIC49ICIgTEVGVCBPVVRFUiBKT0lOIGR5bmFtaWNfZmllbGRfdmFsdWUgZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyCiAgICAgICAgICAgICAgICAgICAgICAgIE9OICh2LmlkID0gZGZ2JER5bmFtaWNGaWVsZEpvaW5Db3VudGVyLm9iamVjdF9pZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQU5EIGRmdiREeW5hbWljRmllbGRKb2luQ291bnRlci5maWVsZF9pZCA9ICIgLgogICAgICAgICAgICAgICAgICAgICAgICAkREJPYmplY3QtPlF1b3RlKCAkRHluYW1pY0ZpZWxkLT57SUR9LCAnSW50ZWdlcicgKSAuICIpICI7CgogICAgICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRKb2luVGFibGVzeyAkRHluYW1pY0ZpZWxkLT57TmFtZX0gfSA9ICJkZnYkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIiOwoKICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkSm9pbkNvdW50ZXIrKzsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICBteSAkU1FMT3JkZXJGaWVsZCA9ICREeW5hbWljRmllbGRCYWNrZW5kT2JqZWN0LT5TZWFyY2hTUUxPcmRlckZpZWxkR2V0KAogICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkLAogICAgICAgICAgICAgICAgICAgIFRhYmxlQWxpYXMgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSm9pblRhYmxlc3skRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICRTUUxTZWxlY3QgLj0gIiwgJFNRTE9yZGVyRmllbGQgIjsKICAgICAgICAgICAgICAgICRTUUxFeHQgICAgLj0gIiAkU1FMT3JkZXJGaWVsZCAiOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewoKICAgICAgICAgICAgICAgICMgam9pbiB0aGUgZ2VuZXJhbCBjYXRhbG9nIGZvciBzb3J0aW5nCiAgICAgICAgICAgICAgICBpZiAoICRTb3J0QnlBcnJheVskQ291bnRdIGVxICdEZXBsU3RhdGUnICYmICEkSm9pbmVkVGFibGVze0RlcGxTdGF0ZX0rKyApIHsKICAgICAgICAgICAgICAgICAgICAkU1FMRnJvbSAuPSAnIElOTkVSIEpPSU4gZ2VuZXJhbF9jYXRhbG9nIGdjX2RlcGwgT04gKHYuZGVwbF9zdGF0ZV9pZCA9IGdjX2RlcGwuaWQpJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggJFNvcnRCeUFycmF5WyRDb3VudF0gZXEgJ0luY2lTdGF0ZScgJiYgISRKb2luZWRUYWJsZXN7SW5jaVN0YXRlfSsrICkgewogICAgICAgICAgICAgICAgICAgICRTUUxGcm9tIC49ICcgSU5ORVIgSk9JTiBnZW5lcmFsX2NhdGFsb2cgZ2NfaW5jaSBPTiAodi5pbmNpX3N0YXRlX2lkID0gZ2NfaW5jaS5pZCknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSBlcSAnQ3VyRGVwbFN0YXRlJyAmJiAhJEpvaW5lZFRhYmxlc3tDdXJEZXBsU3RhdGV9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGdlbmVyYWxfY2F0YWxvZyBnY19jZGVwbCBPTiAoY2kuY3VyX2RlcGxfc3RhdGVfaWQgPSBnY19jZGVwbC5pZCknOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkU29ydEJ5QXJyYXlbJENvdW50XSBlcSAnQ3VySW5jaVN0YXRlJyAmJiAhJEpvaW5lZFRhYmxlc3tDdXJJbmNpU3RhdGV9KysgKSB7CiAgICAgICAgICAgICAgICAgICAgJFNRTEZyb20gLj0gJyBJTk5FUiBKT0lOIGdlbmVyYWxfY2F0YWxvZyBnY19jaW5jaSBPTiAoY2kuY3VyX2luY2lfc3RhdGVfaWQgPSBnY19jaW5jaS5pZCknOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICMgUmVndWxhciBzb3J0LgogICAgICAgICAgICAgICAgJFNRTFNlbGVjdCAuPSAnLCAnIC4gJFNvcnRPcHRpb25zeyAkU29ydEJ5QXJyYXlbJENvdW50XSB9OwogICAgICAgICAgICAgICAgJFNRTEV4dCAgICAuPSAnICcgLiAkU29ydE9wdGlvbnN7ICRTb3J0QnlBcnJheVskQ291bnRdIH07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggJE9yZGVyQnlBcnJheVskQ291bnRdIGVxICdVcCcgKSB7CiAgICAgICAgICAgICAgICAkU1FMRXh0IC49ICcgQVNDJzsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICRTUUxFeHQgLj0gJyBERVNDJzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGNhY2hlCiAgICBteSAkQ2FjaGVPYmplY3Q7CgogICAgaWYgKCAkUGFyYW17Q2FjaGVUVEx9ICkgewogICAgICAgICRDYWNoZU9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpDYWNoZScpOwogICAgICAgIG15ICRDYWNoZURhdGEgPSAkQ2FjaGVPYmplY3QtPkdldCgKICAgICAgICAgICAgVHlwZSA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgIEtleSAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCAuICRSZXN1bHQgLiAkTGltaXQsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCBkZWZpbmVkICRDYWNoZURhdGEgKSB7CiAgICAgICAgICAgIGlmICggcmVmICRDYWNoZURhdGEgZXEgJ0hBU0gnICkgewogICAgICAgICAgICAgICAgcmV0dXJuICV7JENhY2hlRGF0YX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCByZWYgJENhY2hlRGF0YSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAgICAgcmV0dXJuIEB7JENhY2hlRGF0YX07CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCByZWYgJENhY2hlRGF0YSBlcSAnJyApIHsKICAgICAgICAgICAgICAgIHJldHVybiAkQ2FjaGVEYXRhOwogICAgICAgICAgICB9CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdJbnZhbGlkIHJlZiAnIC4gcmVmKCRDYWNoZURhdGEpIC4gJyEnCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgIyBkYXRhYmFzZSBxdWVyeQogICAgbXkgJUNvbmZpZ0l0ZW1zOwogICAgbXkgQENvbmZpZ0l0ZW1JRHM7CiAgICBteSAkQ291bnQ7CgogICAgcmV0dXJuIGlmICEkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCwKICAgICAgICBMaW1pdCA9PiAkTGltaXQKICAgICk7CgogICAgd2hpbGUgKCBteSBAUm93ID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCkgKSB7CiAgICAgICAgJENvdW50ID0gJFJvd1swXTsKICAgICAgICAkQ29uZmlnSXRlbXN7ICRSb3dbMF0gfSA9ICRSb3dbMV07CiAgICAgICAgcHVzaCBAQ29uZmlnSXRlbUlEcywgJFJvd1swXTsKICAgIH0KCiAgICAjIHJldHVybiBDT1VOVAogICAgaWYgKCAkUmVzdWx0IGVxICdDT1VOVCcgKSB7CiAgICAgICAgaWYgKCRDYWNoZU9iamVjdCkgewogICAgICAgICAgICAkQ2FjaGVPYmplY3QtPlNldCgKICAgICAgICAgICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtU2VhcmNoJywKICAgICAgICAgICAgICAgIEtleSAgID0+ICRTUUxTZWxlY3QgLiAkU1FMRnJvbSAuICRTUUxFeHQgLiAkUmVzdWx0IC4gJExpbWl0LAogICAgICAgICAgICAgICAgVmFsdWUgPT4gJENvdW50LAogICAgICAgICAgICAgICAgVFRMICAgPT4gJFBhcmFte0NhY2hlVFRMfSB8fCA2MCAqIDQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkQ291bnQ7CiAgICB9CgogICAgIyByZXR1cm4gSEFTSAogICAgZWxzaWYgKCAkUmVzdWx0IGVxICdIQVNIJyApIHsKICAgICAgICBpZiAoJENhY2hlT2JqZWN0KSB7CiAgICAgICAgICAgICRDYWNoZU9iamVjdC0+U2V0KAogICAgICAgICAgICAgICAgVHlwZSAgPT4gJ0NvbmZpZ0l0ZW1TZWFyY2gnLAogICAgICAgICAgICAgICAgS2V5ICAgPT4gJFNRTFNlbGVjdCAuICRTUUxGcm9tIC4gJFNRTEV4dCAuICRSZXN1bHQgLiAkTGltaXQsCiAgICAgICAgICAgICAgICBWYWx1ZSA9PiBcJUNvbmZpZ0l0ZW1zLAogICAgICAgICAgICAgICAgVFRMICAgPT4gJFBhcmFte0NhY2hlVFRMfSB8fCA2MCAqIDQsCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIHJldHVybiAlQ29uZmlnSXRlbXM7CiAgICB9CgogICAgIyByZXR1cm4gQVJSQVkKICAgIGVsc2UgewogICAgICAgIGlmICgkQ2FjaGVPYmplY3QpIHsKICAgICAgICAgICAgJENhY2hlT2JqZWN0LT5TZXQoCiAgICAgICAgICAgICAgICBUeXBlICA9PiAnQ29uZmlnSXRlbVNlYXJjaCcsCiAgICAgICAgICAgICAgICBLZXkgICA9PiAkU1FMU2VsZWN0IC4gJFNRTEZyb20gLiAkU1FMRXh0IC4gJFJlc3VsdCAuICRMaW1pdCwKICAgICAgICAgICAgICAgIFZhbHVlID0+IFxAQ29uZmlnSXRlbUlEcywKICAgICAgICAgICAgICAgIFRUTCAgID0+ICRQYXJhbXtDYWNoZVRUTH0gfHwgNjAgKiA0LAogICAgICAgICAgICApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gQENvbmZpZ0l0ZW1JRHM7CiAgICB9Cn0KCnN1YiBfVmVyc2lvblNlYXJjaEluZGV4U1FMSm9pbk5lZWRlZCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkQXR0cmlidXRlIChxdy9OYW1lIERlcGxTdGF0ZXMgSW5jaVN0YXRlcyBEZXBsU3RhdGVJRHMgSW5jaVN0YXRlSURzLykgewogICAgICAgIHJldHVybiAxIGlmICRQYXJhbXtTZWFyY2hQYXJhbXN9eyRBdHRyaWJ1dGV9OwogICAgfQoKICAgIGZvciBteSAkS2V5ICgga2V5cyAkUGFyYW17U2VhcmNoUGFyYW1zfS0+JSogKSB7CiAgICAgICAgcmV0dXJuIDEgaWYgJEtleSA9fiAvXkR5bmFtaWNGaWVsZF8vOwogICAgfQoKICAgIHJldHVybjsKfQoKMTsK</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+ICdEZXBsb3ltZW50IGZhaWxlZCEnLAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHNwbGl0IGR5bmFtaWMgZmllbGRzIGluIHRocmVlIHNlcGFyYXRlIGdyb3VwcwogICAgbXkgQE5vcm1hbEZpZWxkTmFtZXMgPSBncmVwIHsgJEFsbEZpZWxkc3skX317RmllbGRUeXBlfSBuZSAnTGVucycgJiYgJEFsbEZpZWxkc3skX317RmllbGRUeXBlfSBuZSAnU2V0JyB9IGtleXMgJUFsbEZpZWxkczsKICAgIG15IEBMZW5zRmllbGROYW1lcyAgID0gZ3JlcCB7ICRBbGxGaWVsZHN7JF99e0ZpZWxkVHlwZX0gZXEgJ0xlbnMnIH0ga2V5cyAlQWxsRmllbGRzOwogICAgbXkgQFNldEZpZWxkTmFtZXMgICAgPSBncmVwIHsgJEFsbEZpZWxkc3skX317RmllbGRUeXBlfSBlcSAnU2V0JyB9IGtleXMgJUFsbEZpZWxkczsKCiAgICAjIHNvcnQgbGVucyBmaWVsZHMgaW4gY2FzZSBhIGxlbnMgaGFzIGFub3RoZXIgbGVucyBhcyBhdHRyaWJ1dGUgZHluYW1pYyBmaWVsZAogICAgbXkgQExlbnNGaWVsZE5hbWVzU29ydGVkID0gc29ydCB7CiAgICAgICAgKCAkQWxsRmllbGRzeyRifXtOYW1lfSBlcSAkQWxsRmllbGRzeyRhfXtDb25maWd9e0F0dHJpYnV0ZURGfSApIDw9PiAoICRBbGxGaWVsZHN7JGF9e05hbWV9IGVxICRBbGxGaWVsZHN7JGJ9e0NvbmZpZ317QXR0cmlidXRlREZ9ICkKICAgIH0gQExlbnNGaWVsZE5hbWVzOwoKICAgICMgMy4gY3JlYXRlIGR5bmFtaWMgZmllbGRzCiAgICBteSAkT3JkZXIgPSBzY2FsYXIoIGtleXMgJUR5bmFtaWNGaWVsZExvb2t1cCApOwogICAgRklFTEQ6CiAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIEBOb3JtYWxGaWVsZE5hbWVzLCBATGVuc0ZpZWxkTmFtZXNTb3J0ZWQsIEBTZXRGaWVsZE5hbWVzICkgewogICAgICAgIG5leHQgRklFTEQgaWYgJER5bmFtaWNGaWVsZExvb2t1cHskRmllbGROYW1lfTsKCiAgICAgICAgbXkgJEZpZWxkQ29uZmlnID0gJEFsbEZpZWxkc3skRmllbGROYW1lfTsKCiAgICAgICAgbXkgJVNldENvbmZpZzsKICAgICAgICBpZiAoICRGaWVsZENvbmZpZy0+e0ZpZWxkVHlwZX0gZXEgJ1NldCcgKSB7CiAgICAgICAgICAgIG15IEBJbmNsdWRlZCA9IG1hcCB7IHsgREYgPT4gJF8tPntERn0gfSB9ICRGaWVsZENvbmZpZy0+e0NvbmZpZ317SW5jbHVkZX0tPkAqOwogICAgICAgICAgICAlU2V0Q29uZmlnID0gKAogICAgICAgICAgICAgICAgQ29uZmlnID0+IHsKICAgICAgICAgICAgICAgICAgICAkRmllbGRDb25maWctPntDb25maWd9LT4lKiwKICAgICAgICAgICAgICAgICAgICBJbmNsdWRlID0+IFxASW5jbHVkZWQsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBpZiBuZWVkZWQsIHBlcmZvcm0gbmVjZXNzYXJ5IHRyYW5zZm9ybWF0aW9ucwogICAgICAgICRGaWVsZENvbmZpZyA9ICRTZWxmLT5fRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgPT4gJ0ltcG9ydCcsCiAgICAgICAgKTsKCiAgICAgICAgbXkgJEZpZWxkSUQgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRBZGQoCiAgICAgICAgICAgICRGaWVsZENvbmZpZy0+JSosCiAgICAgICAgICAgICVTZXRDb25maWcsCiAgICAgICAgICAgIEZpZWxkT3JkZXIgPT4gKyskT3JkZXIsCiAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJ0lUU01Db25maWdJdGVtJywKICAgICAgICAgICAgUmVvcmRlciAgICA9PiAwLAogICAgICAgICAgICBWYWxpZElEICAgID0+IDEsCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkRmllbGRJRCApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCBhZGQgZHluYW1pYyBmaWVsZCAkRmllbGRDb25maWctPntOYW1lfS4iLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICAjIHRyaWdnZXIgZHluYW1pYyBmaWVsZCBldmVudHMKICAgICMgICB0aGlzIGlzIGRvbmUgYmVjYXVzZSBTZXQtaW5uZXIgZHluYW1pYyBmaWVsZHMgYXJlIHVwZGF0ZWQgYWZ0ZXJ3YXJkcyB2aWEKICAgICMgICBhbiBldmVudCwgY2F1c2luZyB0aGUgZGF0YSBpbiB0aGUgY29uZmlnIGl0ZW0gZGVmaW5pdGlvbnMgdG8gYmVjb21lIG91dGRhdGVkCiAgICAkRHluYW1pY0ZpZWxkT2JqZWN0LT5FdmVudEhhbmRsZXJUcmFuc2FjdGlvbigpOwoKICAgICMgNC4gYWRkIGRlZmluaXRpb25zCiAgICBmb3IgbXkgJFJvbGVJRCAoIGtleXMgJVJvbGVEZWZpbml0aW9ucyApIHsKICAgICAgICBteSAkUmV0dXJuID0gJFNlbGYtPlJvbGVEZWZpbml0aW9uQWRkKAogICAgICAgICAgICBSb2xlSUQgICAgID0+ICRSb2xlSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJFJvbGVEZWZpbml0aW9uc3skUm9sZUlEfSwKICAgICAgICAgICAgVXNlcklEICAgICA9PiAxLAogICAgICAgICAgICBGb3JjZSAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFJldHVybi0+e1N1Y2Nlc3N9ICkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgU3VjY2VzcyAgICAgID0+IDAsCiAgICAgICAgICAgICAgICBFcnJvck1lc3NhZ2UgPT4gJ0NvdWxkIG5vdCBzdG9yZSBkZWZpbml0aW9uLicsCiAgICAgICAgICAgIH07CiAgICAgICAgfQogICAgfQogICAgZm9yIG15ICRDbGFzc0lEICgga2V5cyAlQ2xhc3NEZWZpbml0aW9ucyApIHsKICAgICAgICBteSAkUmV0dXJuID0gJFNlbGYtPkRlZmluaXRpb25BZGQoCiAgICAgICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICAgICAgICAgIERlZmluaXRpb24gPT4gJENsYXNzRGVmaW5pdGlvbnN7JENsYXNzSUR9LAogICAgICAgICAgICBVc2VySUQgICAgID0+IDEsCiAgICAgICAgICAgIEZvcmNlICAgICAgPT4gMSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUmV0dXJuLT57U3VjY2Vzc30gKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICBTdWNjZXNzICAgICAgPT4gMCwKICAgICAgICAgICAgICAgIEVycm9yTWVzc2FnZSA9PiAnQ291bGQgbm90IHN0b3JlIGRlZmluaXRpb24uJywKICAgICAgICAgICAgfTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIHsgU3VjY2VzcyA9PiAxIH07Cn0KCj1oZWFkMiBDbGFzc0V4cG9ydCgpCgpFeHBvcnQgY29uZmlnIGl0ZW0gY2xhc3NlcywgaW5jbHVkaW5nIGR5bmFtaWMgZmllbGRzIGFuZCBuYW1lc3BhY2VzLCBpbnRvIGEgWUFNTCBzdHJpbmcKCiAgICBteSAkWUFNTFN0cmluZyA9ICRDb25maWdJdGVtT2JqZWN0LT5DbGFzc0V4cG9ydCgKICAgICAgICBJdGVtSURMaXN0ID0+IFtDbGFzc0lEMSwgQ2xhc3NJRDIsIENsYXNzSUQzLCAuLi5dLCAgICAgICMgbGlzdCBvZiBjbGFzcyBvciAvIGFuZCByb2xlIElEcyB0byBleHBvcnQKICAgICk7CgpJbiBjYXNlIG9mIGEgZmFpbHVyZSBDPHVuZGVmPiBpcyByZXR1cm5lZC4KCj1jdXQKCnN1YiBDbGFzc0V4cG9ydCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJFlBTUxPYmplY3QgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKTsKCiAgICBteSAkQWxsRXhwb3J0ZWRDbGFzc2VzUmVmOwoKICAgIGZvciBteSAkRXhwb3J0SXRlbUlEICggQHsgJFBhcmFte0l0ZW1JRExpc3R9IH0gKSB7CgogICAgICAgICMgY2hlY2sgaWYgaXRlbSBpcyByb2xlIG9yIGNsYXNzCiAgICAgICAgbXkgJEl0ZW1EYXRhID0gJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtR2V0KAogICAgICAgICAgICBJdGVtSUQgPT4gJEV4cG9ydEl0ZW1JRCwKICAgICAgICApOwogICAgICAgIGlmICggIUlzSGFzaFJlZldpdGhEYXRhKCRJdGVtRGF0YSkgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJJRCAkRXhwb3J0SXRlbUlEIGlzIGludmFsaWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICAgICAgaWYgKCAkSXRlbURhdGEtPntDbGFzc30gbmUgJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJyAmJiAkSXRlbURhdGEtPntDbGFzc30gbmUgJ0lUU006OkNvbmZpZ0l0ZW06OlJvbGUnICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiSXRlbSB3aXRoIElEICRFeHBvcnRJdGVtSUQgaXMgbmVpdGhlciBhIGNvbmZpZyBpdGVtIGNsYXNzIG5vciBhIGNvbmZpZyBpdGVtIHJvbGUhIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgIG15ICVFeHBvcnRJdGVtOwogICAgICAgIG15ICREZWZpbml0aW9uUmVmOwogICAgICAgIGlmICggJEl0ZW1EYXRhLT57Q2xhc3N9IGVxICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycgKSB7CgogICAgICAgICAgICAjIGZldGNoIGNsYXNzIGRlZmluaXRpb24KICAgICAgICAgICAgJERlZmluaXRpb25SZWYgPSAkU2VsZi0+RGVmaW5pdGlvbkdldCggQ2xhc3NJRCA9PiAkRXhwb3J0SXRlbUlEICk7CiAgICAgICAgICAgICRFeHBvcnRJdGVte0NsYXNzfXtOYW1lfSA9ICREZWZpbml0aW9uUmVmLT57Q2xhc3N9OwoKICAgICAgICAgICAgIyBmZXRjaCBjbGFzcyBwcmVmZXJlbmNlcwogICAgICAgICAgICBteSAlQ2xhc3NQcmVmZXJlbmNlcyA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+R2VuZXJhbENhdGFsb2dQcmVmZXJlbmNlc0dldCgKICAgICAgICAgICAgICAgIEl0ZW1JRCA9PiAkRXhwb3J0SXRlbUlELAogICAgICAgICAgICApOwogICAgICAgICAgICBpZiAoICElQ2xhc3NQcmVmZXJlbmNlcyApIHsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJDb3VsZCBub3QgZ2V0IHByZWZlcmVuY2UgZGF0YSBmb3IgY2xhc3MgJERlZmluaXRpb25SZWYtPntDbGFzc30hIiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIFBSRUZFUkVOQ0VTS0VZOgogICAgICAgICAgICBmb3IgbXkgJFByZWZlcmVuY2VLZXkgKCBrZXlzICVDbGFzc1ByZWZlcmVuY2VzICkgewoKICAgICAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRVNLRVkgdW5sZXNzICRDbGFzc1ByZWZlcmVuY2VzeyRQcmVmZXJlbmNlS2V5fTsKICAgICAgICAgICAgICAgIG5leHQgUFJFRkVSRU5DRVNLRVkgdW5sZXNzICRDbGFzc1ByZWZlcmVuY2VzeyRQcmVmZXJlbmNlS2V5fVswXTsKCiAgICAgICAgICAgICAgICAjIHRyYW5zaXRpb24gb2YgUGVybWlzc2lvbiB0byBQZXJtaXNzaW9uR3JvdXAKICAgICAgICAgICAgICAgIGlmICggJFByZWZlcmVuY2VLZXkgZXEgJ1Blcm1pc3Npb24nICkgewoKICAgICAgICAgICAgICAgICAgICAjIHRyYW5zbGF0ZSBncm91cCBpZCBpbnRvIGdyb3VwIG5hbWUKICAgICAgICAgICAgICAgICAgICBteSAkUHJlZmVyZW5jZVZhbHVlID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Okdyb3VwJyktPkdyb3VwTG9va3VwKAogICAgICAgICAgICAgICAgICAgICAgICBHcm91cElEID0+ICRDbGFzc1ByZWZlcmVuY2VzeyRQcmVmZXJlbmNlS2V5fVswXSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICAkRXhwb3J0SXRlbXtDbGFzc317UGVybWlzc2lvbkdyb3VwfSA9ICRQcmVmZXJlbmNlVmFsdWU7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBzaW5nbGUtdmFsdWUgYXR0cmlidXRlcwogICAgICAgICAgICAgICAgZWxzaWYgKCBhbnkgeyAkXyBlcSAkUHJlZmVyZW5jZUtleSB9IHF3KE5hbWVNb2R1bGUgTnVtYmVyTW9kdWxlIFZlcnNpb25TdHJpbmdNb2R1bGUpICkgewogICAgICAgICAgICAgICAgICAgICRFeHBvcnRJdGVte0NsYXNzfXskUHJlZmVyZW5jZUtleX0gPSAkQ2xhc3NQcmVmZXJlbmNlc3skUHJlZmVyZW5jZUtleX1bMF07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBtdWx0aS12YWx1ZSBhdHRyaWJ1dGVzCiAgICAgICAgICAgICAgICBlbHNpZiAoIGFueSB7ICRfIGVxICRQcmVmZXJlbmNlS2V5IH0gcXcoQ2F0ZWdvcmllcyBWZXJzaW9uVHJpZ2dlcikgKSB7CiAgICAgICAgICAgICAgICAgICAgJEV4cG9ydEl0ZW17Q2xhc3N9eyRQcmVmZXJlbmNlS2V5fSA9ICRDbGFzc1ByZWZlcmVuY2VzeyRQcmVmZXJlbmNlS2V5fTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRJdGVtRGF0YS0+e0NsYXNzfSBlcSAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScgKSB7CgogICAgICAgICAgICAjIGZldGNoIHJvbGUgZGVmaW5pdGlvbgogICAgICAgICAgICAkRGVmaW5pdGlvblJlZiA9ICRTZWxmLT5Sb2xlRGVmaW5pdGlvbkdldCggUm9sZUlEID0+ICRFeHBvcnRJdGVtSUQgKTsKICAgICAgICAgICAgJEV4cG9ydEl0ZW17Um9sZU5hbWV9ID0gJERlZmluaXRpb25SZWYtPntSb2xlfTsKICAgICAgICB9CgogICAgICAgICMgcGVyZm9ybSBkeW5hbWljIGZpZWxkIHRyYW5zZm9ybWF0aW9uCiAgICAgICAgZm9yIG15ICREeW5hbWljRmllbGROYW1lICgga2V5cyAkRGVmaW5pdGlvblJlZi0+e0R5bmFtaWNGaWVsZFJlZn0tPiUqICkgewogICAgICAgICAgICBteSAkVHJhbnNmb3JtZWRERkNvbmZpZyA9ICRTZWxmLT5fRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREZWZpbml0aW9uUmVmLT57RHluYW1pY0ZpZWxkUmVmfXskRHluYW1pY0ZpZWxkTmFtZX0sCiAgICAgICAgICAgICAgICBBY3Rpb24gICAgICAgICAgICAgPT4gJ0V4cG9ydCcsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRFeHBvcnRJdGVte0R5bmFtaWNGaWVsZHN9eyREeW5hbWljRmllbGROYW1lfSA9ICRUcmFuc2Zvcm1lZERGQ29uZmlnOwogICAgICAgIH0KCiAgICAgICAgIyBleHBvcnQgdGhlIHN1Yi15YW1sIGRlZmluaXRpb24gZmllbGQgYXMgYSBzdHJpbmcgZmllbGQKICAgICAgICAkRXhwb3J0SXRlbXtEZWZpbml0aW9ufSA9ICREZWZpbml0aW9uUmVmLT57RGVmaW5pdGlvbn07CgogICAgICAgIHB1c2ggQHskQWxsRXhwb3J0ZWRDbGFzc2VzUmVmfSwgXCVFeHBvcnRJdGVtOwogICAgfQoKICAgIG15ICRBbGxFeHBvcnRlZENsYXNzZXNTdHIgPSAkWUFNTE9iamVjdC0+RHVtcCgKICAgICAgICBEYXRhID0+ICRBbGxFeHBvcnRlZENsYXNzZXNSZWYKICAgICk7CgogICAgcmV0dXJuICRBbGxFeHBvcnRlZENsYXNzZXNTdHI7Cn0KCj1iZWdpbiBJbnRlcm5hbDoKCj1oZWFkMiBfUHJvY2Vzc1JvbGVzCgpGb3IgY29udmVuaWVuY2UgdGhlIFlBTUwgZm9yIGEgY29uZmlnIGl0ZW0gY2xhc3MgbWF5IGNvbnRhaW4gYSBzdWJ0cmVlIGNhbGxlZCBSb2xlcy4gVXN1YWxseSB0aGVzZSBSb2xlcwpsb2FkIG90aGVyIFlBTUwgZG9jdW1lbnRzIHdoaWNoIGNvbnRhaW4gYSBTZWN0aW9uIGhhc2guIFRoZXNlIHNlY3Rpb24gYSBtZXJnZWQgaW50byB0aGUgdG9wLWxldmVsIFNlY3Rpb24gaGFzaC4KVGhlIGtleXMgb2YgdGhlIG1lcmdlZCBpbiBzZWN0aW9ucyBhcmUgdGhlIFJvbGUga2V5IGpvaW5lZCB3aXRoIHRoZSBsb2FkZWQgc2VjdGlvbiBuYW1lLiBUaGUgam9pbiBtYXJrZXIgaXMgQzw6Oj4uCgpUaGUgcGFzc2VkIGluIGhhc2ggcmVmZXJlbmNlIGlzIG1vZGlmaWVkIGluIHBsYWNlLgoKPWN1dAoKc3ViIF9Qcm9jZXNzUm9sZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIGRlZmluaXRpb24KICAgIGlmICggISRQYXJhbXtEZWZpbml0aW9uUmVmfSApIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJ05lZWQgRGVmaW5pdGlvblJlZiEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHJvbGVzIGFyZSBvcHRpb25hbAogICAgbXkgJERlZmluaXRpb25SZWYgPSAkUGFyYW17RGVmaW5pdGlvblJlZn07CiAgICBteSAkUm9sZXMgICAgICAgICA9ICREZWZpbml0aW9uUmVmLT57Um9sZXN9OwoKICAgIHJldHVybiB7IFN1Y2Nlc3MgPT4gMSB9IHVubGVzcyAkUm9sZXM7CgogICAgIyBqdXN0IGZvciBjb252ZW5pZW5jZQogICAgbXkgJFJldHVybkVycm9yID0gc3ViIHsKICAgICAgICByZXR1cm4gewogICAgICAgICAgICBTdWNjZXNzICAgPT4gMCwKICAgICAgICAgICAgRXJyb3IgICAgID0+ICRfWzBdLAogICAgICAgICAgICBFcnJvckFyZ3MgPT4gWyAoICRfWzFdIC8vICcnICksICggJF9bMl0gLy8gJycgKSBdLCAgICAjIG9ubHkgdHdvIGFyZ3MgYXJlIHN1cHBvcnRlZAogICAgICAgIH07CiAgICB9OwoKICAgIGlmICggcmVmICRSb2xlcyBuZSAnSEFTSCcgKSB7CiAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICBUcmFuc2xhdGFibGUocXtLZXkgJXMgaXMgbm90IGEgSGFzaC59KSwKICAgICAgICAgICAgJ1JvbGVzJywKICAgICAgICApOwogICAgfQoKICAgICMgbm90aGluZyB0byBkbwogICAgcmV0dXJuIHsgU3VjY2VzcyA9PiAxIH0gdW5sZXNzICRSb2xlcy0+JSo7CgogICAgIyBnZXQgcm9sZSBsaXN0IGZvciBtYXBwaW5nIG5hbWUgdG8gSUQKICAgIG15ICVSb2xlTmFtZTJJRDsKICAgIHsKICAgICAgICBteSAkR2VuZXJhbENhdGFsb2dPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKTsKICAgICAgICBteSAkUm9sZUxpc3QgICAgICAgICAgICAgPSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScsCiAgICAgICAgKTsKICAgICAgICAlUm9sZU5hbWUySUQgPSByZXZlcnNlICRSb2xlTGlzdC0+JSo7CiAgICB9CgogICAgbXkgJUltcG9ydFJvbGVzID0gbWFwIHsgJF8gPT4gMSB9IEB7ICRQYXJhbXtJbXBvcnRSb2xlc30gLy8gW10gfTsKCiAgICAjIG92ZXJ3cml0ZSB3aXRob3V0IG1lcmN5CiAgICBST0xFX0tFWToKICAgIGZvciBteSAkUm9sZUtleSAoIGtleXMgJFJvbGVzLT4lKiApIHsKICAgICAgICBteSAkUm9sZVNvdXJjZSA9ICRSb2xlcy0+eyRSb2xlS2V5fTsKCiAgICAgICAgIyBUaGUgbmFtZSBvZiB0aGUgcm9sZSBpcyBwZXIgZGVmYXVsdCB0aGUga2V5IGluIHRoZSBSb2xlcyBoYXNoLAogICAgICAgICMgYnV0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGFuIGV4cGxpY2l0IGF0dHJpYnV0ZSAnTmFtZScuCiAgICAgICAgIyBUaGlzIGFsbG93cyB0byB1c2UgYSBtb3JlIGNvbnZlbmllbnQgbmFtZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KICAgICAgICBteSAkUm9sZU5hbWUgPSAkUm9sZVNvdXJjZS0+e05hbWV9IC8vICRSb2xlS2V5OwoKICAgICAgICAjIFRoZSBhdHRyaWJ1dGUgVmVyc2lvbiBpcyBub3QgcmVxdWlyZWQgaW4gdGhlIFlBTUwuCiAgICAgICAgIyBXaGVuIG5vIFZlcnNpb24gaXMgcGFzc2VkIHRoZW4gdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSByb2xlIGlzIHVzZWQuCiAgICAgICAgI2lmICggISRSb2xlU291cmNlLT57VmVyc2lvbn0gKSB7CiAgICAgICAgIyAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgIyAgICAgICAgVHJhbnNsYXRhYmxlKHF7S2V5ICVzIGlzIG1pc3NpbmcgZm9yIHRoZSByb2xlICVzfSksCiAgICAgICAgIyAgICAgICAgJ1ZlcnNpb24nLAogICAgICAgICMgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAjICAgICk7CiAgICAgICAgI30KCiAgICAgICAgIyB0aGUgZmV0Y2hpbmcgaXMgZG9uZSB2aWEgdGhlIElECiAgICAgICAgbXkgJFJvbGVJRCA9ICRSb2xlTmFtZTJJRHskUm9sZU5hbWV9OwoKICAgICAgICBpZiAoICEkUm9sZUlEICYmICEkSW1wb3J0Um9sZXN7JFJvbGVOYW1lfSApIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7VGhlIHJvbGUgJXMgd2FzIG5vdCBmb3VuZC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZG8gbm90IGNoZWNrIGFueSBmdXJ0aGVyLCBpZiB0aGUgcm9sZSBpcyBvbmx5IGFib3V0IHRvIGJlIGltcG9ydGVkCiAgICAgICAgcmV0dXJuIHsgU3VjY2VzcyA9PiAxIH0gaWYgJEltcG9ydFJvbGVzeyRSb2xlTmFtZX07CgogICAgICAgICMgVGhpcyBhbHJlYWR5IHBhcnNlcyB0aGUgWUFNTAogICAgICAgIG15ICRSb2xlRGVmaW5pdGlvbiA9ICRTZWxmLT5Sb2xlRGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgUm9sZUlEICA9PiAkUm9sZUlELAogICAgICAgICAgICBWZXJzaW9uID0+ICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFJvbGVEZWZpbml0aW9uICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtUaGUgcm9sZSAlcyB3aXRoIHZlcnNpb24gJXMgd2FzIG5vdCBmb3VuZC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoIHJlZiAkUm9sZURlZmluaXRpb24gbmUgJ0hBU0gnICkgewogICAgICAgICAgICByZXR1cm4gJFJldHVybkVycm9yLT4oCiAgICAgICAgICAgICAgICBUcmFuc2xhdGFibGUocXtUaGUgcm9sZSAlcyB3aXRoIHZlcnNpb24gJXMgaXMgbm90IGEgaGFzaC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICBpZiAoCiAgICAgICAgICAgICEkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9ufQogICAgICAgICAgICB8fAogICAgICAgICAgICAhJFJvbGVEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0KICAgICAgICAgICAgfHwKICAgICAgICAgICAgISRSb2xlRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LT57U2VjdGlvbnN9CiAgICAgICAgICAgIHx8CiAgICAgICAgICAgIHJlZiAkUm9sZURlZmluaXRpb24tPntEZWZpbml0aW9uUmVmfS0+e1NlY3Rpb25zfSBuZSAnSEFTSCcKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuICRSZXR1cm5FcnJvci0+KAogICAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlKHF7VGhlIHJvbGUgJXMgd2l0aCB2ZXJzaW9uICVzIGlzIG5vdCB2YWxpZC59KSwKICAgICAgICAgICAgICAgICRSb2xlTmFtZSwKICAgICAgICAgICAgICAgICRSb2xlU291cmNlLT57VmVyc2lvbn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIEFkZCB0aGUgc2VjdGlvbnMgZnJvbSB0aGUgUm9sZSB0byB0aGUgU2VjdGlvbnMgb2YgdGhlIGNsYXNzLgogICAgICAgICMgTm90ZSB0aGF0IHRoZSBjb252ZW5pZW50IG5hbWUgZnJvbSB0aGUgY2xhc3MgZGVmaW5pdGlvbiBpcyB1c2VkIGhlcmUKICAgICAgICBteSAkUm9sZVNlY3Rpb25zID0gJFJvbGVEZWZpbml0aW9uLT57RGVmaW5pdGlvblJlZn0tPntTZWN0aW9uc307CiAgICAgICAgZm9yIG15ICRSb2xlU2VjdGlvbktleSAoIGtleXMgJFJvbGVTZWN0aW9ucy0+JSogKSB7CgogICAgICAgICAgICAjIGlmIGEgY2xhc3MgaGFzIHZhbGlkIHJvbGVzLCB0aGVuIFNlY3Rpb25zIGlzIG5vdCByZXF1aXJlZAogICAgICAgICAgICAkRGVmaW5pdGlvblJlZi0+e1NlY3Rpb25zfSAvLz0ge307CgogICAgICAgICAgICBteSAkU2VjdGlvbk5hbWUgPSBqb2luICc6OicsICRSb2xlS2V5LCAkUm9sZVNlY3Rpb25LZXk7CiAgICAgICAgICAgICREZWZpbml0aW9uUmVmLT57U2VjdGlvbnN9LT57JFNlY3Rpb25OYW1lfSA9ICRSb2xlU2VjdGlvbnMtPnskUm9sZVNlY3Rpb25LZXl9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4geyBTdWNjZXNzID0+IDEgfTsKfQoKPWhlYWQyIF9EZWZpbml0aW9uUHJlcGFyZSgpCgpQcmVwYXJlIHRoZSBzeW50YXggb2YgYSBuZXcgZGVmaW5pdGlvbi4KCiAgICBteSAkVHJ1ZSA9ICRDb25maWdJdGVtT2JqZWN0LT5fRGVmaW5pdGlvblByZXBhcmUoCiAgICAgICAgRGVmaW5pdGlvblJlZiA9PiAkQXJyYXlSZWYsCiAgICApOwoKPWN1dAoKc3ViIF9EZWZpbml0aW9uUHJlcGFyZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgVE9ETzogdGhlIG1ldGhvZCBpcyB1bnVzZWQuIEVpdGhlciByZW1vdmUgaXQgb3IgYWN0dWFsbHkgdXNlIGl0LgogICAgIyBjaGVjayBkZWZpbml0aW9uCiAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvblJlZn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb25SZWYhJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IgbXkgJEl0ZW0gKCBAeyAkUGFyYW17RGVmaW5pdGlvblJlZn0gfSApIHsKCiAgICAgICAgIyBzZXQgQ291bnRNaW4KICAgICAgICAkSXRlbS0+e0NvdW50TWlufSAvLz0gMTsKCiAgICAgICAgIyBzZXQgQ291bnRNYXgKICAgICAgICAkSXRlbS0+e0NvdW50TWF4fSB8fD0gMTsKCiAgICAgICAgIyBzZXQgQ291bnRNaW4KICAgICAgICBpZiAoICRJdGVtLT57Q291bnRNaW59ID4gJEl0ZW0tPntDb3VudE1heH0gKSB7CiAgICAgICAgICAgICRJdGVtLT57Q291bnRNaW59ID0gJEl0ZW0tPntDb3VudE1heH07CiAgICAgICAgfQoKICAgICAgICAjIHNldCBDb3VudERlZmF1bHQKICAgICAgICAkSXRlbS0+e0NvdW50RGVmYXVsdH0gLy89IDE7CiAgICAgICAgaWYgKCAkSXRlbS0+e0NvdW50RGVmYXVsdH0gPCAkSXRlbS0+e0NvdW50TWlufSApIHsKICAgICAgICAgICAgJEl0ZW0tPntDb3VudERlZmF1bHR9ID0gJEl0ZW0tPntDb3VudE1pbn07CiAgICAgICAgfQogICAgICAgIGlmICggJEl0ZW0tPntDb3VudERlZmF1bHR9ID4gJEl0ZW0tPntDb3VudE1heH0gKSB7CiAgICAgICAgICAgICRJdGVtLT57Q291bnREZWZhdWx0fSA9ICRJdGVtLT57Q291bnRNYXh9OwogICAgICAgIH0KCiAgICAgICAgIyBzdGFydCByZWN1cnNpb24sIGlmICJTdWIiIGlzIGRlZmluZWQuCiAgICAgICAgaWYgKCAkSXRlbS0+e1N1Yn0gJiYgcmVmICRJdGVtLT57U3VifSBlcSAnQVJSQVknICkgewogICAgICAgICAgICAkU2VsZi0+X0RlZmluaXRpb25QcmVwYXJlKAogICAgICAgICAgICAgICAgRGVmaW5pdGlvblJlZiA9PiAkSXRlbS0+e1N1Yn0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgICAgIGVsc2UgewogICAgICAgICAgICBkZWxldGUgJEl0ZW0tPntTdWJ9OwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIF9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0KCkKCkNyZWF0ZSBhIFlBTUwgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGRlZmluaXRpb24gb2YgdGhlIGR5bmFtaWMgZmllbGRzIHJlbGV2YW50IGZvciB0aGlzIGNvbmZpZyBpdGVtLgpUaGUgZGVmaW5pdGlvbiBjYW4gYmUgcGFzc2VkIGluIGVpdGhlciBhcyBhIFlBTUwgc3RyaW5nIG9yIGFzIGEgUGVybCBkYXRhIHN0cnVjdHVyZS4KCiAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbllBTUwgPSAkU2VsZi0+X0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb259LAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICApOwoKb3IKCiAgICBteSAkRHluYW1pY0ZpZWxkRGVmaW5pdGlvbllBTUwgPSAkU2VsZi0+X0RlZmluaXRpb25EeW5hbWljRmllbGRHZXQoCiAgICAgICAgRGVmaW5pdGlvbiA9PiAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LAogICAgICAgIENsYXNzSUQgICAgPT4gJENsYXNzSUQsCiAgICApOwoKPWN1dAoKc3ViIF9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJElzSW5pdGlhbENhbGwgPSBkZWZpbmVkICRQYXJhbXtEZWZpbml0aW9ufTsgICAgIyB0aGUgWUFNTCBkZWZpbml0aW9uCgogICAgIyBJbiB0aGUgaW5pdGlhbCBjYWxsIHRoZSBEZWZpbml0aW9uIGlzIHBhc3NlZCBhcyBZQU1MLgogICAgIyBJbiB0aGUgc3Vic2VxdWVudCByZWN1cnNpdmUgY2FsbHMgRGVmaW5pdGlvblBlcmwgaXMgcGFzc2VkIGFzIGEgUGVybCBkYXRhIHN0cnVjdHVyZS4KICAgIGlmICgkSXNJbml0aWFsQ2FsbCkgewogICAgICAgICRQYXJhbXtEZWZpbml0aW9uUGVybH0gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5Mb2FkKAogICAgICAgICAgICBEYXRhID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICAjIG1lcmdlIHRoZSByb2xlcyBpbnRvIHRoZSBEZWZpbml0aW9uUmVmLCB0aGUgcGFzc2VkIGluIHJlZmVyZW5jZSBpcyBtb2RpZmllZCBpbiBwbGFjZQogICAgICAgICRTZWxmLT5fUHJvY2Vzc1JvbGVzKAogICAgICAgICAgICBEZWZpbml0aW9uUmVmID0+ICRQYXJhbXtEZWZpbml0aW9uUGVybH0sCiAgICAgICAgKTsKICAgIH0KCiAgICBteSAlQ29udGVudEhhc2ggID0gcmVmICRQYXJhbXtEZWZpbml0aW9uUGVybH0gZXEgJ0hBU0gnICA/ICRQYXJhbXtEZWZpbml0aW9uUGVybH0tPiUqIDogKCk7CiAgICBteSBAQ29udGVudEFycmF5ID0gcmVmICRQYXJhbXtEZWZpbml0aW9uUGVybH0gZXEgJ0FSUkFZJyA/ICRQYXJhbXtEZWZpbml0aW9uUGVybH0tPkAqIDogKCk7CgogICAgIyBsb2csIGV2ZW4gd2hlbiBlbXB0eSBhcnJheXMgb3IgaGFzaGVzIGFyZSBhbGxvd2VkCiAgICBpZiAoICElQ29udGVudEhhc2ggJiYgIUBDb250ZW50QXJyYXkgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIERlZmluaXRpb24gb3IgRGVmaW5pdGlvblBlcmwgYXMgaGFzaCBvciBhcnJheSEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIHJlY3Vyc2l2ZWx5IGNvbGxlY3QgdGhlIGR5bmFtaWMgZmllbGRzCiAgICBteSAlRHluYW1pY0ZpZWxkczsKCiAgICAjIFRPRE86IHNwZWNpZnkgdGhlIHBhdGggd2hlcmUgREYgZmllbGRzIGFyZSBleHBlY3RlZCwgbWF5YmUgd2l0aCBKU09OOjpQYXRoCiAgICBLRVk6CiAgICBmb3IgbXkgJEtleSAoIGtleXMgJUNvbnRlbnRIYXNoICkgewogICAgICAgIGlmICggJEtleSBlcSAnREYnICkgewogICAgICAgICAgICAkRHluYW1pY0ZpZWxkc3sgJENvbnRlbnRIYXNoeyRLZXl9IH0gPSBcJUNvbnRlbnRIYXNoOwoKICAgICAgICAgICAgbmV4dCBLRVk7CiAgICAgICAgfQoKICAgICAgICAjIGRvIG5vdCBkZXNjZW5kIGludG8gSW50ZXJmYWNlcyBhbmQgR3JvdXBzLAogICAgICAgICMgYXMgdGhlc2UgbWF5IGJlIGVtcHR5IGFuZCB3b3VsZCBiZSBsb2dnZWQgYXMgZXJyb3JzCiAgICAgICAgIyBUT0RPOiBhcmUgSW50ZXJmYWNlcyBhbmQgR3JvdXBzIHN0aWxsIHVzZWQgPwogICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0ludGVyZmFjZXMnOwogICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ0dyb3Vwcyc7CiAgICAgICAgbmV4dCBLRVkgaWYgJEtleSBlcSAnUGFnZXMnOwogICAgICAgIG5leHQgS0VZIGlmICRLZXkgZXEgJ1JvbGVzJzsKCiAgICAgICAgbmV4dCBLRVkgdW5sZXNzIHJlZiAkQ29udGVudEhhc2h7JEtleX07CgogICAgICAgICMgZGVzY2VuZAogICAgICAgICVEeW5hbWljRmllbGRzID0gKAogICAgICAgICAgICAlRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgJFNlbGYtPl9EZWZpbml0aW9uRHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgRGVmaW5pdGlvblBlcmwgPT4gJENvbnRlbnRIYXNoeyRLZXl9LAogICAgICAgICAgICAgICAgQ2xhc3NJRCAgICAgICAgPT4gJFBhcmFte0NsYXNzSUR9LAogICAgICAgICAgICApLAogICAgICAgICk7CiAgICB9CgogICAgZm9yIG15ICRFbnRyeSAoQENvbnRlbnRBcnJheSkgewogICAgICAgIGlmICggcmVmICRFbnRyeSApIHsKICAgICAgICAgICAgJUR5bmFtaWNGaWVsZHMgPSAoCiAgICAgICAgICAgICAgICAlRHluYW1pY0ZpZWxkcywKICAgICAgICAgICAgICAgICRTZWxmLT5fRGVmaW5pdGlvbkR5bmFtaWNGaWVsZEdldCggRGVmaW5pdGlvblBlcmwgPT4gJEVudHJ5ICksCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgICMgdGhlIHJlY3Vyc2l2ZSBjYWxscyBvbmx5IGNvbGxlY3QgdGhlIGR5bmFtaWMgZmllbGRzCiAgICByZXR1cm4gJUR5bmFtaWNGaWVsZHMgdW5sZXNzICRJc0luaXRpYWxDYWxsOwoKICAgICMgc29tZSBtb3JlIHdvcmsgdG8gZG8gaW4gdGhlIGluaXRpYWwgY2FsbAogICAgbXkgJVJldHVybkR5bmFtaWNGaWVsZHM7CiAgICB7CiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAgICAgIyBTdG9yZSBjb25maWcgaXRlbSBjbGFzcyB0byBjaGVjayBmb3IgdmVyc2lvbiB0cmlnZ2VycyBpbiBkeW5hbWljIGZpZWxkIG9iamVjdCBoYW5kbGVyCiAgICAgICAgbXkgJENsYXNzSUQyTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICAgICAgQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkNsYXNzJywKICAgICAgICApOwogICAgICAgIG15ICRDbGFzcyA9ICRDbGFzc0lEMk5hbWUtPnsgJFBhcmFte0NsYXNzSUR9IH07CgogICAgICAgIERZTkFNSUNGSUVMRDoKICAgICAgICBmb3IgbXkgJE5hbWUgKCBrZXlzICVEeW5hbWljRmllbGRzICkgewogICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KCBOYW1lID0+ICROYW1lICk7CgogICAgICAgICAgICAjIG9ubHkgcmV0dXJuIHZhbGlkIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyAkRHluYW1pY0ZpZWxkLT4lKjsKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzICREeW5hbWljRmllbGQtPntWYWxpZElEfSBlcSAnMSc7CgogICAgICAgICAgICAjIGZvciBzZXQgZmllbGRzIGFsc28gdGhlIGNvbnRhaW5lZCBkeW5hbWljIGZpZWxkcyBoYXZlIHRvIGJlIHZlcnNpb25lZAogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICkgewogICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQgdW5sZXNzIElzQXJyYXlSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZC0+e0NvbmZpZ317SW5jbHVkZX0gKTsKCiAgICAgICAgICAgICAgICBJTkNMVURFRDoKICAgICAgICAgICAgICAgIGZvciBteSAkSW5jbHVkZWRERiAoICREeW5hbWljRmllbGQtPntDb25maWd9e0luY2x1ZGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IElOQ0xVREVEIHVubGVzcyAkSW5jbHVkZWRERi0+e0RGfTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJEluY2x1ZGVkREZDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoIE5hbWUgPT4gJEluY2x1ZGVkREYtPntERn0gKTsKCiAgICAgICAgICAgICAgICAgICAgJEluY2x1ZGVkREYtPntEZWZpbml0aW9ufSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgSUQgICAgICAgICA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e0lEfSwKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57TGFiZWx9LAogICAgICAgICAgICAgICAgICAgICAgICBDb25maWcgICAgID0+ICRJbmNsdWRlZERGQ29uZmlnLT57Q29uZmlnfSwKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGRUeXBlICA9PiAkSW5jbHVkZWRERkNvbmZpZy0+e0ZpZWxkVHlwZX0sCiAgICAgICAgICAgICAgICAgICAgICAgIE9iamVjdFR5cGUgPT4gJEluY2x1ZGVkREZDb25maWctPntPYmplY3RUeXBlfSwKICAgICAgICAgICAgICAgICAgICAgICAgQ0lDbGFzcyAgICA9PiAkQ2xhc3MsCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFJldHVybkR5bmFtaWNGaWVsZHN7JE5hbWV9ID0gewogICAgICAgICAgICAgICAgSUQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57SUR9LAogICAgICAgICAgICAgICAgTmFtZSAgICAgICA9PiAkRHluYW1pY0ZpZWxkLT57TmFtZX0sCiAgICAgICAgICAgICAgICBMYWJlbCAgICAgID0+ICREeW5hbWljRmllbGQtPntMYWJlbH0sCiAgICAgICAgICAgICAgICBDb25maWcgICAgID0+ICREeW5hbWljRmllbGQtPntDb25maWd9LCAgICAgICAjIG1heSBjb250YWluIGluY2x1ZGVkIERGCiAgICAgICAgICAgICAgICBGaWVsZFR5cGUgID0+ICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9LAogICAgICAgICAgICAgICAgT2JqZWN0VHlwZSA9PiAkRHluYW1pY0ZpZWxkLT57T2JqZWN0VHlwZX0sCiAgICAgICAgICAgICAgICBDSUNsYXNzICAgID0+ICRDbGFzcywKICAgICAgICAgICAgfTsKCiAgICAgICAgICAgIGZvciBteSAkQXR0cmlidXRlIChxdy9NYW5kYXRvcnkgTGFiZWwgUmVhZG9ubHkvKSB7CiAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZHN7JE5hbWV9eyRBdHRyaWJ1dGV9ICkgewogICAgICAgICAgICAgICAgICAgICRSZXR1cm5EeW5hbWljRmllbGRzeyROYW1lfXskQXR0cmlidXRlfSA9ICREeW5hbWljRmllbGRzeyROYW1lfXskQXR0cmlidXRlfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICAjIHRoZSBpbml0aWFsIGNhbGwgcmV0dXJucyBZQU1MCiAgICByZXR1cm4gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OllBTUwnKS0+RHVtcCgKICAgICAgICBEYXRhID0+IFwlUmV0dXJuRHluYW1pY0ZpZWxkcywKICAgICk7Cn0KCj1oZWFkMiBfRHluYW1pY0ZpZWxkQ29uZmlnVHJhbnNmb3JtKCkKClRyYW5zZm9ybWF0aW9ucyBvZiB0aGUgZHluYW1pYyBmaWVsZCBjb25maWcgbmVlZGVkIGZvciBJbXBvcnQvRXhwb3J0LgpOb3RlIHRoYXQgdGhlIHBhc3NlZCBpbiBkeW5hbWljIGZpZWxkIGNvbmZpZyBpcyBtb2RpZmllZCBpbiBwbGFjZS4KCiAgICAkRmllbGRDb25maWcgPSAkU2VsZi0+X0R5bmFtaWNGaWVsZENvbmZpZ1RyYW5zZm9ybSgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAnSW1wb3J0JywKICAgICk7Cgo9Y3V0CgpzdWIgX0R5bmFtaWNGaWVsZENvbmZpZ1RyYW5zZm9ybSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIGZvciBteSAkTmVlZGVkIChxdyhBY3Rpb24gRHluYW1pY0ZpZWxkQ29uZmlnKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfTsKCiAgICBpZiAoIGFueSB7ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0ZpZWxkVHlwZX0gZXEgJF8gfSBxdyhBZ2VudCBDb25maWdJdGVtIENvbmZpZ0l0ZW1WZXJzaW9uIEN1c3RvbWVyQ29tcGFueSBDdXN0b21lclVzZXIgRkFRIFRpY2tldCkgKSB7CgogICAgICAgICMgbmVlZGVkIHRyYW5zZm9ybWF0aW9uOiBOYW1lIC0+IElECiAgICAgICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnSW1wb3J0JyApIHsKCiAgICAgICAgICAgIGlmICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9ICkgewogICAgICAgICAgICAgICAgbXkgQFF1ZXVlSURzOwogICAgICAgICAgICAgICAgZm9yIG15ICRRdWV1ZU5hbWUgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtRdWV1ZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFF1ZXVlSURzLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+UXVldWVMb29rdXAoIFF1ZXVlID0+ICRRdWV1ZU5hbWUgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1F1ZXVlfSA9IFxAUXVldWVJRHM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfSApIHsKICAgICAgICAgICAgICAgIG15IEBUeXBlSURzOwogICAgICAgICAgICAgICAgZm9yIG15ICRUeXBlTmFtZSAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBUeXBlSURzLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VHlwZScpLT5UeXBlTG9va3VwKCBUeXBlSUQgPT4gJFR5cGVOYW1lICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUaWNrZXRUeXBlfSA9IFxAVHlwZUlEczsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0NsYXNzSURzfSApIHsKICAgICAgICAgICAgICAgIG15ICVDbGFzc05hbWUySUQgPSByZXZlcnNlICV7CiAgICAgICAgICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICAgICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICBteSBAQ2xhc3NJRHMgPSBtYXAKICAgICAgICAgICAgICAgICAgICB7ICRDbGFzc05hbWUySUR7JF99IH0KICAgICAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfS0+e0NsYXNzSURzfS0+QCo7CiAgICAgICAgICAgICAgICAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtDbGFzc0lEc30gPSBcQENsYXNzSURzOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIG5lZWRlZCB0cmFuc2Zvcm1hdGlvbjogSUQgLT4gTmFtZQogICAgICAgIGVsc2lmICggJFBhcmFte0FjdGlvbn0gZXEgJ0V4cG9ydCcgKSB7CgogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1F1ZXVlfSApIHsKICAgICAgICAgICAgICAgIG15IEBRdWV1ZU5hbWVzOwogICAgICAgICAgICAgICAgZm9yIG15ICRRdWV1ZUlEICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317UXVldWV9LT5AKiApIHsKICAgICAgICAgICAgICAgICAgICBwdXNoIEBRdWV1ZU5hbWVzLCAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UXVldWUnKS0+UXVldWVMb29rdXAoIFF1ZXVlSUQgPT4gJFF1ZXVlSUQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1F1ZXVlfSA9IFxAUXVldWVOYW1lczsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9ICkgewogICAgICAgICAgICAgICAgbXkgQFR5cGVOYW1lczsKICAgICAgICAgICAgICAgIGZvciBteSAkVHlwZUlEICggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317VGlja2V0VHlwZX0tPkAqICkgewogICAgICAgICAgICAgICAgICAgIHB1c2ggQFR5cGVOYW1lcywgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlR5cGUnKS0+VHlwZUxvb2t1cCggVHlwZUlEID0+ICRUeXBlSUQgKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e1RpY2tldFR5cGV9ID0gXEBUeXBlTmFtZXM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtDbGFzc0lEc30gKSB7CiAgICAgICAgICAgICAgICBteSAlQ2xhc3NJRDJOYW1lID0gJXsKICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6R2VuZXJhbENhdGFsb2cnKS0+SXRlbUxpc3QoCiAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIG15IEBDbGFzc05hbWVzID0gbWFwCiAgICAgICAgICAgICAgICAgICAgeyAkQ2xhc3NJRDJOYW1leyRffSB9CiAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntDbGFzc0lEc30tPkAqOwogICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317Q2xhc3NJRHN9ID0gXEBDbGFzc05hbWVzOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtGaWVsZFR5cGV9IGVxICdMZW5zJyApIHsKCiAgICAgICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKCiAgICAgICAgaWYgKCAkUGFyYW17QWN0aW9ufSBlcSAnSW1wb3J0JyApIHsKICAgICAgICAgICAgbXkgJEF0dHJpYnV0ZURGID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgTmFtZSA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtBdHRyaWJ1dGVERn0gPSAkQXR0cmlidXRlREYtPntJRH07CiAgICAgICAgICAgIG15ICRSZWZlcmVuY2VERiA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICAgICAgICAgIE5hbWUgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317UmVmZXJlbmNlREZ9ID0gJFJlZmVyZW5jZURGLT57SUR9OwogICAgICAgIH0KICAgICAgICBlbHNpZiAoICRQYXJhbXtBY3Rpb259IGVxICdFeHBvcnQnICkgewogICAgICAgICAgICBteSAkQXR0cmlidXRlREYgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgICAgICAgICBJRCA9PiAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtDb25maWd9e0F0dHJpYnV0ZURGfSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtBdHRyaWJ1dGVERn0gPSAkQXR0cmlidXRlREYtPntOYW1lfTsKICAgICAgICAgICAgbXkgJFJlZmVyZW5jZURGID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICAgICAgSUQgPT4gJFBhcmFte0R5bmFtaWNGaWVsZENvbmZpZ317Q29uZmlnfXtSZWZlcmVuY2VERn0sCiAgICAgICAgICAgICk7CiAgICAgICAgICAgICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9e0NvbmZpZ317UmVmZXJlbmNlREZ9ID0gJFJlZmVyZW5jZURGLT57TmFtZX07CiAgICAgICAgfQogICAgfQoKICAgICMgc2FuaXRpemUgY29uZmlncyBvZiBzZXQtaW5jbHVkZWQgREZzCiAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICJFeHBvcnQiICYmIElzQXJyYXlSZWZXaXRoRGF0YSggJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ30tPntJbmNsdWRlfSApICkgewogICAgICAgIElOQ0xVREVEX0RGOgogICAgICAgIGZvciBteSAkSW5jbHVkZWRERiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9LT57SW5jbHVkZX0tPkAqICkgewoKICAgICAgICAgICAgZGVsZXRlICRJbmNsdWRlZERGLT57RGVmaW5pdGlvbn17SUR9OwoKICAgICAgICAgICAgIyBGaWx0ZXIgb2ZmIHRoZSAnUGFydE9mU2V0JyBhdHRyaWJ1dGUsIGl0IGlzIG5vdCBuZWNlc3NhcnkgYW5kIG1heSBjYXVzZSBpbmNvbnNpc3RlbmN5IGVycm9ycyBsYXRlciBvbiBpbXBvcnQKICAgICAgICAgICAgZGVsZXRlICRJbmNsdWRlZERGLT57RGVmaW5pdGlvbn0tPntDb25maWd9LT57UGFydE9mU2V0fTsKCiAgICAgICAgICAgICMgdHJhbnNmb3JtIGluY2x1ZGVkIGNvbmZpZ3MgcmVjdXJzaXZlbHkgb24gZXhwb3J0CiAgICAgICAgICAgICRJbmNsdWRlZERGLT57RGVmaW5pdGlvbn0gPSAkU2VsZi0+X0R5bmFtaWNGaWVsZENvbmZpZ1RyYW5zZm9ybSgKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkSW5jbHVkZWRERi0+e0RlZmluaXRpb259LAogICAgICAgICAgICAgICAgQWN0aW9uICAgICAgICAgICAgID0+ICdFeHBvcnQnLAogICAgICAgICAgICApOwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtBY3Rpb259IGVxICdFeHBvcnQnICkgewogICAgICAgIGRlbGV0ZSAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnfXtJRH07CiAgICB9CgogICAgcmV0dXJuICRQYXJhbXtEeW5hbWljRmllbGRDb25maWd9Owp9Cgo9aGVhZDIgX0RlZmluaXRpb25DcmVhdGVBZnRlclJvbGVDcmVhdGUoKQoKQ29uZmlnIGl0ZW0gY2xhc3MgZGVmaW5pdGlvbiBtYXkgaW5jbHVkZSBkeW5hbWljIHJvbGVzLiBUaGlzIG1lYW5zCnRoYXQgdGhlIHVzZSByb2xlcyB3aXRob3V0IHNwZWNpZnlpbmcgYSB2ZXJzaW9uIG9mIHRoZSByb2xlLiBUaGlzCm1lYW5zIHRoZSBjbGFzcyBkZWZpbml0aW9ucyBtYXkgaGF2ZSB0byBiZSB1cGRhdGUgd2hlbiBhIHJvbGUgaXMKY2hhbmdlZC4KCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fRGVmaW5pdGlvbkNyZWF0ZUFmdGVyUm9sZUNyZWF0ZSgKICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJEZpZWxkQ29uZmlnLAogICAgICAgIEFjdGlvbiAgICAgICAgICAgICA9PiAnSW1wb3J0JywKICAgICk7Cgo9Y3V0CgpzdWIgX0RlZmluaXRpb25DcmVhdGVBZnRlclJvbGVDcmVhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGdldCB0aGUgbmFtZSBvZiB0aGUgcm9sZSB0byB0aGUgcm9sZSBkZWZpbml0aW9uCiAgICBteSAkUm9sZU5hbWU7CiAgICB7CiAgICAgICAgbXkgJFJvbGVJRCAgICAgID0gJFBhcmFte1JvbGVJRH07CiAgICAgICAgbXkgJFJvbGVJRDJOYW1lID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Um9sZScsCiAgICAgICAgKTsKICAgICAgICAkUm9sZU5hbWUgPSAkUm9sZUlEMk5hbWUtPnskUm9sZUlEfTsKICAgIH0KCiAgICAjIExvb3Agb3ZlciBhbGwgY2xhc3NlcyBhbmQgY2hlY2sgd2hldGhlciB0aGV5IGluY2x1ZGUgdGhlIGNoYW5nZWQgZHluYW1pYyBmaWVsZAogICAgbXkgJENsYXNzSUQyTmFtZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpLT5JdGVtTGlzdCgKICAgICAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAogICAgKTsKICAgIG15IEBDbGFzc0lzQWZmZWN0ZWQ7CiAgICBDTEFTU19JRDoKICAgIGZvciBteSAkQ2xhc3NJRCAoIHNvcnQgeyAkYSBjbXAgJGIgfSBrZXlzICRDbGFzc0lEMk5hbWUtPiUqICkgewoKICAgICAgICAjIERlZmluaXRpb25HZXQoKSBkb2VzIHJlc29sdmUgdGhlIHJvbGUgZGVjbGFyYXRpb24sCiAgICAgICAgIyBidXQgdGhlIGF0dHJpYnV0ZSAnUm9sZXMnIGlzIHN0aWxsIGluY2x1ZGVkCiAgICAgICAgbXkgJERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCgKICAgICAgICAgICAgQ2xhc3NJRCA9PiAkQ2xhc3NJRCwKICAgICAgICApOwoKICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyAkRGVmaW5pdGlvbjsKICAgICAgICBuZXh0IENMQVNTX0lEIHVubGVzcyAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9OwoKICAgICAgICBteSAkUm9sZXMgPSAkRGVmaW5pdGlvbi0+e0RlZmluaXRpb25SZWZ9LT57Um9sZXN9IC8vIHt9OwoKICAgICAgICBST0xFX0tFWToKICAgICAgICBmb3IgbXkgJFJvbGVLZXkgKCBrZXlzICRSb2xlcy0+JSogKSB7CiAgICAgICAgICAgIG15ICRSb2xlU291cmNlID0gJFJvbGVzLT57JFJvbGVLZXl9OwoKICAgICAgICAgICAgbmV4dCBST0xFX0tFWSB1bmxlc3MgcmVmICRSb2xlU291cmNlIGVxICdIQVNIJzsgICAgIyBhbiBlbXB0eSBoYXNocmVmIGlzIE9LCgogICAgICAgICAgICAjIG9ubHkgZHluYW1pYyByb2xlcywgdGhhdCBpcyByb2xlcyB3aXRob3V0IHZlcnNpb24sIGFyZSByZWxldmFudCBoZXJlCiAgICAgICAgICAgIG5leHQgUk9MRV9LRVkgaWYgJFJvbGVTb3VyY2UtPntWZXJzaW9ufTsKCiAgICAgICAgICAgICMgVGhlIG5hbWUgb2YgdGhlIHJvbGUgaXMgcGVyIGRlZmF1bHQgdGhlIGtleSBpbiB0aGUgUm9sZXMgaGFzaCwKICAgICAgICAgICAgIyBidXQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYW4gZXhwbGljaXQgYXR0cmlidXRlICdOYW1lJy4KICAgICAgICAgICAgIyBUaGlzIGFsbG93cyB0byB1c2UgYSBtb3JlIGNvbnZlbmllbnQgbmFtZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbi4KICAgICAgICAgICAgbXkgJERlY2xhcmVkUm9sZU5hbWUgPSAkUm9sZVNvdXJjZS0+e05hbWV9IC8vICRSb2xlS2V5OwoKICAgICAgICAgICAgbmV4dCBST0xFX0tFWSB1bmxlc3MgJERlY2xhcmVkUm9sZU5hbWUgZXEgJFJvbGVOYW1lOwoKICAgICAgICAgICAgcHVzaCBAQ2xhc3NJc0FmZmVjdGVkLCAkQ2xhc3NJRDsKCiAgICAgICAgICAgIGxhc3QgUk9MRV9LRVk7CiAgICAgICAgfQogICAgfQoKICAgICMgZm9yY2UgbmV3IHZlcnNpb25zIGZvciB0aGUgYWZmZWN0ZWQgY2xhc3NlcwogICAgZm9yIG15ICRDbGFzc0lEIChAQ2xhc3NJc0FmZmVjdGVkKSB7CiAgICAgICAgbXkgJE9sZERlZmluaXRpb24gPSAkU2VsZi0+RGVmaW5pdGlvbkdldCggQ2xhc3NJRCA9PiAkQ2xhc3NJRCApOwogICAgICAgICRTZWxmLT5EZWZpbml0aW9uQWRkKAogICAgICAgICAgICBDbGFzc0lEICAgID0+ICRDbGFzc0lELAogICAgICAgICAgICBEZWZpbml0aW9uID0+ICRPbGREZWZpbml0aW9uLT57RGVmaW5pdGlvbn0sCiAgICAgICAgICAgIFVzZXJJRCAgICAgPT4gMSwKICAgICAgICAgICAgRm9yY2UgICAgICA9PiAxLAogICAgICAgICk7CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCj1lbmQgSW50ZXJuYWw6Cgo9Y3V0CgoxOwo=</File>
        <File Location="Kernel/System/ITSMConfigItem/Event/CountLicenseLinks.pm" Permission="660" Encode="Base64">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAxOS0yMDI2IFJvdGhlciBPU1MgR21iSCwgaHR0cHM6Ly9vdG9iby5pby8KIyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNiBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCiMgLS0KIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdCB1bmRlcgojIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCiMgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0IFdJVEhPVVQKIyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwojIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgojIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCiMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiMgLS0KCnBhY2thZ2UgS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpFdmVudDo6Q291bnRMaWNlbnNlTGlua3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxpbmtPYmplY3QnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpMb2cnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpUaWNrZXQ6OkFydGljbGUnLAopOwoKPWhlYWQxIE5BTUUKCktlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6RXZlbnQ6OkNvdW50TGljZW5zZUxpbmtzIC0gRXZlbnQgaGFuZGxlciB0aGF0IGNvdW50IGxpY2Vuc2VzIHVzaW5nIGxpbmtlZCBDSSdzCgo9aGVhZDEgU1lOT1BTSVMKCkFsbCBldmVudCBoYW5kbGVyIGZ1bmN0aW9ucyBmb3IgY291bnQgbGljZW5zZXMuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPW92ZXIgNAoKPWN1dAoKPWl0ZW0gbmV3KCkKCgogICAgdXNlIEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyOwogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+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+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFZhbHVlICAgICAgICAgICAgICA9PiAkVG90YWxMaWNlbnNlcyAtICRDb3VudExpbmtzLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKc3ViIF9MaWNlbnNlc0FjY291bnRpbmdVcGRhdGUgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKTsKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJExvZ09iamVjdCAgICAgICAgICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyk7CiAgICBteSAkQ29uZmlnSXRlbU9iamVjdCAgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwoKICAgIG15ICREeW5hbWljRmllbGRDb25maWcgPSAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRHZXQoCiAgICAgICAgTmFtZSA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtBdmFpbGFibGVMaWNlbnNlc0RGfSwKICAgICk7CiAgICBteSAkQ29uZmlnSXRlbSA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtR2V0KAogICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte09iamVjdElEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIG15ICRBdmFpbGFibGVMaWNlbnNlc0RGID0gJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317QXZhaWxhYmxlTGljZW5zZXNERn07CiAgICBteSAkU3VjY2VzcyAgICAgICAgICAgICA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtVXBkYXRlKAogICAgICAgIENvbmZpZ0l0ZW1JRCAgICAgICAgID0+ICRDb25maWdJdGVtLT57Q29uZmlnSXRlbUlEfSwKICAgICAgICBOdW1iZXIgICAgICAgICAgICAgICA9PiAkQ29uZmlnSXRlbS0+e051bWJlcn0sCiAgICAgICAgJEF2YWlsYWJsZUxpY2Vuc2VzREYgPT4gJENvbmZpZ0l0ZW0tPnskQXZhaWxhYmxlTGljZW5zZXNERn0gKyAkUGFyYW17RGVsdGF9LAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgKTsKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRMb2dPYmplY3QtPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIkNvdWxkIG5vdCB1cGRhdGUgZmllbGQgJyRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e0F2YWlsYWJsZUxpY2Vuc2VzREZ9JyIsCiAgICAgICAgKTsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGVsdGF9IDwgMCApIHsKICAgICAgICBteSAkTWluaW11bUxpY2Vuc2VzICAgICAgICAgICAgICAgICAgPSAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtNaW5pbXVtTGljZW5zZXN9OwogICAgICAgICRDb25maWdJdGVtLT57JEF2YWlsYWJsZUxpY2Vuc2VzREZ9ICs9ICRQYXJhbXtEZWx0YX07ICAgICMgU3luY2hyb25pemUgQ0kgc25hcHNob3QKCiAgICAgICAgaWYgKCAkTWluaW11bUxpY2Vuc2VzICYmICRDb25maWdJdGVtLT57JEF2YWlsYWJsZUxpY2Vuc2VzREZ9IDwgJE1pbmltdW1MaWNlbnNlcyApIHsKICAgICAgICAgICAgJFNlbGYtPl9Ob3RpZnkoCiAgICAgICAgICAgICAgICBDb25maWdJdGVtICAgICAgPT4gJENvbmZpZ0l0ZW0sCiAgICAgICAgICAgICAgICBMaWNlbnNlU2V0dGluZ3MgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc30KICAgICAgICAgICAgKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDE7Cn0KCnN1YiBfTm90aWZ5IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayB3aGV0aGVyIGEgdGlja2V0IHdhcyBnZW5lcmF0ZWQgcHJldmlvdXNseSBhbmQgaXMgbm90IGNsb3NlZAogICAgbXkgJExpbmtPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcpOwogICAgbXkgJUxpbmtMaXN0ICAgPSAkTGlua09iamVjdC0+TGlua0tleUxpc3QoCiAgICAgICAgT2JqZWN0MSA9PiAnSVRTTUNvbmZpZ0l0ZW0nLAogICAgICAgIEtleTEgICAgPT4gJFBhcmFte0NvbmZpZ0l0ZW19e0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgT2JqZWN0MiA9PiAnVGlja2V0JywKICAgICAgICBTdGF0ZSAgID0+ICdWYWxpZCcsCiAgICAgICAgVHlwZSAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBVc2VySUQgID0+IDEsCiAgICApOwoKICAgIG15ICRUaWNrZXRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VGlja2V0Jyk7CiAgICBmb3IgbXkgJExpbmtlZFRpY2tldElEICgga2V5cyAlTGlua0xpc3QgKSB7CiAgICAgICAgbXkgJVRpY2tldCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldEdldCgKICAgICAgICAgICAgVGlja2V0SUQgICAgICA9PiAkTGlua2VkVGlja2V0SUQsCiAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAxLAogICAgICAgICAgICBTaWxlbnQgICAgICAgID0+IDEsCiAgICAgICAgKTsKCiAgICAgICAgIyBza2lwIG5vdGlmaWNhdGlvbiBpZiBhbiBvcGVuIHRpY2tldCB3YXMgYWxyZWFkeSBjcmVhdGVkCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0R5bmFtaWNGaWVsZH0gfQogICAgICAgICAgICAmJiAkVGlja2V0eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0R5bmFtaWNGaWVsZH0gfSA9PSAxCiAgICAgICAgICAgICYmICRUaWNrZXR7U3RhdGVUeXBlfSBuZSAiY2xvc2VkIgogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgICMgcHJlcGFyZSBzdWJzdGl0dXRpb25zCiAgICBteSAlU3Vic3RpdHV0aW9ucyA9ICgKICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTlVNQkVSPicgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17TnVtYmVyfSwKICAgICAgICAnPE9UT0JPX0NPTkZJR0lURU1fTkFNRT4nICAgICAgICAgICA9PiAkUGFyYW17Q29uZmlnSXRlbX17TmFtZX0sCiAgICAgICAgJzxPVE9CT19DT05GSUdJVEVNX0xJQ0VOU0VTX0FWQUlMPicgPT4gJFBhcmFte0NvbmZpZ0l0ZW19eyAnRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtBdmFpbGFibGVMaWNlbnNlc0RGfSB9LAogICAgICAgICc8T1RPQk9fQ09ORklHSVRFTV9MSUNFTlNFU19NSU4+JyAgID0+ICRQYXJhbXtDb25maWdJdGVtfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317TWluaW11bUxpY2Vuc2VzREZ9IH0sCiAgICApOwoKICAgIFNVQktFWToKICAgIGZvciBteSAkS2V5ICggKCAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1RpdGxlfSAuICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17VGV4dH0gKSA9fiAvPE9UT0JPX0NPTkZJR0lURU1fKFtePl0rKT4vZyApIHsKICAgICAgICBuZXh0IFNVQktFWSBpZiBleGlzdHMgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In07CiAgICAgICAgbmV4dCBTVUJLRVkgaWYgISRQYXJhbXtDb25maWdJdGVtfXskS2V5fTsKCiAgICAgICAgJFN1YnN0aXR1dGlvbnN7IjxPVE9CT19DT05GSUdJVEVNXyRLZXk+In0gPSAkUGFyYW17Q29uZmlnSXRlbX17JEtleX0gLy8gJyc7CiAgICB9CgogICAgbXkgJFRpY2tldFRpdGxlICAgICAgPSAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1RpdGxlfTsKICAgIG15ICROb3RpZmljYXRpb25UZXh0ID0gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtUZXh0fTsKICAgIGZvciBteSAkS2V5ICgga2V5cyAlU3Vic3RpdHV0aW9ucyApIHsKICAgICAgICAkVGlja2V0VGl0bGUgICAgICA9fiBzLyRLZXkvJFN1YnN0aXR1dGlvbnN7ICRLZXkgfS9nOwogICAgICAgICROb3RpZmljYXRpb25UZXh0ID1+IHMvJEtleS8kU3Vic3RpdHV0aW9uc3sgJEtleSB9L2c7CiAgICB9CgogICAgIyBhbGwgY2hlY2tzIGZpbmlzaGVkIC0+IGNyZWF0ZSBhIHRpY2tldCBhcyBub3RpZmljYXRpb24KICAgIG15ICRUaWNrZXRJRCA9ICRUaWNrZXRPYmplY3QtPlRpY2tldENyZWF0ZSgKICAgICAgICBUTiAgICAgICAgICAgPT4gJFRpY2tldE9iamVjdC0+VGlja2V0Q3JlYXRlTnVtYmVyKCksCiAgICAgICAgVGl0bGUgICAgICAgID0+ICRUaWNrZXRUaXRsZSwKICAgICAgICBRdWV1ZSAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtRdWV1ZX0sCiAgICAgICAgTG9jayAgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17TG9ja30gICAgICAgICB8fCAndW5sb2NrJywKICAgICAgICBQcmlvcml0eSAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtQcmlvcml0eX0gICAgIHx8ICczIG5vcm1hbCcsCiAgICAgICAgU3RhdGUgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U3RhdGV9ICAgICAgICB8fCAnbmV3JywKICAgICAgICBUeXBlICAgICAgICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtUeXBlfSAgICAgICAgIHx8ICcnLAogICAgICAgIFNlcnZpY2UgICAgICA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e1NlcnZpY2V9ICAgICAgfHwgJycsCiAgICAgICAgU0xBICAgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U0xBfSAgICAgICAgICB8fCAnJywKICAgICAgICBDdXN0b21lcklEICAgPT4gJFBhcmFte0xpY2Vuc2VTZXR0aW5nc317VGlja2V0fXtDdXN0b21lcklEfSAgIHx8ICcnLAogICAgICAgIEN1c3RvbWVyVXNlciA9PiAkUGFyYW17TGljZW5zZVNldHRpbmdzfXtUaWNrZXR9e0N1c3RvbWVyVXNlcn0gfHwgJycsCiAgICAgICAgT3duZXJJRCAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17T3duZXJJRH0gICAgICB8fCAnMScsCiAgICAgICAgVXNlcklEICAgICAgID0+IDEsCiAgICApOwogICAgaWYgKCAhJFRpY2tldElEICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ291bGQgbm90IGNyZWF0ZSBhIHRpY2tldCBmb3IgQ29uZmlnSXRlbUlEOiAkUGFyYW17Q29uZmlnSXRlbX17Q29uZmlnSXRlbUlEfSEiLAogICAgICAgICk7CiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZG8gYXJ0aWNsZSBkYiBpbnNlcnQKICAgIG15ICRBcnRpY2xlT2JqZWN0ICAgICAgICAgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlRpY2tldDo6QXJ0aWNsZScpOwogICAgbXkgJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QgPSAkQXJ0aWNsZU9iamVjdC0+QmFja2VuZEZvckNoYW5uZWwoIENoYW5uZWxOYW1lID0+ICdJbnRlcm5hbCcgKTsKICAgIG15ICRBcnRpY2xlSUQgICAgICAgICAgICAgICAgICAgID0gJEludGVybmFsQXJ0aWNsZUJhY2tlbmRPYmplY3QtPkFydGljbGVDcmVhdGUoCiAgICAgICAgVGlja2V0SUQgICAgICAgICAgICAgPT4gJFRpY2tldElELAogICAgICAgIFNlbmRlclR5cGUgICAgICAgICAgID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17U2VuZGVyVHlwZX0gfHwgJ3N5c3RlbScsCiAgICAgICAgSXNWaXNpYmxlRm9yQ3VzdG9tZXIgPT4gMCwKICAgICAgICBDb250ZW50VHlwZSAgICAgICAgICA9PiAndGV4dC9wbGFpbjsgY2hhcnNldD11dGYtOCcsCiAgICAgICAgQm9keSAgICAgICAgICAgICAgICAgPT4gJE5vdGlmaWNhdGlvblRleHQsCiAgICAgICAgU3ViamVjdCAgICAgICAgICAgICAgPT4gJFRpY2tldFRpdGxlLAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgSGlzdG9yeVR5cGUgICAgICAgICAgPT4gJ05ld1RpY2tldCcsCiAgICAgICAgSGlzdG9yeUNvbW1lbnQgICAgICAgPT4gIlwlXCVDTURCTm90aWZpY2F0aW9uIiwKICAgICk7CgogICAgIyBjbG9zZSB0aWNrZXQgaWYgYXJ0aWNsZSBjcmVhdGUgZmFpbGVkIQogICAgaWYgKCAhJEFydGljbGVJRCApIHsKICAgICAgICAkVGlja2V0T2JqZWN0LT5UaWNrZXREZWxldGUoCiAgICAgICAgICAgIFRpY2tldElEID0+ICRUaWNrZXRJRCwKICAgICAgICAgICAgVXNlcklEICAgPT4gMSwKICAgICAgICApOwogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiQ2FuJ3QgcHJvY2VzcyB0aWNrZXQhIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxpbmsgdGlja2V0IGFuZCBjb25maWcgaXRlbQogICAgJExpbmtPYmplY3QtPkxpbmtBZGQoCiAgICAgICAgU291cmNlT2JqZWN0ID0+ICdJVFNNQ29uZmlnSXRlbScsCiAgICAgICAgU291cmNlS2V5ICAgID0+ICRQYXJhbXtDb25maWdJdGVtfXtDb25maWdJdGVtSUR9LAogICAgICAgIFRhcmdldE9iamVjdCA9PiAnVGlja2V0JywKICAgICAgICBUYXJnZXRLZXkgICAgPT4gJFRpY2tldElELAogICAgICAgIFR5cGUgICAgICAgICA9PiAnRGVwZW5kc09uJywKICAgICAgICBTdGF0ZSAgICAgICAgPT4gJ1ZhbGlkJywKICAgICAgICBVc2VySUQgICAgICAgPT4gMSwKICAgICk7CgogICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGQgIHRvIDEsIHRvIG1hcmsgdGhlIHRpY2tldCBhcyBnZW5lcmF0ZWQgYnkgdGhpcyBzY3JpcHQKICAgIG15ICREeW5hbWljRmllbGRPYmplY3QgICAgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJER5bmFtaWNGaWVsZEJhY2tlbmRPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJyk7CiAgICBteSAkRHluYW1pY0ZpZWxkICAgICAgICAgICAgICA9ICREeW5hbWljRmllbGRPYmplY3QtPkR5bmFtaWNGaWVsZEdldCgKICAgICAgICBOYW1lID0+ICRQYXJhbXtMaWNlbnNlU2V0dGluZ3N9e1RpY2tldH17RHluYW1pY0ZpZWxkfSwKICAgICk7CiAgICAkRHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdC0+VmFsdWVTZXQoCiAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGQsCiAgICAgICAgT2JqZWN0SUQgICAgICAgICAgID0+ICRUaWNrZXRJRCwKICAgICAgICBWYWx1ZSAgICAgICAgICAgICAgPT4gMSwKICAgICAgICBVc2VySUQgICAgICAgICAgICAgPT4gMSwKICAgICk7CgogICAgcmV0dXJuIDE7Cn0KCjE7Cgo9YmFjawo=</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/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+IFwlQ2FjaGVkVmlzaWJpbGl0eSwgICAgICAgICAgICAjIG9wdGlvbmFsOyB1c2UgdGhlIHByb3ZpZGVkIHZpc2liaWxpdHkgYW5kIGRvIG5vdCBzdG9yZSB0aGUgY2FjaGUgYXQgdGhlIGVuZAogICAgKTsKClJldHVybnM6CgogICAgbXkgJVN0YXRlcyA9ICgKICAgICAgICBGaWVsZHMgPT4gWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBOYW1lICAgICAgICAgICAgPT4gJEZpZWxkTmFtZSwKICAgICAgICAgICAgICAgIEluZGV4ICAgICAgICAgICA9PiA8SW5kZXggd2l0aGluIEB7ICREeW5hbWljRmllbGRDb25maWdzIH0+CiAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gJFBvc3NpYmxlVmFsdWVzLAogICAgICAgICAgICB9CiAgICAgICAgICAgIC4uLgogICAgICAgIF0sCiAgICAgICAgVmlzaWJpbGl0eSA9PiB7CiAgICAgICAgICAgIEZpZWxkMSAgPT4gMSwKICAgICAgICAgICAgRmllbGQyICA9PiAwLAogICAgICAgIH0sCiAgICAgICAgTmV3VmFsdWVzID0+IHsKICAgICAgICAgICAgLi4uCiAgICAgICAgfSwKICAgICk7Cgo9Y3V0CgpzdWIgR2V0RmllbGRTdGF0ZXMgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGNoZWNrIG5lZWRlZAogICAgZm9yIChxdyhBY3Rpb24gR2V0UGFyYW0pKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyRffSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJF8hIgogICAgICAgICAgICApOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNsZWFuIGNvbmZpZyBpdGVtIGlkIGlmIGl0IGlzICdORVcnCiAgICBpZiAoICRQYXJhbXtDb25maWdJdGVtSUR9ICYmICRQYXJhbXtDb25maWdJdGVtSUR9IGVxICdORVcnICkgewogICAgICAgIGRlbGV0ZSAkUGFyYW17Q29uZmlnSXRlbUlEfTsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17VXNlcklEfSAmJiAhJFBhcmFte0N1c3RvbWVyVXNlcn0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkIFVzZXJJRCBvciBDdXN0b21lclVzZXJJRCEiCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgICMgZGVjcmVtZW50IG9uIHVuZGVmIHJlc3VsdCBpbiAnLTEnLCBzbyBpZiBMb29wUHJvdGVjdGlvbiBpcyB1bmRlZiwgZnVuY3Rpb24gYWJvcnRzIGhlcmUKICAgIGlmICggJHsgJFBhcmFte0xvb3BQcm90ZWN0aW9ufSB9LS0gPCAxICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUmFuIGludG8gdW5yZXNvbHZhYmxlIGxvb3AhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBnZXQgdGhlIGN1cnJlbnQgdmlzaWJpbGl0eQogICAgbXkgJENhY2hlZFZpc2liaWxpdHk7CiAgICBpZiAoICRQYXJhbXtBQ0xQcmVzZWxlY3Rpb259ICkgewoKICAgICAgICAjIGluIHNvbWUgb2NjYXNpb25zIChlLmcuIGR5bmFtaWMgZmllbGQgc2V0KSB3ZSBkbyBub3QgdXNlIHRoZSBjYWNoZQogICAgICAgICRDYWNoZWRWaXNpYmlsaXR5ID0gZXhpc3RzICRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fQogICAgICAgICAgICA/ICRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fQogICAgICAgICAgICA6ICRTZWxmLT57Q2FjaGVPYmplY3R9LT5HZXQoCiAgICAgICAgICAgICAgICBUeXBlID0+ICdIaWRkZW5GaWVsZHMnLAogICAgICAgICAgICAgICAgS2V5ICA9PiAkUGFyYW17Rm9ybUlEfSwKICAgICAgICAgICAgKTsKICAgIH0KCiAgICAjIGRvbid0IHNraXAgYW55IGZpZWxkcyBpbml0aWFsbHkgb3IgaWYgQUNMUHJlc2VsZWN0aW9uIGlzIGRpc2FibGVkCiAgICBteSAkQ29tcGxldGVSdW4gPSAkQ2FjaGVkVmlzaWJpbGl0eSA/IDAgOiAxOwoKICAgICMgc2hvcnRjdXQKICAgIG15ICRERlBhcmFtID0gJFBhcmFte0dldFBhcmFtfXtEeW5hbWljRmllbGR9OwoKICAgICMgVE9ETzogbmVlZGVkLCBiZWNhdXNlIENvbmZpZ0l0ZW1BY2wgdGFtcGVycyB3aXRoIHRoZSBEeW5hbWljRmllbGQgcmVmZXJlbmNlLCBpZiBDb25maWdJdGVtSUQgaXMgZ2l2ZW4KICAgIGZvciBteSAkTmFtZSAoIGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKiApIHsKICAgICAgICAkUGFyYW17R2V0UGFyYW19e0R5bmFtaWNGaWVsZH17ICdEeW5hbWljRmllbGRfJyAuICROYW1lIH0gLy89ICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfXsgJ0R5bmFtaWNGaWVsZF8nIC4gJE5hbWUgfTsgICAgIyBhbGwga2V5cyBoYXZlIHRvIGV4aXN0CiAgICB9CgogICAgIyB0cmFuc2Zvcm0gZHluYW1pYyBmaWVsZCBkYXRhIGludG8gREZOYW1lID0+IERGTmFtZSBwYWlyCiAgICBteSAlRHluYW1pY0ZpZWxkQWNsID0gbWFwIHsgJF8gPT4gJF8gfSBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRzfS0+JSo7CgogICAgbXkgJVVzZXJQcmVmZXJlbmNlczsKICAgIG15ICVWaXNpYmlsaXR5OwogICAgbXkgJFZpc0NoZWNrID0gMTsKCiAgICAjIGluIHRoZSBzcGVjaWFsIGNhc2Ugb2YgYXNzdW1pbmcgdmlzaWJsZSBmaWVsZHMgd2Ugc3RpbGwgd2FudCB0byBrbm93IHdoZXRoZXIgd2UgZG8gYSAkQ29tcGxldGVSdW4KICAgICMgYnV0IHdlIGRpc2NhcmQgYWxsIHZpc2liaWxpdHkgY2hlY2tzCiAgICAjIFRPRE86IERpc2NhcmQgaWYgb25seSB1c2VkIGluIFNldHMKICAgIGlmICggJFBhcmFte1Bvc3NpYmxlVmFsdWVzT25seX0gKSB7CiAgICAgICAgJFZpc0NoZWNrID0gMDsKCiAgICAgICAgIyB0cmVhdCBhbGwgZmllbGRzIGFzIGFsd2F5cyB2aXNpYmxlCiAgICAgICAgJENhY2hlZFZpc2liaWxpdHkgPSB7CiAgICAgICAgICAgIG1hcCB7ICdEeW5hbWljRmllbGRfJyAuICRfID0+IDEgfSBrZXlzICRQYXJhbXtEeW5hbWljRmllbGRzfS0+JSoKICAgICAgICB9OwogICAgfQoKICAgICMgaW4gdGhlIHN0YW5kYXJkIGNhc2UgYW5kIGlmIHdlIHVzZSBBQ0wtUHJlc2VsZWN0aW9uIG9ubHkgdmlzIGNoZWNrIGlmIG5lY2Vzc2FyeQogICAgZWxzaWYgKCAhJENvbXBsZXRlUnVuICkgewogICAgICAgICRWaXNDaGVjayA9IDA7CgogICAgICAgICMgY2hlY2sgd2hldGhlciBmb3JtLUFDTHMgYXJlIGFmZmVjdGVkIGJ5IGFueSBvZiB0aGUgY2hhbmdlZCBlbGVtZW50cwogICAgICAgIEVMRU1FTlQ6CiAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDaGFuZ2VkRWxlbWVudHN9IH0gKSB7CgogICAgICAgICAgICAjIGF1dG92aXZpZmljYXRpb24gY291bGQgYmUgYXZvaWRlZAogICAgICAgICAgICBpZiAoICRQYXJhbXtBQ0xQcmVzZWxlY3Rpb259e1J1bGVzfXtGb3JtfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAkVmlzQ2hlY2sgPSAxOwogICAgICAgICAgICAgICAgbGFzdCBFTEVNRU5UOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2lmICggISRQYXJhbXtBQ0xQcmVzZWxlY3Rpb259e0ZpZWxkc317JEVsZW1lbnR9ICkgewogICAgICAgICAgICAgICAgJFZpc0NoZWNrID0gMTsKICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRFbGVtZW50IG5vdCBkZWZpbmVkIGluIENvbmZpZ0l0ZW1BQ0wgcHJlc2VsZWN0aW9uIHJ1bGVzISIKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICBsYXN0IEVMRU1FTlQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgaWYgKCRWaXNDaGVjaykgewoKICAgICAgICAjIGNhbGwgY29uZmlnIGl0ZW0gQUNMcyBmb3IgRHluYW1pY0ZpZWxkcyB0byBjaGVjayBmaWVsZCB2aXNpYmlsaXR5CiAgICAgICAgbXkgJEFDTFJlc3VsdCA9ICRQYXJhbXtDb25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbUFjbCgKICAgICAgICAgICAgJXsgJFBhcmFte0dldFBhcmFtfSB9LAogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICRQYXJhbXtDb25maWdJdGVtSUR9LAogICAgICAgICAgICBBY3Rpb24gICAgICAgID0+ICRQYXJhbXtBY3Rpb259LAogICAgICAgICAgICBVc2VySUQgICAgICAgID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICBSZXR1cm5UeXBlICAgID0+ICdGb3JtJywKICAgICAgICAgICAgUmV0dXJuU3ViVHlwZSA9PiAnLScsCiAgICAgICAgICAgIERhdGEgICAgICAgICAgPT4gXCVEeW5hbWljRmllbGRBY2wsCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCRBQ0xSZXN1bHQpIHsKICAgICAgICAgICAgJVZpc2liaWxpdHkgPSBtYXAgeyAnRHluYW1pY0ZpZWxkXycgLiAkXyA9PiAwIH0ga2V5cyAkUGFyYW17RHluYW1pY0ZpZWxkc30tPiUqOwogICAgICAgICAgICBteSAlQWNsRGF0YSA9ICRQYXJhbXtDb25maWdJdGVtT2JqZWN0fS0+Q29uZmlnSXRlbUFjbERhdGEoKTsKICAgICAgICAgICAgZm9yIG15ICRGaWVsZCAoIHNvcnQga2V5cyAlQWNsRGF0YSApIHsKICAgICAgICAgICAgICAgICRWaXNpYmlsaXR5eyAnRHluYW1pY0ZpZWxkXycgLiAkRmllbGQgfSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICVWaXNpYmlsaXR5ID0gbWFwIHsgJ0R5bmFtaWNGaWVsZF8nIC4gJF8gPT4gMSB9IGtleXMgJFBhcmFte0R5bmFtaWNGaWVsZHN9LT4lKjsKICAgICAgICB9CgogICAgICAgICMgZ2V0IHVzZXIgcHJlZmVyZW5jZXMgZm9yIHBvc3NpYmxlIHVzZXIgZGVmYXVsdCB2YWx1ZXMKICAgICAgICBpZiAoICRQYXJhbXtVc2VySUR9ICkgewogICAgICAgICAgICAlVXNlclByZWZlcmVuY2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlVzZXInKS0+R2V0VXNlckRhdGEoCiAgICAgICAgICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQogICAgZWxzaWYgKCRDYWNoZWRWaXNpYmlsaXR5KSB7CiAgICAgICAgJVZpc2liaWxpdHkgPSAleyRDYWNoZWRWaXNpYmlsaXR5fTsKICAgIH0KCiAgICBteSAoICVGaWVsZHMsICVOZXdWYWx1ZXMsICVTZXRzICk7CiAgICBEWU5BTUlDRklFTEQ6CiAgICBmb3IgbXkgJER5bmFtaWNGaWVsZENvbmZpZyAoIHZhbHVlcyAkUGFyYW17RHluYW1pY0ZpZWxkc30tPiUqICkgewogICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIHVubGVzcyBJc0hhc2hSZWZXaXRoRGF0YSgkRHluYW1pY0ZpZWxkQ29uZmlnKTsKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoJER5bmFtaWNGaWVsZENvbmZpZyk7CgogICAgICAgIG15ICRERk5hbWUgICAgICAgICA9ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfTsKICAgICAgICBteSAkSXNBQ0xSZWR1Y2libGUgPSAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPkhhc0JlaGF2aW9yKAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICAgICAgQmVoYXZpb3IgICAgICAgICAgID0+ICdJc0FDTFJlZHVjaWJsZScsCiAgICAgICAgKTsKCiAgICAgICAgIyAxLiBoYW5kbGUgaGlkZGVuIGZpZWxkcwogICAgICAgIGlmICggJVZpc2liaWxpdHkgJiYgJFZpc2liaWxpdHl7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApIHsKCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEIGlmICggJENhY2hlZFZpc2liaWxpdHkgJiYgJENhY2hlZFZpc2liaWxpdHktPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9PSAwICk7CgogICAgICAgICAgICAjIHZhbHVlcyBvZiB2aXNpYmxlIGZpZWxkcyB0dXJuaW5nIGludmlzaWJsZSBhcmUgZGVsZXRlZCBvciBzZXQgdG8gdmFsdWVzIG9mIGNvbmZpZyBpdGVtIGRhdGEgaWYgcHJlc2VudAogICAgICAgICAgICBteSAkVXBkYXRlUmVxdWlyZWQgPSAhZGVmaW5lZCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID8gMCA6CiAgICAgICAgICAgICAgICByZWYoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKQogICAgICAgICAgICAgICAgPwogICAgICAgICAgICAgICAgKCBJc0FycmF5UmVmV2l0aERhdGEoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSA/IDEgOiAwICkKICAgICAgICAgICAgICAgIDoKICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPX4gbS9eLT8kLyA/IDAgOiAxOwoKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhOwogICAgICAgICAgICBpZiAoICEkUGFyYW17Tm9EZWZhdWx0VmFsdWV9ICkgewoKICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbmZpZ0l0ZW1EYXRhID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyktPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgICAgICAgICAgICAgICAgIENvbmZpZ0l0ZW1JRCAgPT4gJFBhcmFte0NvbmZpZ0l0ZW1JRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZHMgPT4gMSwKICAgICAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgICAgICBpZiAoIGRlZmluZWQgJENvbmZpZ0l0ZW1EYXRhLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICBteSAkVmFsdWVJc0RpZmZlcmVudCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+VmFsdWVJc0RpZmZlcmVudCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVmFsdWUxICAgICAgICAgICAgID0+ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZTIgICAgICAgICAgICAgPT4gJENvbmZpZ0l0ZW1EYXRhLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0sCiAgICAgICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJFZhbHVlSXNEaWZmZXJlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRVcGRhdGVSZXF1aXJlZCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkVXBkYXRlUmVxdWlyZWQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAjIGlmIHZhbHVlcyBhcmUgcHJlc2VudCwgRmllbGRSZXN0cmljdGlvbnMgaGF2ZSB0byBiZSBjaGVja2VkIGFnYWluIGZvciB0aGUgbmV3bHkgY2hhbmdlZCBlbGVtZW50cwogICAgICAgICAgICBpZiAoJFVwZGF0ZVJlcXVpcmVkKSB7CgogICAgICAgICAgICAgICAgIyBkZWxldGUgZW50cnkgYW5kIHJlbWVtYmVyIGNoYW5nZQogICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9IHJlZiggJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSApID8gW10gOiAnJzsKCiAgICAgICAgICAgICAgICAjIGNoZWNrIGlmIHdlIGhhdmUgYSBjb25maWcgaXRlbSBkYXRhIHZhbHVlIGFuZCB1c2UgdGhlbSwgaWYgc28KICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSAmJiAhJFBhcmFte05vRGVmYXVsdFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJENvbmZpZ0l0ZW1EYXRhLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyBmaWVsZHMgaGF2ZSB0byBiZSBhZGRlZCB0byBjb3JyZWN0bHkgcmVtb3ZlIGFsbCBjb250ZW50CiAgICAgICAgICAgICAgICBpZiAoICEkSXNBQ0xSZWR1Y2libGUgKSB7CiAgICAgICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgID0+IHVuZGVmLAogICAgICAgICAgICAgICAgICAgICAgICBOb3RBQ0xSZWR1Y2libGUgPT4gMSwKICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4ge30sCiAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQoKICAgICAgICAjIDIuIGhhbmRsZSBmaWVsZHMgd2hpY2ggc2V0IHRoZWlyIGR5bmFtaWMgY29udGVudCB0aGVtc2VsdmVzCiAgICAgICAgaWYgKAogICAgICAgICAgICAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPkhhc0JlaGF2aW9yKAogICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBCZWhhdmlvciAgICAgICAgICAgPT4gJ1NldHNEeW5hbWljQ29udGVudCcsCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKICAgICAgICAgICAgIyBwYXNzIGEgdW5pZm9ybSBPYmplY3RJRCB0byBHZXRGaWVsZFN0YXRlKCkgY2FsbAogICAgICAgICAgICAjIHRoZXJlIGFyZSBzdXBwb3NlZCB0byBiZSBtb3JlIGNhc2VzIGluIHRoZSBmdXR1cmUsIGFuZCBoYXZpbmcKICAgICAgICAgICAgIyBhIHVuaWZvcm0gT2JqZWN0SUQgc2hvdWxkIHJlZHVjZSBjb25kaXRpb25hbCBjb21wbGV4aXR5CiAgICAgICAgICAgICMgaW4gdGhlIERGIGRyaXZlcnMgd2hlcmUgbm90IG5lZWRlZAogICAgICAgICAgICBteSAkT2JqZWN0SUQgPSAkUGFyYW17Q29uZmlnSXRlbUlEfSAvLyAkUGFyYW17VGlja2V0SUR9OwoKICAgICAgICAgICAgbXkgJUNvbnRlbnQgPSAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPkdldEZpZWxkU3RhdGUoCiAgICAgICAgICAgICAgICAlUGFyYW0sCiAgICAgICAgICAgICAgICBPYmplY3RJRCAgICAgICAgICAgICAgICA9PiAkT2JqZWN0SUQsCiAgICAgICAgICAgICAgICBDYWNoZWRWaXNpYmlsaXR5ICAgICAgICA9PiAkQ2FjaGVkVmlzaWJpbGl0eSwKICAgICAgICAgICAgICAgIER5bmFtaWNGaWVsZENvbmZpZyAgICAgID0+ICREeW5hbWljRmllbGRDb25maWcsCiAgICAgICAgICAgICAgICBGaWVsZFJlc3RyaWN0aW9uc09iamVjdCA9PiAkU2VsZiwKICAgICAgICAgICAgKTsKCiAgICAgICAgICAgICMgY2hlY2sgaWYgYXV0b3NlbGVjdGlvbiBpcyBhY3RpdmF0ZWQgYW5kIGZpZWxkIGNoYW5nZWQgaW4gYW55IHdheQogICAgICAgICAgICBpZiAoICRDb250ZW50e1Bvc3NpYmxlVmFsdWVzfSAmJiAkUGFyYW17QXV0b3NlbGVjdH0gJiYgJFBhcmFte0F1dG9zZWxlY3R9e0R5bmFtaWNGaWVsZH17JERGTmFtZX0gKSB7CgogICAgICAgICAgICAgICAgbXkgJFNlbGVjdGVkID0gZXhpc3RzICRDb250ZW50e05ld1ZhbHVlfSA/ICRDb250ZW50e05ld1ZhbHVlfSA6ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CgogICAgICAgICAgICAgICAgbXkgJEF1dG9zZWxlY3RlZCA9ICRTZWxmLT5BdXRvc2VsZWN0KAogICAgICAgICAgICAgICAgICAgIEN1cnJlbnQgICAgICAgID0+ICRTZWxlY3RlZCwKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkQ29udGVudHtQb3NzaWJsZVZhbHVlc30sCiAgICAgICAgICAgICAgICApOwoKICAgICAgICAgICAgICAgIGlmICggZGVmaW5lZCAkQXV0b3NlbGVjdGVkICkgewogICAgICAgICAgICAgICAgICAgICRDb250ZW50e05ld1ZhbHVlfSA9ICRBdXRvc2VsZWN0ZWQ7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgc2V0IG5ldyB2YWx1ZSBpZiBuZWNlc3NhcnkKICAgICAgICAgICAgaWYgKCBleGlzdHMgJENvbnRlbnR7TmV3VmFsdWV9ICkgewogICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9ICRDb250ZW50e05ld1ZhbHVlfTsKICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQ29udGVudHtOZXdWYWx1ZX07CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGlmICggZXhpc3RzICRDb250ZW50e1Bvc3NpYmxlVmFsdWVzfSApIHsKICAgICAgICAgICAgICAgICRGaWVsZHN7JERGTmFtZX0gPSB7CiAgICAgICAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXMgPT4gJENvbnRlbnR7UG9zc2libGVWYWx1ZXN9LAogICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNpZiAoIGV4aXN0cyAkQ29udGVudHtTZXRzfSApIHsKICAgICAgICAgICAgICAgICVTZXRzID0gKAogICAgICAgICAgICAgICAgICAgICVTZXRzLAogICAgICAgICAgICAgICAgICAgICRDb250ZW50e1NldHN9LT4lKiwKICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzaWYgKCBleGlzdHMgJENvbnRlbnR7TmV3VmFsdWV9ICkgewogICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgTm90QUNMUmVkdWNpYmxlID0+IDEsCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CgogICAgICAgICAgICBpZiAoICRDb250ZW50e1Zpc2liaWxpdHl9ICkgewogICAgICAgICAgICAgICAgJVZpc2liaWxpdHkgPSAoCiAgICAgICAgICAgICAgICAgICAgJVZpc2liaWxpdHksCiAgICAgICAgICAgICAgICAgICAgJENvbnRlbnR7VmlzaWJpbGl0eX0tPiUqLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgfQoKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCBpZiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57UmVhZG9ubHl9OwoKICAgICAgICAjIDMuIHNraXAgbm9uIEFDTCByZWR1Y2libGUgZmllbGRzLi4uCiAgICAgICAgaWYgKCAhJElzQUNMUmVkdWNpYmxlICkgewoKICAgICAgICAgICAgIyAuLi5idXQgc2V0IGFjdHVhbCBvciBkZWZhdWx0IHZhbHVlcyBvZiByZWFwcGVhcmluZyBmaWVsZHMgZmlyc3QKICAgICAgICAgICAgaWYgKCAkQ2FjaGVkVmlzaWJpbGl0eSAmJiAkQ2FjaGVkVmlzaWJpbGl0eS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID09IDAgKSB7CgogICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgICAgICAgICBteSAkQ29uZmlnSXRlbURhdGEgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nKS0+Q29uZmlnSXRlbUdldCgKICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkcyA9PiAxLAogICAgICAgICAgICAgICAgICAgICk7CgogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFte05vRGVmYXVsdFZhbHVlfSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICRGaWVsZHN7IiRERk5hbWUifSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBEWU5BTUlDRklFTEQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGVsc2lmICggZGVmaW5lZCAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSApIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICAgICAgJEZpZWxkc3skREZOYW1lfSA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzICA9PiB1bmRlZiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgICAgICAgICBuZXh0IERZTkFNSUNGSUVMRDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRVc2VyUHJlZmVyZW5jZXN7IlVzZXJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkVXNlclByZWZlcmVuY2VzeyJVc2VyRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNpZiAoIGRlZmluZWQgJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyAgPT4gdW5kZWYsCiAgICAgICAgICAgICAgICAgICAgICAgIE5vdEFDTFJlZHVjaWJsZSA9PiAxLAogICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIG5leHQgRFlOQU1JQ0ZJRUxEOwogICAgICAgIH0KCiAgICAgICAgbXkgJENoZWNrQUNMcyA9IDE7CgogICAgICAgICMgNC4gaGFuZGxlIGFsbCBzdGFuZGFyZCBBQ0wgcmVkdWNpYmxlIGZpZWxkcwogICAgICAgICMgZXZhbHVhdGUgcHJlc2VsZWN0aW9uCiAgICAgICAgaWYgKCAhJENvbXBsZXRlUnVuICkgewogICAgICAgICAgICBpZiAoICEkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtGaWVsZHN9eyAnRHluYW1pY0ZpZWxkXycgLiAkREZOYW1lIH0gKSB7CgogICAgICAgICAgICAgICAgIyBubyB3YXkgdG8gdGVsbCBpZiB0aGVyZSBhcmUgYWNscyB3aGljaCBjb25uZWN0IHRoZSBjaGFuZ2VkIGVsZW1lbnQgdG8gdGhlIGFmZmVjdGVkIGZpZWxkCiAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJEeW5hbWljRmllbGRfJERGTmFtZSBub3QgZGVmaW5lZCBpbiBDb25maWdJdGVtQUNMIHByZXNlbGVjdGlvbiBydWxlcyEiCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgJENoZWNrQUNMcyA9IDA7CgogICAgICAgICAgICAgICAgIyBjaGVjayBhY2xzIGlmLi4uCiAgICAgICAgICAgICAgICAjIC4uLmEgZmllbGQgcmVhcHBlYXJzOiBwb3NzaWJsZSB2YWx1ZXMgaGF2ZSB0byBiZSByZWNhbGN1bGF0ZWQ7CiAgICAgICAgICAgICAgICBpZiAoICRDYWNoZWRWaXNpYmlsaXR5ICYmICRDYWNoZWRWaXNpYmlsaXR5LT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1EYXRhOwogICAgICAgICAgICAgICAgICAgIGlmICggJFBhcmFte0NvbmZpZ0l0ZW1JRH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRDb25maWdJdGVtRGF0YSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpLT5Db25maWdJdGVtR2V0KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJJRCAgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAjIHRha2UgdGhlIGNvbmZpZyBpdGVtIG9yIGRlZmF1bHQgdmFsdWUgYW5kIHB1dCBpdCBhbHNvIGludG8gTmV3VmFsdWVzCiAgICAgICAgICAgICAgICAgICAgIyBpbiB0aGUgdW5saWtlbHkgY2FzZSB0aGF0IHRoZXkgd2lsbCBiZSBkZWxldGVkIGFnYWluLCB0aGlzIHdpbGwganVzdCBjYXVzZSBhIHJlZHVuZGFudCBzZWNvbmQgcnVuCiAgICAgICAgICAgICAgICAgICAgaWYgKCBkZWZpbmVkICRDb25maWdJdGVtRGF0YS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJENvbmZpZ0l0ZW1EYXRhLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQ29uZmlnSXRlbURhdGEtPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICRVc2VyUHJlZmVyZW5jZXN7IlVzZXJEeW5hbWljRmllbGRfJERGTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJFVzZXJQcmVmZXJlbmNlc3siVXNlckR5bmFtaWNGaWVsZF8kREZOYW1lIn07CiAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkVXNlclByZWZlcmVuY2VzeyJVc2VyRHluYW1pY0ZpZWxkXyRERk5hbWUifTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCBkZWZpbmVkICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e0RlZmF1bHRWYWx1ZX0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtEZWZhdWx0VmFsdWV9OwogICAgICAgICAgICAgICAgICAgICAgICAkTmV3VmFsdWVzeyJEeW5hbWljRmllbGRfJERGTmFtZSJ9ID0gJER5bmFtaWNGaWVsZENvbmZpZy0+e0NvbmZpZ317RGVmYXVsdFZhbHVlfTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyAuLi5hdXRvc2VsZWN0IGlzIHR1cm5lZCBvbiBmb3IgdGhlIGNoYW5nZWQgZmllbGQgKHJlZmlsbCBhIGZpZWxkIGVtcHRpZWQgYnkgaGFuZCkKICAgICAgICAgICAgICAgIGVsc2lmICgKICAgICAgICAgICAgICAgICAgICAkUGFyYW17QXV0b3NlbGVjdH0KICAgICAgICAgICAgICAgICAgICAmJiAkUGFyYW17QXV0b3NlbGVjdH17RHluYW1pY0ZpZWxkfXskREZOYW1lfQogICAgICAgICAgICAgICAgICAgICYmICRQYXJhbXtDaGFuZ2VkRWxlbWVudHN9eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9CiAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICRDaGVja0FDTHMgPSAxOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIEVMRU1FTlQ6CiAgICAgICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50ICggc29ydCBrZXlzICV7ICRQYXJhbXtDaGFuZ2VkRWxlbWVudHN9IH0gKSB7CgogICAgICAgICAgICAgICAgICAgICAgICAjIC4uLnRoZSBjaGFuZ2VkIGVsZW1lbnQgYWZmZWN0cyB0aGUgY3VycmVudCBmaWVsZAogICAgICAgICAgICAgICAgICAgICAgICBpZiAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkUGFyYW17QUNMUHJlc2VsZWN0aW9ufXtSdWxlc317Q29uZmlnSXRlbX17JEVsZW1lbnR9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7ICdEeW5hbWljRmllbGRfJyAuICRERk5hbWUgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKQogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3QgRUxFTUVOVDsKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgIyAuLi50aGUgZWxlbWVudCBpcyBub3QgZGVmaW5lZCBpbiB0aGUgY2FjaGUgYW5kIHRodXMgdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgaWYgdGhlcmUgYXJlIGFjbHMgd2hpY2ggY29ubmVjdCBpdCB0byB0aGUgYWZmZWN0ZWQgZmllbGQKICAgICAgICAgICAgICAgICAgICAgICAgZWxzaWYgKCAhJFBhcmFte0FDTFByZXNlbGVjdGlvbn17RmllbGRzfXskRWxlbWVudH0gKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkQ2hlY2tBQ0xzID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdkZWJ1ZycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIiRFbGVtZW50IG5vdCBkZWZpbmVkIGluIENvbmZpZ0l0ZW1BQ0wgcHJlc2VsZWN0aW9uIHJ1bGVzISIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0IEVMRU1FTlQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgICMgaWYgbm90aGluZyBjaGFuZ2VkLCBvbWl0IHRoaXMgZmllbGQKICAgICAgICBuZXh0IERZTkFNSUNGSUVMRCB1bmxlc3MgJENoZWNrQUNMczsKCiAgICAgICAgIyBlbHNlIGNoZWNrIEFDTHMKICAgICAgICBteSAkUG9zc2libGVWYWx1ZXMgPSAkUGFyYW17RHluYW1pY0ZpZWxkQmFja2VuZE9iamVjdH0tPlBvc3NpYmxlVmFsdWVzR2V0KAogICAgICAgICAgICBEeW5hbWljRmllbGRDb25maWcgPT4gJER5bmFtaWNGaWVsZENvbmZpZywKICAgICAgICApOwoKICAgICAgICAjIGNvbnZlcnQgcG9zc2libGUgdmFsdWVzIGtleSA9PiB2YWx1ZSB0byBrZXkgPT4ga2V5IGZvciBBQ0xzIHVzaW5nIGEgSGFzaCBzbGljZQogICAgICAgIG15ICVBY2xEYXRhID0gJXskUG9zc2libGVWYWx1ZXN9OwogICAgICAgIEBBY2xEYXRheyBrZXlzICVBY2xEYXRhIH0gPSBrZXlzICVBY2xEYXRhOwoKICAgICAgICAjIHNldCBwb3NzaWJsZSB2YWx1ZXMgZmlsdGVyIGZyb20gQUNMcwogICAgICAgIG15ICRBQ0wgPSAkUGFyYW17Q29uZmlnSXRlbU9iamVjdH0tPkNvbmZpZ0l0ZW1BY2woCiAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX0gfSwKICAgICAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICAgICAgQWN0aW9uICAgICAgICA9PiAkUGFyYW17QWN0aW9ufSwKICAgICAgICAgICAgVXNlcklEICAgICAgICA9PiAkUGFyYW17VXNlcklEfSwKICAgICAgICAgICAgUmV0dXJuVHlwZSAgICA9PiAnQ29uZmlnSXRlbScsCiAgICAgICAgICAgIFJldHVyblN1YlR5cGUgPT4gJ0R5bmFtaWNGaWVsZF8nIC4gJERGTmFtZSwKICAgICAgICAgICAgRGF0YSAgICAgICAgICA9PiBcJUFjbERhdGEsCiAgICAgICAgKTsKICAgICAgICBpZiAoJEFDTCkgewogICAgICAgICAgICBteSAlRmlsdGVyID0gJFBhcmFte0NvbmZpZ0l0ZW1PYmplY3R9LT5Db25maWdJdGVtQWNsRGF0YSgpOwoKICAgICAgICAgICAgIyBjb252ZXJ0IEZpbHRlciBrZXkgPT4ga2V5IGJhY2sgdG8ga2V5ID0+IHZhbHVlIHVzaW5nIG1hcAogICAgICAgICAgICAleyRQb3NzaWJsZVZhbHVlc30gPSBtYXAgeyAkXyA9PiAkUG9zc2libGVWYWx1ZXMtPnskX30gfSBrZXlzICVGaWx0ZXI7CiAgICAgICAgfQoKICAgICAgICAkRmllbGRzeyRERk5hbWV9ID0gewogICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgfTsKCiAgICAgICAgIyBjaGVjayB3aGV0aGVyIGFsbCBzZWxlY3RlZCBlbnRyaWVzIGFyZSBzdGlsbCB2YWxpZAogICAgICAgIGlmICgKICAgICAgICAgICAgZGVmaW5lZCAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9CiAgICAgICAgICAgICYmCiAgICAgICAgICAgICgKICAgICAgICAgICAgICAgICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0KICAgICAgICAgICAgICAgIHx8ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gZXEgJzAnCiAgICAgICAgICAgICkKICAgICAgICAgICAgKQogICAgICAgIHsKCiAgICAgICAgICAgICMgbXVsdGlzZWxlY3QgYW5kIC12YWx1ZSBmaWVsZHMKICAgICAgICAgICAgaWYgKCByZWYoICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gKSApIHsKICAgICAgICAgICAgICAgIFNFTEVDVEVEOgogICAgICAgICAgICAgICAgZm9yIG15ICRTZWxlY3RlZCAoIEB7ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gfSApIHsKCiAgICAgICAgICAgICAgICAgICAgIyBza2lwIGVtcHR5IHZhbHVlcyAocG9zc2libGUgb25seSBmb3IgbXVsdGl2YWx1ZSkKICAgICAgICAgICAgICAgICAgICBuZXh0IFNFTEVDVEVEIGlmICFkZWZpbmVkICRTZWxlY3RlZDsKCiAgICAgICAgICAgICAgICAgICAgIyBpZiBhIHNlbGVjdGVkIHZhbHVlIGlzIG5vdCBwb3NzaWJsZSBhbnltb3JlCiAgICAgICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnskU2VsZWN0ZWR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoICREeW5hbWljRmllbGRDb25maWctPntDb25maWd9e011bHRpVmFsdWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJE5ld1ZhbHVlc3siRHluYW1pY0ZpZWxkXyRERk5hbWUifSA9IFsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXAgeyBkZWZpbmVkICRfICYmICFkZWZpbmVkICRQb3NzaWJsZVZhbHVlcy0+eyRffSA/IHVuZGVmIDogJF8gfSAkREZQYXJhbS0+eyJEeW5hbWljRmllbGRfJERGTmFtZSJ9LT5AKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSBbCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JlcCB7IGRlZmluZWQgJFBvc3NpYmxlVmFsdWVzLT57JFNlbGVjdGVkfSB9ICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0tPkAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBdOwogICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICAgICBsYXN0IFNFTEVDVEVEOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzaW5nbGVzZWxlY3QgZmllbGRzCiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkUG9zc2libGVWYWx1ZXMtPnsgJERGUGFyYW0tPnsiRHluYW1pY0ZpZWxkXyRERk5hbWUifSB9ICkgewogICAgICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgIyBhdXRvc2VsZWN0IGlmIGFwcGxpY2FibGUKICAgICAgICBpZiAoICRQYXJhbXtBdXRvc2VsZWN0fSAmJiAkUGFyYW17QXV0b3NlbGVjdH17RHluYW1pY0ZpZWxkfXskREZOYW1lfSApIHsKCiAgICAgICAgICAgIG15ICRTZWxlY3RlZCA9ICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0KICAgICAgICAgICAgICAgIC8vICRERlBhcmFtLT57IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gLy8gJyc7CgogICAgICAgICAgICBteSAkQXV0b3NlbGVjdGVkID0gJFNlbGYtPkF1dG9zZWxlY3QoCiAgICAgICAgICAgICAgICBDdXJyZW50ICAgICAgICA9PiAkU2VsZWN0ZWQsCiAgICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiAkUG9zc2libGVWYWx1ZXMsCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBpZiAoIGRlZmluZWQgJEF1dG9zZWxlY3RlZCApIHsKICAgICAgICAgICAgICAgICROZXdWYWx1ZXN7IkR5bmFtaWNGaWVsZF8kREZOYW1lIn0gPSAkQXV0b3NlbGVjdGVkOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgICMgY2FjaGUgdGhlIG5ldyB2aXNpYmlsaXR5CiAgICBpZiAoICRQYXJhbXtBQ0xQcmVzZWxlY3Rpb259ICYmICRWaXNDaGVjayAmJiAhZXhpc3RzICRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fSApIHsKICAgICAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+U2V0KAogICAgICAgICAgICBUeXBlICA9PiAnSGlkZGVuRmllbGRzJywKICAgICAgICAgICAgS2V5ICAgPT4gJFBhcmFte0Zvcm1JRH0sCiAgICAgICAgICAgIFZhbHVlID0+IHslVmlzaWJpbGl0eX0sCiAgICAgICAgICAgIFRUTCAgID0+IDYwICogMjAsICAgICAgICAgICMgMjAgbWluCiAgICAgICAgKTsKICAgIH0KCiAgICBlbHNpZiAoICRWaXNDaGVjayAmJiBleGlzdHMgJFBhcmFte0NhY2hlZFZpc2liaWxpdHl9ICkgewogICAgICAgICRQYXJhbXtDYWNoZWRWaXNpYmlsaXR5fSA9IFwlVmlzaWJpbGl0eTsKICAgIH0KCiAgICAjIGlmIGFkZGl0aW9uYWwgZWxlbWVudHMgYXJlIGNoYW5nZWQgYnkgdGhlIHJvdXRpbmUsIHJlY3Vyc2l2ZWx5IGNhbGwgR2V0RmllbGRTdGF0ZXMsIHVudGlsIGFsbCBkZXBlbmRlbmNpZXMgYXJlIHdvcmtlZCB0aHJvdWdoCiAgICBpZiAoJU5ld1ZhbHVlcykgewoKICAgICAgICBteSAlUmVjdSA9ICRTZWxmLT5HZXRGaWVsZFN0YXRlcygKICAgICAgICAgICAgJVBhcmFtLAogICAgICAgICAgICBHZXRQYXJhbSA9PiB7CiAgICAgICAgICAgICAgICAleyAkUGFyYW17R2V0UGFyYW19IH0sCiAgICAgICAgICAgICAgICBEeW5hbWljRmllbGQgPT4gewogICAgICAgICAgICAgICAgICAgICV7ICRQYXJhbXtHZXRQYXJhbX17RHluYW1pY0ZpZWxkfSB9LAogICAgICAgICAgICAgICAgICAgICVOZXdWYWx1ZXMsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICBDaGFuZ2VkRWxlbWVudHMgPT4geyBtYXAgeyAkXyA9PiAxIH0ga2V5cyAlTmV3VmFsdWVzIH0sCiAgICAgICAgKTsKCiAgICAgICAgIyBjb21iaW5lIHRoZSB2aXNpYmlsaXR5LCBpbm5lciB2YWx1ZXMgdGFrZSBwcmVjZWRlbmNlCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFJlY3V7VmlzaWJpbGl0eX0gKSApIHsKICAgICAgICAgICAgJVZpc2liaWxpdHkgPSAoCiAgICAgICAgICAgICAgICAlVmlzaWJpbGl0eSwKICAgICAgICAgICAgICAgICV7ICRSZWN1e1Zpc2liaWxpdHl9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQoKICAgICAgICAjIGNvbWJpbmUgdGhlIGZpZWxkIGluZm8sIGlubmVyIHZhbHVlcyB0YWtlIHByZWNlZGVuY2UKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkUmVjdXtGaWVsZHN9ICkgKSB7CiAgICAgICAgICAgICVGaWVsZHMgPSAoCiAgICAgICAgICAgICAgICAlRmllbGRzLAogICAgICAgICAgICAgICAgJXsgJFJlY3V7RmllbGRzfSB9LAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBjb21iaW5lIGFsbCBjaGFuZ2VkIGVsZW1lbnRzCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFJlY3V7TmV3VmFsdWVzfSApICkgewogICAgICAgICAgICAlTmV3VmFsdWVzID0gKAogICAgICAgICAgICAgICAgJU5ld1ZhbHVlcywKICAgICAgICAgICAgICAgICV7ICRSZWN1e05ld1ZhbHVlc30gfSwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgZmluYWxseSB0YWtlIGNhcmUgb2Ygc2V0IGluZm9ybWF0aW9uCiAgICAgICAgaWYgKCBJc0hhc2hSZWZXaXRoRGF0YSggJFJlY3V7U2V0c30gKSApIHsKICAgICAgICAgICAgJVNldHMgPSAoCiAgICAgICAgICAgICAgICAlU2V0cywKICAgICAgICAgICAgICAgICV7ICRSZWN1e1NldHN9IH0sCiAgICAgICAgICAgICk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAoCiAgICAgICAgRmllbGRzICAgICA9PiBcJUZpZWxkcywKICAgICAgICBWaXNpYmlsaXR5ID0+IFwlVmlzaWJpbGl0eSwKICAgICAgICBOZXdWYWx1ZXMgID0+IFwlTmV3VmFsdWVzLAogICAgICAgIFNldHMgICAgICAgPT4gXCVTZXRzLAogICAgKTsKfQoKPWhlYWQyIEF1dG9zZWxlY3QoKQoKQXV0b3NlbGVjdHMgYSB2YWx1ZSBpZiB0aGUgY3VycmVudCBzZWxlY3Rpb24gaXMgZW1wdHkgYW5kIG9ubHkgb25lIHZhbGlkIG9wdGlvbiBpcyBwcmVzZW50LCBlbHNlIHVuZGVmIGlzIHJldHVybmVkCgogICAgbXkgJFNlbGVjdGVkID0gJEZpZWxkUmVzdHJpY3Rpb25zT2JqZWN0LT5BdXRvc2VsZWN0KAogICAgICAgIEN1cnJlbnQgICAgICAgID0+ICRWYWx1ZSwgICAjIHVuZGVmLCAnJywgb3IgW10KICAgICAgICBQb3NzaWJsZVZhbHVlcyA9PiB7fSwKICAgICk7Cgo9Y3V0CgpzdWIgQXV0b3NlbGVjdCB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgcmV0dXJuLCBpZiBhbHJlYWR5IGZpbGxlZCAoICcwJyBpcyB2YWxpZCEgKQogICAgaWYgKAogICAgICAgIGRlZmluZWQgJFBhcmFte0N1cnJlbnR9CiAgICAgICAgJiYgKCAoICFyZWYoICRQYXJhbXtDdXJyZW50fSApICYmICRQYXJhbXtDdXJyZW50fSAhfiAvXi0/JC8gKSB8fCBJc0FycmF5UmVmV2l0aERhdGEoICRQYXJhbXtDdXJyZW50fSApICkKICAgICAgICApCiAgICB7CiAgICAgICAgcmV0dXJuIHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoU3Vicm91dGluZXM6OlByb2hpYml0RXhwbGljaXRSZXR1cm5VbmRlZikKICAgIH0KCiAgICAjIGNoZWNrIHBvc3NpYmxlIHZhbHVlcwogICAgaWYgKCAhJFBhcmFte1Bvc3NpYmxlVmFsdWVzfSApIHsKICAgICAgICByZXR1cm4gdW5kZWY7ICAgICMjIG5vIGNyaXRpYyBxdyhTdWJyb3V0aW5lczo6UHJvaGliaXRFeHBsaWNpdFJldHVyblVuZGVmKQogICAgfQogICAgaWYgKCByZWYoICRQYXJhbXtQb3NzaWJsZVZhbHVlc30gKSBuZSAnSEFTSCcgKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJQb3NzaWJsZVZhbHVlcyBoYXMgdG8gYmUgYSBIYXNoIHJlZiEiCiAgICAgICAgKTsKICAgICAgICByZXR1cm4gdW5kZWY7ICAgICMjIG5vIGNyaXRpYyBxdyhTdWJyb3V0aW5lczo6UHJvaGliaXRFeHBsaWNpdFJldHVyblVuZGVmKQogICAgfQoKICAgIG15ICggJFZhbGlkS2V5cywgJFVzZWRLZXkgKTsKICAgIGZvciBteSAkS2V5ICggc29ydCBrZXlzICV7ICRQYXJhbXtQb3NzaWJsZVZhbHVlc30gfSApIHsKCiAgICAgICAgIyBleGNsdWRlIGVtcHR5IHZhbHVlczsgJy0nIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogICAgICAgIGlmICggJEtleSAhfiAvXi0/JC8gKSB7CiAgICAgICAgICAgIGlmICggKyskVmFsaWRLZXlzID4gMSApIHsKICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZjsgICAgIyMgbm8gY3JpdGljIHF3KFN1YnJvdXRpbmVzOjpQcm9oaWJpdEV4cGxpY2l0UmV0dXJuVW5kZWYpCiAgICAgICAgICAgIH0KICAgICAgICAgICAgJFVzZWRLZXkgPSAkS2V5OwogICAgICAgIH0KICAgIH0KICAgIGlmICggISRWYWxpZEtleXMgKSB7CiAgICAgICAgcmV0dXJuIHVuZGVmOyAgICAjIyBubyBjcml0aWMgcXcoU3Vicm91dGluZXM6OlByb2hpYml0RXhwbGljaXRSZXR1cm5VbmRlZikKICAgIH0gICAgIyBlbHNlICRWYWxpZEtleXMgPT0gMSA9PiBhdXRvc2VsZWN0CgogICAgIyBmaWxsIHRoZSBmaWVsZCBpZiBhbmQgYWRkIGl0IHRvIHRoZSBjaGFuZ2VkIGVsZW1lbnRzCiAgICBpZiAoIHJlZiggJFBhcmFte0N1cnJlbnR9ICkgKSB7CiAgICAgICAgcmV0dXJuIFskVXNlZEtleV07CiAgICB9CiAgICBlbHNlIHsKICAgICAgICByZXR1cm4gJFVzZWRLZXk7CiAgICB9Cgp9Cgo9aGVhZDIgU2V0QUNMUHJlc2VsZWN0aW9uQ2FjaGUoKQoKQ2FsY3VsYXRlcyBhbmQgc3RvcmVzIHNpbXBsZSBmaWVsZCByZWxhdGlvbnMgYW5kIGdyb3VwcyBBQ0xzIHZpYSB0aGVpciBvdXRwdXQgdHlwZXMgdG8gcHJlc2VsZWN0IHRoZW0gd2hlbiB1c2VkLCBsYXRlciBvbgoKICAgIG15ICRBQ0xQcmVzZWxlY3Rpb24gPSAkQ29uZmlnSXRlbU9iamVjdC0+U2V0QUNMUHJlc2VsZWN0aW9uQ2FjaGUoKTsKCj1jdXQKCnN1YiBTZXRBQ0xQcmVzZWxlY3Rpb25DYWNoZSB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgIG15ICRBY2xzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdDb25maWdJdGVtQWNsJyk7CgogICAgIyBzdGFuZGFyZCBmaWVsZHMKICAgIG15ICVGaWVsZHMgPSAoCiAgICAgICAgRGVwbFN0YXRlID0+ICdEZXBsU3RhdGUnLAogICAgICAgIEluY2lTdGF0ZSA9PiAnSW5jaVN0YXRlJywKICAgICk7CgogICAgIyBkeW5hbWljIGZpZWxkcwogICAgbXkgJER5bmFtaWNGaWVsZE9iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnKTsKICAgIGZvciBteSAkRHluYW1pY0ZpZWxkTmFtZSAoIHZhbHVlcyAleyAkRHluYW1pY0ZpZWxkT2JqZWN0LT5EeW5hbWljRmllbGRMaXN0KCBSZXN1bHRUeXBlID0+ICdIQVNIJyApIH0gKSB7CiAgICAgICAgJEZpZWxkc3siRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGROYW1lIn0gPSAiRHluYW1pY0ZpZWxkXyREeW5hbWljRmllbGROYW1lIjsKICAgIH0KCiAgICBteSAlUHJlc2VsZWN0aW9uUnVsZXM7CgogICAgIyBwYXJzZSBBY2xzCiAgICBBQ0w6CiAgICBmb3IgbXkgJEFDTCAoIHZhbHVlcyAleyRBY2xzfSApIHsKCiAgICAgICAgIyBnZXQgY29udHJvbGxpbmcgZWxlbWVudHMgKEVsZW1lbnRDaGFuZ2VkIGxhdGVyIG9uKQogICAgICAgIG15ICVDb250cm9sbGVyOwogICAgICAgIGZvciBteSAkUHJvcGVydGllc0hhc2ggKHF3KFByb3BlcnRpZXMgUHJvcGVydGllc0RhdGFiYXNlKSkgewogICAgICAgICAgICBpZiAoICRBQ0wtPnskUHJvcGVydGllc0hhc2h9e0NvbmZpZ0l0ZW19ICkgewogICAgICAgICAgICAgICAgTkFNRToKICAgICAgICAgICAgICAgIGZvciBteSAkTmFtZSAoIHNvcnQga2V5cyAleyAkQUNMLT57JFByb3BlcnRpZXNIYXNofXtDb25maWdJdGVtfSB9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGaWVsZHN7JE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGaWVsZCAkTmFtZSB1c2VkIGluIEFDTHMsIGlzIG5vdCBkZWZpbmVkISIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBOQU1FOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ29udHJvbGxlcnskTmFtZX0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICggJEFDTC0+eyRQcm9wZXJ0aWVzSGFzaH17RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgICAgIE5BTUU6CiAgICAgICAgICAgICAgICBmb3IgbXkgJE5hbWUgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRQcm9wZXJ0aWVzSGFzaH17RHluYW1pY0ZpZWxkfSB9ICkgewogICAgICAgICAgICAgICAgICAgIGlmICggISRGaWVsZHN7JE5hbWV9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGaWVsZCAkTmFtZSB1c2VkIGluIEFDTHMsIGlzIG5vdCBkZWZpbmVkISIKICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCBOQU1FOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAkQ29udHJvbGxlcnskTmFtZX0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgICAgIGZvciBteSAkRmllbGQgKHF3L0RlcGxTdGF0ZSBJbmNpU3RhdGUvKSB7CiAgICAgICAgICAgICAgICBpZiAoICRBQ0wtPnskUHJvcGVydGllc0hhc2h9eyRGaWVsZH0gKSB7CiAgICAgICAgICAgICAgICAgICAgJENvbnRyb2xsZXJ7JEZpZWxkfSA9IDE7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgaWYgKCAhJUNvbnRyb2xsZXIgKSB7IG5leHQgQUNMIH0KCiAgICAgICAgIyBnZXQgYWZmZWN0ZWQgZWxlbWVudHMKICAgICAgICBmb3IgbXkgJEltcGFjdCAocXcoUG9zc2libGUgUG9zc2libGVBZGQgUG9zc2libGVOb3QpKSB7CgogICAgICAgICAgICAjIENvbmZpZ0l0ZW0gUnVsZXMKICAgICAgICAgICAgaWYgKCAkQUNMLT57JEltcGFjdH17Q29uZmlnSXRlbX0gKSB7CiAgICAgICAgICAgICAgICBBRkZFQ1RFRDoKICAgICAgICAgICAgICAgIGZvciBteSAkQWZmZWN0ZWQgKCBzb3J0IGtleXMgJXsgJEFDTC0+eyRJbXBhY3R9e0NvbmZpZ0l0ZW19IH0gKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJEZpZWxkc3skQWZmZWN0ZWR9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdpbmZvJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJGaWVsZCAkQWZmZWN0ZWQgdXNlZCBpbiBBQ0xzLCBpcyBub3QgZGVmaW5lZCEiCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgQUZGRUNURUQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudENoYW5nZWQgKCBzb3J0IGtleXMgJUNvbnRyb2xsZXIgKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICRQcmVzZWxlY3Rpb25SdWxlc3tDb25maWdJdGVtfXsgJEZpZWxkc3skRWxlbWVudENoYW5nZWR9IH17ICRGaWVsZHN7JEFmZmVjdGVkfSB9ID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgRm9ybSBSdWxlcwogICAgICAgICAgICBpZiAoICRBQ0wtPnskSW1wYWN0fS0+e0Zvcm19ICkgewogICAgICAgICAgICAgICAgZm9yIG15ICRFbGVtZW50Q2hhbmdlZCAoIHNvcnQga2V5cyAlQ29udHJvbGxlciApIHsKICAgICAgICAgICAgICAgICAgICAkUHJlc2VsZWN0aW9uUnVsZXN7Rm9ybX17ICRGaWVsZHN7JEVsZW1lbnRDaGFuZ2VkfSB9ID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICB9CgogICAgfQoKICAgIG15ICRSZXR1cm4gPSB7CiAgICAgICAgRmllbGRzID0+IHsgbWFwIHsgJF8gPT4gMSB9ICggdmFsdWVzICVGaWVsZHMgKSB9LAogICAgICAgIFJ1bGVzICA9PiBcJVByZXNlbGVjdGlvblJ1bGVzLAogICAgfTsKCiAgICAkU2VsZi0+e0NhY2hlT2JqZWN0fS0+U2V0KAogICAgICAgIFR5cGUgID0+ICdDb25maWdJdGVtQUNMJywgICAgICAgIyBvbmx5IFthLXpBLVowLTlfXSBjaGFycyB1c2FibGUKICAgICAgICBLZXkgICA9PiAnUHJlc2VsZWN0aW9uJywKICAgICAgICBWYWx1ZSA9PiAkUmV0dXJuLAogICAgICAgIFRUTCAgID0+IDYwICogNjAgKiAyNCAqIDEwMCwgICAgIyBzZWNvbmRzLCB0aGlzIG1lYW5zIDEwMCBkYXlzCiAgICApOwoKICAgIHJldHVybiAkUmV0dXJuOwoKfQoKMTsK</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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TWFzazsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGZpcnN0KTsKCnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyg6YWxsKTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6Q29uZmlnJywKICAgICdLZXJuZWw6OlN5c3RlbTo6RHluYW1pY0ZpZWxkOjpCYWNrZW5kJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKICAgICdLZXJuZWw6OlN5c3RlbTo6WUFNTCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkRCJywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06Ok1hc2sgLSBmdW5jdGlvbnMgdG8gcHJlcGFyZSBhbmQgYWRtaW5pc3RyYXRlIGNvbmZpZyBpdGVtIG1hc2tzCgo9aGVhZDEgREVTQ1JJUFRJT04KCmZ1bmN0aW9ucyB0byBwcmVwYXJlIGFuZCBhZG1pbmlzdHJhdGUgY29uZmlnIGl0ZW0gbWFza3MKCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCkRvbid0IHVzZSB0aGUgY29uc3RydWN0b3IgZGlyZWN0bHksIHVzZSB0aGUgT2JqZWN0TWFuYWdlciBpbnN0ZWFkOgoKICAgIG15ICRNYXNrT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtOjpNYXNrJyk7Cgo9Y3V0CgpzdWIgbmV3IHsKICAgIG15ICggJFR5cGUsICVQYXJhbSApID0gQF87CgogICAgIyBhbGxvY2F0ZSBuZXcgaGFzaCBmb3Igb2JqZWN0CiAgICBteSAkU2VsZiA9IHt9OwogICAgYmxlc3MoICRTZWxmLCAkVHlwZSApOwoKICAgIHJldHVybiAkU2VsZjsKfQoKPWhlYWQyIERlZmluaXRpb25TZXQoKQoKU2V0IHRoZSBkZWZpbml0aW9uIGZvciBhIGNvbmZpZyBpdGVtIG1hc2sKCiAgICBteSAkU3VjY2VzcyA9ICRNYXNrT2JqZWN0LT5EZWZpbml0aW9uU2V0KAogICAgICAgIERlZmluaXRpb24gICAgICAgPT4gXEBEZWZpbml0aW9uLAogICAgICAgIERlZmluaXRpb25TdHJpbmcgPT4gJFlBTUxTdHJpbmcsICAjIGVpdGhlciBEZWZpbml0aW9uIG9yIERlZmluaXRpb25TdHJpbmcgaXMgbmVlZGVkCiAgICAgICAgTWFzayAgICAgICAgICAgICA9PiAkTWFzaywKICAgICAgICBVc2VySUQgICAgICAgICAgID0+ICRVc2VySUQsCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25TZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvVXNlcklEIE1hc2svKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgaWYgKCAkUGFyYW17RGVmaW5pdGlvblN0cmluZ30gKSB7CgogICAgICAgICMgVmFsaWRhdGUgWUFNTCBjb2RlIGJ5IGNvbnZlcnRpbmcgaXQgdG8gUGVybC4KICAgICAgICBteSAkRGVmaW5pdGlvblJlZiA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgICAgIERhdGEgPT4gJFBhcmFte0RlZmluaXRpb25TdHJpbmd9LAogICAgICAgICk7CgogICAgICAgIGlmICggcmVmICREZWZpbml0aW9uUmVmIG5lICdBUlJBWScgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdOZWVkIGFuZCBhcnJheSBpbiB2YWxpZCBZQU1MIScsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBlbHNpZiAoICRQYXJhbXtEZWZpbml0aW9ufSApIHsKICAgICAgICAkUGFyYW17RGVmaW5pdGlvblN0cmluZ30gPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6WUFNTCcpLT5EdW1wKAogICAgICAgICAgICBEYXRhID0+ICRQYXJhbXtEZWZpbml0aW9ufSwKICAgICAgICApOwoKICAgICAgICBpZiAoICEkUGFyYW17RGVmaW5pdGlvblN0cmluZ30gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICdDb3VsZCBub3QgZ2VuZXJhdGUgWUFNTCBmcm9tIHByb3ZpZGVkIERlZmluaXRpb24hJywKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIGVsc2UgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAnTmVlZCBEZWZpbml0aW9uIG9yIERlZmluaXRpb25TdHJpbmchJywKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAkU2VsZi0+RGVmaW5pdGlvbkRlbGV0ZSgKICAgICAgICBNYXNrICAgICAgPT4gJFBhcmFte01hc2t9LAogICAgICAgIEtlZXBDYWNoZSA9PiAxLAogICAgKTsKCiAgICByZXR1cm4gaWYgISRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdJTlNFUlQgSU5UTyBmcm9udGVuZF9tYXNrX2RlZmluaXRpb24gKCBtYXNrLCBkZWZpbml0aW9uLCBjcmVhdGVfdGltZSwgY3JlYXRlX2J5ICkgVkFMVUVTICggPywgPywgY3VycmVudF90aW1lc3RhbXAsID8gKScsCiAgICAgICAgQmluZCA9PiBbIFwkUGFyYW17TWFza30sIFwkUGFyYW17RGVmaW5pdGlvblN0cmluZ30sIFwkUGFyYW17VXNlcklEfSBdLAogICAgKTsKCiAgICByZXR1cm4gMTsKfQoKPWhlYWQyIERlZmluaXRpb25HZXQoKQoKR2V0IHRoZSBkZWZpbml0aW9uIGZvciBhIGNvbmZpZyBpdGVtIG1hc2sKCiAgICBteSAkRGVmaW5pdGlvbiA9ICRNYXNrT2JqZWN0LT5EZWZpbml0aW9uR2V0KAogICAgICAgIE1hc2sgICA9PiAkTWFzaywKICAgICAgICBSZXR1cm4gPT4gJ0FSUkFZJywgIyBPcHRpb25hbCBlaXRoZXIgQVJSQVkgKGRlZmF1bHQpIG9yIFNUUklORyB3aGljaCByZXR1cm5zIHRoZSBZQU1MCiAgICApOwoKPWN1dAoKc3ViIERlZmluaXRpb25HZXQgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBmb3IgbXkgJE5lZWRlZCAocXcvTWFzay8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAkUGFyYW17UmV0dXJufSB8fD0gJ0FSUkFZJzsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMICAgPT4gJ1NFTEVDVCBkZWZpbml0aW9uIEZST00gZnJvbnRlbmRfbWFza19kZWZpbml0aW9uIFdIRVJFIG1hc2sgPSA/JywKICAgICAgICBCaW5kICA9PiBbIFwkUGFyYW17TWFza30gXSwKICAgICAgICBMaW1pdCA9PiAxLAogICAgKTsKCiAgICBteSAoJERlZmluaXRpb25TdHJpbmcpID0gJERCT2JqZWN0LT5GZXRjaHJvd0FycmF5KCk7CgogICAgcmV0dXJuIGlmICEkRGVmaW5pdGlvblN0cmluZzsKCiAgICByZXR1cm4gJERlZmluaXRpb25TdHJpbmcgaWYgJFBhcmFte1JldHVybn0gZXEgJ1NUUklORyc7CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpZQU1MJyktPkxvYWQoCiAgICAgICAgRGF0YSA9PiAkRGVmaW5pdGlvblN0cmluZywKICAgICk7Cn0KCj1oZWFkMiBEZWZpbml0aW9uRGVsZXRlKCkKCkRlbGV0ZSB0aGUgZGVmaW5pdGlvbiBmb3IgYSBjb25maWcgaXRlbSBtYXNrCgogICAgbXkgJFN1Y2Nlc3MgPSAkTWFza09iamVjdC0+RGVmaW5pdGlvbkRlbGV0ZSgKICAgICAgICBNYXNrID0+ICRNYXNrLAogICAgKTsKCj1jdXQKCnN1YiBEZWZpbml0aW9uRGVsZXRlIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3L01hc2svKSB7CiAgICAgICAgaWYgKCAhJFBhcmFteyROZWVkZWR9ICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAiTmVlZCAkTmVlZGVkISIsCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEQicpLT5EbygKICAgICAgICBTUUwgID0+ICdERUxFVEUgRlJPTSBmcm9udGVuZF9tYXNrX2RlZmluaXRpb24gV0hFUkUgbWFzayA9ID8nLAogICAgICAgIEJpbmQgPT4gWyBcJFBhcmFte01hc2t9IF0sCiAgICApOwp9Cgo9aGVhZDIgQ29uZmlndXJlZE1hc2tzTGlzdCgpCgpHZXQgYWxsIGNvbmZpZ3VyZWQgbWFza3MKCiAgICBteSBATWFza3MgPSAkTWFza09iamVjdC0+Q29uZmlndXJlZE1hc2tzTGlzdCgpOwoKPWN1dAoKc3ViIENvbmZpZ3VyZWRNYXNrc0xpc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkREJPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6REInKTsKCiAgICAkREJPYmplY3QtPlByZXBhcmUoCiAgICAgICAgU1FMID0+ICdTRUxFQ1QgbWFzayBGUk9NIGZyb250ZW5kX21hc2tfZGVmaW5pdGlvbicsCiAgICApOwoKICAgIG15IEBNYXNrczsKICAgIHdoaWxlICggbXkgQFJvdyA9ICREQk9iamVjdC0+RmV0Y2hyb3dBcnJheSgpICkgewogICAgICAgIHB1c2ggQE1hc2tzLCAkUm93WzBdOwogICAgfQoKICAgIHJldHVybiBATWFza3M7Cn0KCj1oZWFkMiBSZW5kZXJJbnB1dCgpCgpSZW5kZXIgaW5wdXQgZmllbGRzIGFjY29yZGluZyB0byBtYXNrIGRlZmluaXRpb24KCiAgICAkTWFza09iamVjdC0+UmVuZGVySW5wdXQoCiAgICAgICAgR2V0UGFyYW0gICAgICAgICAgICAgID0+IFwlUGFyYW0sCiAgICAgICAgTGF5b3V0T2JqZWN0ICAgICAgICAgID0+ICRMYXlvdXRPYmplY3QsCiAgICAgICAgTWFza0RlZmluaXRpb24gICAgICAgID0+ICRNYXNrRGVmaW5pdGlvbiwKICAgICAgICBEeW5hbWljRmllbGRDb25maWdzICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZ3MsCiAgICAgICAgQ29uZmlnICAgICAgICAgICAgICAgID0+ICRDb25maWcsCiAgICAgICAgU2VwYXJhdGVEeW5hbWljRmllbGRzID0+ICRTZXBhcmF0ZUR5bmFtaWNGaWVsZHMsCiAgICApOwoKPWN1dAoKc3ViIFJlbmRlcklucHV0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgZm9yIG15ICROZWVkZWQgKHF3L0dldFBhcmFtIExheW91dE9iamVjdCBNYXNrRGVmaW5pdGlvbi8pIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMSBpZiAhSXNBcnJheVJlZldpdGhEYXRhKCAkUGFyYW17RHluYW1pY0ZpZWxkQ29uZmlnc30gKTsKCiAgICBteSAlR2V0UGFyYW0gPSAleyAkUGFyYW17R2V0UGFyYW19IH07CgogICAgbXkgJUR5bmFtaWNGaWVsZENvbmZpZ3NIYXNoID0gbWFwIHsgJF8tPntOYW1lfSA9PiAkXyB9IEB7ICRQYXJhbXtEeW5hbWljRmllbGRDb25maWdzfSB9OwoKICAgIGlmICggIUlzQXJyYXlSZWZXaXRoRGF0YSggJFBhcmFte01hc2tEZWZpbml0aW9ufSApICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiSW52YWxpZCBtYXNrIGRlZmluaXRpb24hIiwKICAgICAgICApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZvciBteSAkQXJlYURlZmluaXRpb24gKCBAeyAkUGFyYW17TWFza0RlZmluaXRpb259IH0gKSB7CiAgICAgICAgbXkgJUFyZWEgPSAoIFJvd3MgPT4gW10gKTsKICAgICAgICBpZiAoIElzSGFzaFJlZldpdGhEYXRhKCAkQXJlYURlZmluaXRpb24tPntHcmlkfSApICkgewogICAgICAgICAgICAlQXJlYSA9ICRBcmVhRGVmaW5pdGlvbi0+e0dyaWR9LT4lKjsKICAgICAgICB9CiAgICAgICAgZWxzaWYgKCBJc0FycmF5UmVmV2l0aERhdGEoICRBcmVhRGVmaW5pdGlvbi0+e0xpc3R9ICkgKSB7CiAgICAgICAgICAgICRBcmVhe1Jvd3N9ICAgID0gWyBtYXAgeyBbJF9dIH0gJEFyZWFEZWZpbml0aW9uLT57TGlzdH0tPkAqIF07CiAgICAgICAgICAgICRBcmVhe0NvbHVtbnN9ID0gMTsKICAgICAgICB9CgogICAgICAgIGZvciBteSAkUm93ICggQHsgJEFyZWF7Um93c30gfSApIHsKCiAgICAgICAgICAgIG15ICRSb3dDbGFzc1N0cmluZyA9ICcnOwogICAgICAgICAgICBteSAkUm93UmVhZE9ubHkgICAgPSAoIGZpcnN0IHsgJF8tPntSZWFkT25seX0gfSAkUm93LT5AKiApID8gMSA6IDA7CgogICAgICAgICAgICAjIGhpZGUgY29tcGxldGUgcm93IGlmIG5vIGZpZWxkIGlzIHZpc2libGUKICAgICAgICAgICAgaWYgKCAkUGFyYW17VmlzaWJpbGl0eX0gJiYgIWdyZXAgeyAkUGFyYW17VmlzaWJpbGl0eX17IkR5bmFtaWNGaWVsZF8kXy0+e05hbWV9In0gfSBAeyRSb3d9ICkgewogICAgICAgICAgICAgICAgJFJvd0NsYXNzU3RyaW5nIC49ICcgb29vQUNMSGlkZGVuJzsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyBzcGVjaWFsIHRyZWF0bWVudCBmb3Igc2VwYXJhdGUgZHluYW1pYyBmaWVsZHMgYmFzZWQgb24gZmlyc3QgZmllbGQKICAgICAgICAgICAgbXkgJFJvd0Jsb2NrTmFtZSA9ICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9ICYmICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9LT57ICRSb3ctPlswXXtOYW1lfSB9CiAgICAgICAgICAgICAgICA/ICdSb3dfRHluYW1pY0ZpZWxkXycgLiAkUGFyYW17U2VwYXJhdGVEeW5hbWljRmllbGRzfS0+eyAkUm93LT5bMF17TmFtZX0gfSA6ICdSb3dfRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICMgQ29sdW1uIHNpemUgc3RyaW5nIGlzIHNwbGl0IGluIHBhcnRzLiBVc2VkIGFyZSBhcyBtYW55IHBhcnRzIGFzIGNvbHVtbnMgYXJlIGRlZmluZWQKICAgICAgICAgICAgIyBQYXJ0cyBhcmUgY2hlY2tlZCBhZ2FpbnN0IGEgcmVnZXgKICAgICAgICAgICAgbXkgJENvbHVtblNpemVTdHJpbmcgPSAnJzsKICAgICAgICAgICAgaWYgKCAkQXJlYXtDb2x1bW5TaXplfSApIHsKICAgICAgICAgICAgICAgIG15IEBDb2x1bW5TaXplcyA9IHNwbGl0KCAnICcsICRBcmVhe0NvbHVtblNpemV9ICk7CiAgICAgICAgICAgICAgICBteSAkQ29sdW1uSW5kZXggPSAwOwogICAgICAgICAgICAgICAgQ09MVU1OU0laRToKICAgICAgICAgICAgICAgIGZvciBteSAkQ29sdW1uU2l6ZSAoQENvbHVtblNpemVzKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT0xVTU5TSVpFIGlmICRDb2x1bW5TaXplICF+IC9eKChcZChcLlxkKT9mclxzPyl8KFxkK3B4XHM/KXxhdXRvXHM/KSskLzsKICAgICAgICAgICAgICAgICAgICBsYXN0IENPTFVNTlNJWkUgaWYgJENvbHVtbkluZGV4ID09ICggJEFyZWF7Q29sdW1uc30gfHwgMSApOwogICAgICAgICAgICAgICAgICAgICRDb2x1bW5TaXplU3RyaW5nIC49ICRDb2x1bW5TaXplIC4gJyAnOwogICAgICAgICAgICAgICAgICAgICRDb2x1bW5JbmRleCsrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2hpbGUgKCBzY2FsYXIgc3BsaXQoICcgJywgJENvbHVtblNpemVTdHJpbmcgKSA8ICRBcmVhe0NvbHVtbnN9ICkgewogICAgICAgICAgICAgICAgICAgICRDb2x1bW5TaXplU3RyaW5nIC49ICcgMWZyJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICAkQ29sdW1uU2l6ZVN0cmluZyB8fD0gIjFmciAiIHggJEFyZWF7Q29sdW1uc307CgogICAgICAgICAgICAkUm93Q2xhc3NTdHJpbmcgLj0gJEFyZWF7Q29sdW1uc30gPiAxID8gJyBNdWx0aUNvbHVtbicgOiAnJzsKICAgICAgICAgICAgbXkgJE11bHRpVmFsdWVGaWVsZCA9ICcnOwogICAgICAgICAgICBFTEVNRU5UOgogICAgICAgICAgICBmb3IgbXkgJEZpZWxkSXRlbSAoICRSb3ctPkAqICkgewogICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnc0hhc2h7ICRGaWVsZEl0ZW0tPntOYW1lfSB9LT57Q29uZmlnfXtNdWx0aVZhbHVlfSApIHsKICAgICAgICAgICAgICAgICAgICAkUm93Q2xhc3NTdHJpbmcgLj0gJyBNdWx0aVZhbHVlJzsKICAgICAgICAgICAgICAgICAgICAkTXVsdGlWYWx1ZUZpZWxkID0gJEZpZWxkSXRlbS0+e05hbWV9OwogICAgICAgICAgICAgICAgICAgIGxhc3QgRUxFTUVOVDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgTmFtZSA9PiAkUm93QmxvY2tOYW1lLAogICAgICAgICAgICAgICAgRGF0YSA9PiB7CiAgICAgICAgICAgICAgICAgICAgVGVtcGxhdGVDb2x1bW5zID0+ICRDb2x1bW5TaXplU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIFJvd0NsYXNzZXMgICAgICA9PiAkUm93Q2xhc3NTdHJpbmcsCiAgICAgICAgICAgICAgICB9LAogICAgICAgICAgICApOwoKICAgICAgICAgICAgbXkgQFRlbXBsYXRlRGF0YUxpc3Q7CgogICAgICAgICAgICAjIER5bmFtaWNGaWVsZEhUTUwgaXMgYXNzdW1lZCB0byBiZSBhIGhhc2ggd2l0aCBzZXBhcmF0ZSBodG1sIGZvciBlYWNoIHZhbHVlCiAgICAgICAgICAgIG15IEBIVE1MQ291bnRLZXlzID0ga2V5cyAkR2V0UGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnskTXVsdGlWYWx1ZUZpZWxkfXtIVE1MfS0+JSo7CiAgICAgICAgICAgIG15ICRNYXhWYWx1ZUNvdW50ID0gQEhUTUxDb3VudEtleXMgPyAkI0hUTUxDb3VudEtleXMgOiAwOwogICAgICAgICAgICBmb3IgKCBteSAkUm93SW5kZXggPSAwOyAkUm93SW5kZXggPD0gJE1heFZhbHVlQ291bnQ7ICRSb3dJbmRleCsrICkgewogICAgICAgICAgICAgICAgbXkgJEdyaWRFbGVtZW50U3RhcnQgPSAxOwogICAgICAgICAgICAgICAgRUxFTUVOVDoKICAgICAgICAgICAgICAgIGZvciBteSAkRWxlbWVudCAoIHNvcnQgeyAoICRhLT57U3RhcnR9IHx8IDEgKSA8PT4gKCAkYi0+e1N0YXJ0fSB8fCAxICkgfSBAeyRSb3d9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVCBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGRDb25maWdzSGFzaHsgJEVsZW1lbnQtPntOYW1lfSB9ICk7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBFTEVNRU5UIGlmICFJc0hhc2hSZWZXaXRoRGF0YSggJEdldFBhcmFte0R5bmFtaWNGaWVsZEhUTUx9LT57ICRFbGVtZW50LT57TmFtZX0gfSApOwoKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkQ29uZmlnICAgPSAkRHluYW1pY0ZpZWxkQ29uZmlnc0hhc2h7ICRFbGVtZW50LT57TmFtZX0gfTsKICAgICAgICAgICAgICAgICAgICBteSAkRHluYW1pY0ZpZWxkSFRNTERhdGEgPSAkR2V0UGFyYW17RHluYW1pY0ZpZWxkSFRNTH0tPnsgJEVsZW1lbnQtPntOYW1lfSB9OwogICAgICAgICAgICAgICAgICAgIG15ICREeW5hbWljRmllbGRIVE1MICAgICA9ICREeW5hbWljRmllbGRIVE1MRGF0YS0+e0hUTUx9eyRSb3dJbmRleH07CiAgICAgICAgICAgICAgICAgICAgaWYgKCAhJER5bmFtaWNGaWVsZEhUTUwgJiYgISRSb3dJbmRleCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZEhUTUwgPSAkRHluYW1pY0ZpZWxkSFRNTERhdGEtPntGaWVsZH07CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG5leHQgRUxFTUVOVCBpZiAhJER5bmFtaWNGaWVsZEhUTUw7CgogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5DbGFzc1N0cmluZyA9ICcnOwoKICAgICAgICAgICAgICAgICAgICAjIGhpZGUgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkUGFyYW17VmlzaWJpbGl0eX0gJiYgISRQYXJhbXtWaXNpYmlsaXR5fXsiRHluYW1pY0ZpZWxkXyRFbGVtZW50LT57TmFtZX0ifSApIHsKICAgICAgICAgICAgICAgICAgICAgICAgJENvbHVtbkNsYXNzU3RyaW5nIC49ICcgb29vQUNMSGlkZGVuJzsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICMgY29sdW1uIHBsYWNlbWVudAogICAgICAgICAgICAgICAgICAgIG15ICRDb2x1bW5TdHlsZSA9ICdncmlkLWNvbHVtbjogJzsKICAgICAgICAgICAgICAgICAgICAkR3JpZEVsZW1lbnRTdGFydCA9ICggJEVsZW1lbnQtPntTdGFydH0gJiYgJEVsZW1lbnQtPntTdGFydH0gPiAkR3JpZEVsZW1lbnRTdGFydCApID8gJEVsZW1lbnQtPntTdGFydH0gOiAkR3JpZEVsZW1lbnRTdGFydDsKCiAgICAgICAgICAgICAgICAgICAgIyBzYXZpbmcgZWxlbWVudCBzdGFydCBmb3IgY29ycmVjdCBwbGFjaW5nIG9mIHJvd3Mgd2l0aCBtaXhlZCBmaWVsZHMgKG11bHRpdmFsdWUgYW5kIG5vbi1tdWx0aXZhbHVlKQogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LT57U3RhcnR9ID0gJEdyaWRFbGVtZW50U3RhcnQ7CiAgICAgICAgICAgICAgICAgICAgJENvbHVtblN0eWxlIC49ICRHcmlkRWxlbWVudFN0YXJ0IC4gJyAvICc7CiAgICAgICAgICAgICAgICAgICAgJEdyaWRFbGVtZW50U3RhcnQrKzsKICAgICAgICAgICAgICAgICAgICAkQ29sdW1uU3R5bGUgLj0gJEVsZW1lbnQtPntTcGFufSA/ICdzcGFuICcgLiAkRWxlbWVudC0+e1NwYW59IDogJ3NwYW4gMSc7CgogICAgICAgICAgICAgICAgICAgICMgc3BlY2lhbCB0cmVhdG1lbnQgZm9yIHNlcGFyYXRlIGR5bmFtaWMgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgbXkgJENvbEJsb2NrTmFtZSA9ICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9ICYmICRQYXJhbXtTZXBhcmF0ZUR5bmFtaWNGaWVsZHN9LT57ICRFbGVtZW50LT57TmFtZX0gfQogICAgICAgICAgICAgICAgICAgICAgICA/ICdEeW5hbWljRmllbGRfJyAuICRFbGVtZW50LT57TmFtZX0gOiAnRHluYW1pY0ZpZWxkJzsKCiAgICAgICAgICAgICAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSAmJiAkUm93SW5kZXggPT0gMCApIHsKICAgICAgICAgICAgICAgICAgICAgICAgbXkgJFRlbXBsYXRlQ29uZmlnID0gewogICAgICAgICAgICAgICAgICAgICAgICAgICAgJER5bmFtaWNGaWVsZENvbmZpZy0+JSosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lID0+ICREeW5hbWljRmllbGRDb25maWctPntOYW1lfSAuICggJFBhcmFte0lEU3VmZml4fSA/ICRQYXJhbXtJRFN1ZmZpeH0gOiAnJyApIC4gJ19UZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIG15ICRGaWVsZFRlbXBsYXRlSFRNTCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQ6OkJhY2tlbmQnKS0+RWRpdEZpZWxkUmVuZGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgRHluYW1pY0ZpZWxkQ29uZmlnID0+ICRUZW1wbGF0ZUNvbmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExheW91dE9iamVjdCAgICAgICA9PiAkUGFyYW17TGF5b3V0T2JqZWN0fSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmFtT2JqZWN0ICAgICAgICA9PiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JyksICAgICMjIG5vZmlsdGVyKFRpZHlBbGw6OlBsdWdpbjo6T1RPQk86OlBlcmw6OlBhcmFtT2JqZWN0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgQUpBWFVwZGF0ZSAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcGRhdGFibGVGaWVsZHMgICAgPT4gJFBhcmFte0FKQVhVcGRhdGFibGVGaWVsZHN9LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgQ3VzdG9tZXJJbnRlcmZhY2UgID0+ICRQYXJhbXtDdXN0b21lckludGVyZmFjZX0gfHwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRPbmx5ICAgICAgICAgICA9PiAkRWxlbWVudC0+e1JlYWRPbmx5fSAgICAgIHx8IDAsCiAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgIHB1c2ggQFRlbXBsYXRlRGF0YUxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgICAgICAgPT4gKCAkRmllbGRUZW1wbGF0ZUhUTUwtPntIVE1MfXsnMCd9IHx8ICRGaWVsZFRlbXBsYXRlSFRNTC0+e0ZpZWxkfSApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtblN0eWxlID0+ICRDb2x1bW5TdHlsZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRDb2x1bW5DbGFzc1N0cmluZyAuPSAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSA/ICcgTXVsdGlWYWx1ZV8nIC4gJFJvd0luZGV4IDogJyc7CiAgICAgICAgICAgICAgICAgICAgbXkgJENlbGxCbG9ja0RhdGEgPSB7CiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgPT4gJER5bmFtaWNGaWVsZENvbmZpZy0+e05hbWV9LAogICAgICAgICAgICAgICAgICAgICAgICBDb2x1bW5TdHlsZSAgID0+ICRDb2x1bW5TdHlsZSwKICAgICAgICAgICAgICAgICAgICAgICAgRmllbGQgICAgICAgICA9PiAkRHluYW1pY0ZpZWxkSFRNTCwKICAgICAgICAgICAgICAgICAgICAgICAgVG9vbHRpcCAgICAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtUb29sdGlwfSwKICAgICAgICAgICAgICAgICAgICAgICAgTXVsdGlWYWx1ZSAgICA9PiAkRHluYW1pY0ZpZWxkQ29uZmlnLT57Q29uZmlnfXtNdWx0aVZhbHVlfSwKICAgICAgICAgICAgICAgICAgICAgICAgUm93UmVhZE9ubHkgICA9PiAkUm93UmVhZE9ubHksCiAgICAgICAgICAgICAgICAgICAgICAgIENvbHVtbkNsYXNzZXMgPT4gJENvbHVtbkNsYXNzU3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICBJbmRleCAgICAgICAgID0+ICRSb3dJbmRleCwKICAgICAgICAgICAgICAgICAgICB9OwoKICAgICAgICAgICAgICAgICAgICBpZiAoICRSb3dJbmRleCA9PSAwICkgewogICAgICAgICAgICAgICAgICAgICAgICAkQ2VsbEJsb2NrRGF0YS0+e0xhYmVsfSA9ICREeW5hbWljRmllbGRIVE1MRGF0YS0+e0xhYmVsfTsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgICRQYXJhbXtMYXlvdXRPYmplY3R9LT5CbG9jaygKICAgICAgICAgICAgICAgICAgICAgICAgTmFtZSA9PiAkQ29sQmxvY2tOYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBEYXRhID0+ICRDZWxsQmxvY2tEYXRhLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgICMgQWRkIHRlbXBsYXRlcyBmb3IgZHluYW1pY2ZpZWxkcyBhdCBlbmQgb2Ygcm93CiAgICAgICAgICAgIGZvciBteSAkVGVtcGxhdGVEYXRhIChAVGVtcGxhdGVEYXRhTGlzdCkgewogICAgICAgICAgICAgICAgJFBhcmFte0xheW91dE9iamVjdH0tPkJsb2NrKAogICAgICAgICAgICAgICAgICAgIE5hbWUgPT4gJ0R5bmFtaWNGaWVsZE11bHRpVmFsdWVUZW1wbGF0ZScsCiAgICAgICAgICAgICAgICAgICAgRGF0YSA9PiAkVGVtcGxhdGVEYXRhLAogICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKCnVzZSBMaXN0OjpVdGlsIHF3KGFueSBub25lKTsKCm91ciAkT2JqZWN0TWFuYWdlckRpc2FibGVkID0gMTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW06OlBlcm1pc3Npb24gLSBtb2R1bGUgZm9yIElUU01Db25maWdJdGVtLnBtIHdpdGggUGVybWlzc2lvbiBmdW5jdGlvbnMKCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIFBlcm1pc3Npb24gZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBQZXJtaXNzaW9uKCkKCnJldHVybnMgd2hldGhlciB0aGUgdXNlciBoYXMgcGVybWlzc2lvbnMgb3Igbm90CgogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QZXJtaXNzaW9uKAogICAgICAgIFR5cGUgICAgID0+ICdybycsCiAgICAgICAgU2NvcGUgICAgPT4gJ0NsYXNzJywgIyBDbGFzcyB8fCBJdGVtCiAgICAgICAgQ2xhc3NJRCAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnQ2xhc3MnCiAgICAgICAgSXRlbUlEICAgPT4gMTIzLCAgICAgIyBpZiBTY29wZSBpcyAnSXRlbScKICAgICAgICBVc2VySUQgICA9PiAxMjMsCiAgICApOwoKb3Igd2l0aG91dCBsb2dnaW5nLCBmb3IgZXhhbXBsZSBmb3IgdG8gY2hlY2sgaWYgYSBsaW5rL2FjdGlvbiBzaG91bGQgYmUgc2hvd24KCiAgICBteSAkQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPlBlcm1pc3Npb24oCiAgICAgICAgVHlwZSAgICAgPT4gJ3JvJywKICAgICAgICBTY29wZSAgICA9PiAnQ2xhc3MnLCAjIENsYXNzIHx8IEl0ZW0KICAgICAgICBDbGFzc0lEICA9PiAxMjMsICAgICAjIGlmIFNjb3BlIGlzICdDbGFzcycKICAgICAgICBJdGVtSUQgICA9PiAxMjMsICAgICAjIGlmIFNjb3BlIGlzICdJdGVtJwogICAgICAgIExvZ05vICAgID0+IDEsCiAgICAgICAgVXNlcklEICAgPT4gMTIzLAogICAgKTsKCj1jdXQKCnN1YiBQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhUeXBlIFNjb3BlIFVzZXJJRCkpIHsKICAgICAgICBpZiAoICEkUGFyYW17JE5lZWRlZH0gKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICJOZWVkICROZWVkZWQhIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICAjIGNoZWNrIGZvciBleGlzdGVuY2Ugb2YgSXRlbUlEIG9yIENsYXNzSUQgZGVwZW5kZW50CiAgICAjIG9uIHRoZSBTY29wZQogICAgaWYgKAogICAgICAgICggJFBhcmFte1Njb3BlfSBlcSAnQ2xhc3MnICYmICEkUGFyYW17Q2xhc3NJRH0gKQogICAgICAgIHx8CiAgICAgICAgKCAkUGFyYW17U2NvcGV9IGVxICdJdGVtJyAmJiAhJFBhcmFte0l0ZW1JRH0gKQogICAgICAgICkKICAgIHsKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgQ2xhc3NJRCBpZiBTY29wZSBpcyAnQ2xhc3MnIG9yIEl0ZW1JRCBpZiBTY29wZSBpcyAnSXRlbSchIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgIyBSdW4gYWxsIElUU01Db25maWdJdGVtIFBlcm1pc3Npb24gbW9kdWxlcy4KICAgICMKICAgICMgVGhlIGlkZWEgaXMgdGhlIHRoZSBwZXJtaXNzaW9uIG1vZHVsZXMgYXJlIG9yZGVyZWQgYW5kIGNhbiBiZSBkaXZpZGVkIGludG8gdHdvIHBoYXNlcy4KICAgICMgSW4gdGhlIGZpcnN0IHBoYXNlICdSZXF1aXJlZCcgaXMgb24gYW5kICdHcmFudGVkJyBpcyBvZmYuIFRoaXMgYXNzdXJlcyB0aGF0IGFsbCByZXF1aXJlZAogICAgIyBwcmVjb25kaXRpb25zIGFyZSBtZXQuIEluIHRoZSBzZWNvbmQgcGhhc2UgJ1JlcXVpcmVkJyBpcyBvZmYgYW5kICdHcmFudGVkJyBpcyBvbi4gSXQgc3VmZmljZXMKICAgICMgd2hlbiBvbmx5IG9uIHNlY29uZCBwaGFzZSBtb2R1bGUgZ3JhbnRzIGFjY2Vzcy4KICAgICMKICAgICMgT3RoZXIgY29tYmluYXRpb25zIGFyZSBwb3NzaWJsZSBidXQgbWlnaHQgYnJpbmcgc3VycHJpc2luZyByZXN1bHRzLgogICAgaWYgKAogICAgICAgIHJlZiAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6JyAuICRQYXJhbXtTY29wZX0gKSBlcSAnSEFTSCcKICAgICAgICApCiAgICB7CiAgICAgICAgbXkgJU1vZHVsZXMgPSAlewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpLT5HZXQoICdJVFNNQ29uZmlnSXRlbTo6UGVybWlzc2lvbjo6JyAuICRQYXJhbXtTY29wZX0gKQogICAgICAgIH07CiAgICAgICAgTU9EVUxFOgogICAgICAgIGZvciBteSAkTW9kdWxlICggc29ydCBrZXlzICVNb2R1bGVzICkgewoKICAgICAgICAgICAgIyBsb2FkIG1vZHVsZQogICAgICAgICAgICBuZXh0IE1PRFVMRSB1bmxlc3MgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06Ok1haW4nKS0+UmVxdWlyZSggJE1vZHVsZXN7JE1vZHVsZX0tPntNb2R1bGV9ICk7CgogICAgICAgICAgICAjIGNyZWF0ZSBvYmplY3QKICAgICAgICAgICAgbXkgJE1vZHVsZU9iamVjdCA9ICRNb2R1bGVzeyRNb2R1bGV9LT57TW9kdWxlfS0+bmV3OwoKICAgICAgICAgICAgIyBleGVjdXRlIFJ1bigpCiAgICAgICAgICAgIG15ICRBY2Nlc3NPayA9ICRNb2R1bGVPYmplY3QtPlJ1biglUGFyYW0pOwoKICAgICAgICAgICAgIyBjaGVjayBncmFudGVkIG9wdGlvbiAoc2hvdWxkIEkgc2F5IG9rKQogICAgICAgICAgICBpZiAoICRBY2Nlc3NPayAmJiAkTW9kdWxlc3skTW9kdWxlfS0+e0dyYW50ZWR9ICkgewoKICAgICAgICAgICAgICAgICMgYWNjZXNzIG9rCiAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgIyByZWZ1c2UgYWNjZXNzICBiZWNhdXNlIGFjY2VzcyBpcyBmYWxzZSBidXQgaXQncyByZXF1aXJlZAogICAgICAgICAgICBpZiAoICEkQWNjZXNzT2sgJiYgJE1vZHVsZXN7JE1vZHVsZX0tPntSZXF1aXJlZH0gKSB7CiAgICAgICAgICAgICAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIGJlY2F1c2UgbW9kdWxlICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIigkTW9kdWxlc3skTW9kdWxlfS0+e01vZHVsZX0pIGlzIHJlcXVpcmVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIihVc2VySUQ6ICRQYXJhbXtVc2VySUR9ICckUGFyYW17VHlwZX0nICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gIm9uICRQYXJhbXtTY29wZX06ICIgLiAkUGFyYW17ICRQYXJhbXtTY29wZX0gLiAnSUQnIH0gLiAiKSEiLAogICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgIyByZWZ1c2UgYWNjZXNzCiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CgogICAgIyBkb24ndCBncmFudCBhY2Nlc3MKICAgIGlmICggISRQYXJhbXtMb2dOb30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGVybWlzc2lvbiBkZW5pZWQgKFVzZXJJRDogJFBhcmFte1VzZXJJRH0gJyRQYXJhbXtUeXBlfScgIgogICAgICAgICAgICAgICAgLiAib24gJFBhcmFte1Njb3BlfTogIiAuICRQYXJhbXsgJFBhcmFte1Njb3BlfSAuICdJRCcgfSAuICIpISIsCiAgICAgICAgKTsKICAgIH0KCiAgICByZXR1cm47Cn0KCj1oZWFkMiBDdXN0b21lclBlcm1pc3Npb24oKQoKcmV0dXJucyB3aGV0aGVyIHRoZSB1c2VyIGhhcyBwZXJtaXNzaW9ucyBvciBub3QKCiAgICBteSAkQWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkN1c3RvbWVyUGVybWlzc2lvbigKICAgICAgICBDb25maWdJdGVtSUQgPT4gMTIzLAogICAgICAgIFVzZXJJRCAgICAgICA9PiAxMjMsCiAgICAgICAgTG9nTm8gICAgICAgID0+IDEsICAgICMgb3B0aW9uYWwsIGRvIG5vdCBsb2csIGRlZmF1bHQ6IDAKICAgICk7Cgo9Y3V0CgpzdWIgQ3VzdG9tZXJQZXJtaXNzaW9uIHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgIyBjaGVjayBuZWVkZWQgc3R1ZmYKICAgIGZvciBteSAkTmVlZGVkIChxdyhDb25maWdJdGVtSUQgVXNlcklEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICRDdXN0b21lckdyb3VwT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKTsKICAgIG15ICVHcm91cExvb2t1cDsKCiAgICBteSAlQ29uZGl0aW9ucyA9ICV7ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnQ3VzdG9tZXI6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJykgLy8ge30gfTsKICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IDEsCiAgICApOwoKICAgIENPTkRJVElPTjoKICAgIGZvciBteSAkQ29uZGl0aW9uU2V0ICggdmFsdWVzICVDb25kaXRpb25zICkgewogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0dyb3Vwc30gJiYgJENvbmRpdGlvblNldC0+e0dyb3Vwc30tPkAqICkgewogICAgICAgICAgICBpZiAoICElR3JvdXBMb29rdXAgKSB7CiAgICAgICAgICAgICAgICAlR3JvdXBMb29rdXAgPSByZXZlcnNlICRDdXN0b21lckdyb3VwT2JqZWN0LT5Hcm91cE1lbWJlckxpc3QoCiAgICAgICAgICAgICAgICAgICAgVXNlcklEID0+ICRQYXJhbXtVc2VySUR9LAogICAgICAgICAgICAgICAgICAgIFR5cGUgICA9PiAncm8nLAogICAgICAgICAgICAgICAgICAgIFJlc3VsdCA9PiAnSEFTSCcsCiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICB9CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJEdyb3VwTG9va3VweyRffSB9ICRDb25kaXRpb25TZXQtPntHcm91cHN9LT5AKjsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gPyAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBDbGFzc2VzICYmICFncmVwIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSBAQ2xhc3NlczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgewogICAgICAgICAgICBteSBARGVwbFN0YXRlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gPyAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBEZXBsU3RhdGVzICYmICFncmVwIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0gQERlcGxTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgewogICAgICAgICAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIGtleXMgJENvbmRpdGlvblNldC0+e0R5bmFtaWNGaWVsZFZhbHVlc30tPiUqICkgewogICAgICAgICAgICAgICAgbXkgJENvbmRpdGlvblZhbHVlID0gJENvbmRpdGlvblNldC0+e0R5bmFtaWNGaWVsZFZhbHVlc317JEZpZWxkTmFtZX0gLy8gJyc7CgogICAgICAgICAgICAgICAgaWYgKCAhZGVmaW5lZCAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICRDb25kaXRpb25WYWx1ZSBuZSAnJzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2lmICggIXJlZiAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9ICkgewogICAgICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICRDb25kaXRpb25WYWx1ZSBuZSAkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzaWYgKCAkQ29uZGl0aW9uVmFsdWUgZXEgJycgKSB7CiAgICAgICAgICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifS0+QCo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJF8gZXEgJENvbmRpdGlvblZhbHVlIH0gJENvbmZpZ0l0ZW0tPnsiRHluYW1pY0ZpZWxkXyRGaWVsZE5hbWUifS0+QCo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gKSB7CiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICEkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSB9OwoKICAgICAgICAgICAgbXkgQEN1c3RvbWVyVXNlcnMgPSByZWYgJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyVXNlckR5bmFtaWNGaWVsZH0gfQogICAgICAgICAgICAgICAgPyAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSB9LT5AKgogICAgICAgICAgICAgICAgOiAoICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lclVzZXJEeW5hbWljRmllbGR9IH0gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIG5vbmUgeyAkXyBlcSAkUGFyYW17VXNlcklEfSB9IEBDdXN0b21lclVzZXJzOwogICAgICAgIH0KCiAgICAgICAgaWYgKCAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSApIHsKICAgICAgICAgICAgbmV4dCBDT05ESVRJT04gaWYgISRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH07CgogICAgICAgICAgICBteSBAQ3VzdG9tZXJDb21wYW5pZXMgPSByZWYgJENvbmZpZ0l0ZW0tPnsgJ0R5bmFtaWNGaWVsZF8nIC4gJENvbmRpdGlvblNldC0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0gfQogICAgICAgICAgICAgICAgPyAkQ29uZmlnSXRlbS0+eyAnRHluYW1pY0ZpZWxkXycgLiAkQ29uZGl0aW9uU2V0LT57Q3VzdG9tZXJDb21wYW55RHluYW1pY0ZpZWxkfSB9LT5AKgogICAgICAgICAgICAgICAgOiAoICRDb25maWdJdGVtLT57ICdEeW5hbWljRmllbGRfJyAuICRDb25kaXRpb25TZXQtPntDdXN0b21lckNvbXBhbnlEeW5hbWljRmllbGR9IH0gKTsKCiAgICAgICAgICAgIG15ICVBY2Nlc3NpYmxlQ3VzdG9tZXJzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkN1c3RvbWVyR3JvdXAnKS0+R3JvdXBDb250ZXh0Q3VzdG9tZXJzKAogICAgICAgICAgICAgICAgQ3VzdG9tZXJVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgICAgICk7CgogICAgICAgICAgICBuZXh0IENPTkRJVElPTiBpZiBub25lIHsgJEFjY2Vzc2libGVDdXN0b21lcnN7JF99IH0gQEN1c3RvbWVyQ29tcGFuaWVzOwogICAgICAgIH0KCiAgICAgICAgIyBncmFudCBhY2Nlc3MKICAgICAgICByZXR1cm4gMTsKICAgIH0KCiAgICBpZiAoICEkUGFyYW17TG9nTm99ICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnbm90aWNlJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gIlBlcm1pc3Npb24gZGVuaWVkIChDdXN0b21lclVzZXJJRDogJFBhcmFte1VzZXJJRH0gIgogICAgICAgICAgICAgICAgLiAib24gQ29uZmlnSXRlbTogIiAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gIikhIiwKICAgICAgICApOwogICAgfQoKICAgICMgZG9uJ3QgZ3JhbnQgYWNjZXNzCiAgICByZXR1cm47Cn0KCj1oZWFkMiBQdWJsaWNQZXJtaXNzaW9uKCkKCnJldHVybnMgd2hldGhlciB0aGUgcHVibGljIG5vbi1sb2dnZWQgdXNlciBoYXMgcGVybWlzc2lvbnMgb3Igbm90CgogICAgbXkgJEFjY2VzcyA9ICRDb25maWdJdGVtT2JqZWN0LT5QdWJsaWNQZXJtaXNzaW9uKAogICAgICAgIENvbmZpZ0l0ZW1JRCA9PiAxMjMsCiAgICAgICAgTG9nTm8gICAgICAgID0+IDEsICAgICMgb3B0aW9uYWwsIGRvIG5vdCBsb2csIGRlZmF1bHQ6IDAKICAgICk7Cgo9Y3V0CgpzdWIgUHVibGljUGVybWlzc2lvbiB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgY2hlY2sgbmVlZGVkIHN0dWZmCiAgICBmb3IgbXkgJE5lZWRlZCAocXcoQ29uZmlnSXRlbUlEKSkgewogICAgICAgIGlmICggISRQYXJhbXskTmVlZGVkfSApIHsKICAgICAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICAgICAgTWVzc2FnZSAgPT4gIk5lZWQgJE5lZWRlZCEiLAogICAgICAgICAgICApOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQoKICAgIG15ICVDb25kaXRpb25zID0gJXsgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpDb25maWcnKS0+R2V0KCdQdWJsaWM6OkNvbmZpZ0l0ZW06OlBlcm1pc3Npb25Db25kaXRpb25zJykgLy8ge30gfTsKICAgIG15ICRDb25maWdJdGVtID0gJFNlbGYtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEICA9PiAkUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICAgICBEeW5hbWljRmllbGRzID0+IGFueSB7ICRfLT57Q3VzdG9tZXJVc2VyRHluYW1pY0ZpZWxkfSB8fCAkXy0+e0N1c3RvbWVyQ29tcGFueUR5bmFtaWNGaWVsZH0gfSB2YWx1ZXMgJUNvbmRpdGlvbnMsCiAgICApOwoKICAgIENPTkRJVElPTjoKICAgIGZvciBteSAkQ29uZGl0aW9uU2V0ICggdmFsdWVzICVDb25kaXRpb25zICkgewogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0NsYXNzZXN9ICkgewogICAgICAgICAgICBteSBAQ2xhc3NlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gPyAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57Q2xhc3Nlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBDbGFzc2VzICYmICFncmVwIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntDbGFzc30gfSBAQ2xhc3NlczsKICAgICAgICB9CgogICAgICAgIGlmICggJENvbmRpdGlvblNldC0+e0RlcGxveW1lbnRTdGF0ZXN9ICkgewogICAgICAgICAgICBteSBARGVwbFN0YXRlcyA9IHJlZiAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gPyAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30tPkAqIDogKCAkQ29uZGl0aW9uU2V0LT57RGVwbG95bWVudFN0YXRlc30gKTsKCiAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmIEBEZXBsU3RhdGVzICYmICFncmVwIHsgJF8gZXEgJENvbmZpZ0l0ZW0tPntEZXBsU3RhdGV9IH0gQERlcGxTdGF0ZXM7CiAgICAgICAgfQoKICAgICAgICBpZiAoICRDb25kaXRpb25TZXQtPntEeW5hbWljRmllbGRWYWx1ZXN9ICkgewogICAgICAgICAgICBmb3IgbXkgJEZpZWxkTmFtZSAoIGtleXMgJENvbmRpdGlvblNldC0+e0R5bmFtaWNGaWVsZFZhbHVlc30tPiUqICkgewogICAgICAgICAgICAgICAgbXkgJEZpZWxkVmFsdWUgPSAkQ29uZGl0aW9uU2V0LT57RHluYW1pY0ZpZWxkVmFsdWVzfXskRmllbGROYW1lfTsKICAgICAgICAgICAgICAgIG5leHQgQ09ORElUSU9OIGlmICRGaWVsZFZhbHVlICYmICEkQ29uZmlnSXRlbS0+eyJEeW5hbWljRmllbGRfJEZpZWxkTmFtZSJ9IGVxICRGaWVsZFZhbHVlOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICAjIGdyYW50IGFjY2VzcwogICAgICAgIHJldHVybiAxOwogICAgfQoKICAgIGlmICggISRQYXJhbXtMb2dOb30gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdub3RpY2UnLAogICAgICAgICAgICBNZXNzYWdlICA9PiAiUGVybWlzc2lvbiBkZW5pZWQgKFB1YmxpYyBhY2Nlc3MgIgogICAgICAgICAgICAgICAgLiAib24gQ29uZmlnSXRlbTogIiAuICRQYXJhbXtDb25maWdJdGVtSUR9IC4gIikhIiwKICAgICAgICApOwogICAgfQoKICAgICMgZG9uJ3QgZ3JhbnQgYWNjZXNzCiAgICByZXR1cm47Cn0KCjE7Cg==</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+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtOwoKdXNlIHY1LjI0Owp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7CnVzZSBuYW1lc3BhY2U6OmF1dG9jbGVhbjsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwp1c2UgRW5jb2RlOwp1c2UgTGlzdDo6QWxsVXRpbHMgcXcoZmlyc3QgcGFpcndpc2UpOwp1c2UgTUlNRTo6QmFzZTY0ICAgcXcoZGVjb2RlX2Jhc2U2NCBlbmNvZGVfYmFzZTY0KTsKCiMgQ1BBTiBtb2R1bGVzCgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6TGFuZ3VhZ2UgICAgICAgICAgICAgIHF3KFRyYW5zbGF0YWJsZSk7CnVzZSBLZXJuZWw6OlN5c3RlbTo6VmFyaWFibGVDaGVjayBxdyhJc1N0cmluZ1dpdGhEYXRhIElzSGFzaFJlZldpdGhEYXRhIElzQXJyYXlSZWZXaXRoRGF0YSBJc1Bvc2l0aXZlSW50ZWdlcik7CgpvdXIgQE9iamVjdERlcGVuZGVuY2llcyA9ICgKICAgICdLZXJuZWw6OkNvbmZpZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZDo6QmFja2VuZCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6SVRTTUNvbmZpZ0l0ZW0nLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpKU09OJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TG9nJywKICAgICdLZXJuZWw6OlN5c3RlbTo6V2ViOjpSZXF1ZXN0JywKKTsKCj1oZWFkMSBOQU1FCgpLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0OjpPYmplY3RCYWNrZW5kOjpJVFNNQ29uZmlnSXRlbSAtIGltcG9ydC9leHBvcnQgYmFja2VuZCBmb3IgSVRTTUNvbmZpZ0l0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIGZ1bmN0aW9ucyB0byBpbXBvcnQgYW5kIGV4cG9ydCBJVFNNIGNvbmZpZyBpdGVtcy4KCj1oZWFkMSBQVUJMSUMgSU5URVJGQUNFCgo9aGVhZDIgbmV3KCkKCmNyZWF0ZSBhbiBvYmplY3QKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CgogICAgbG9jYWwgJEtlcm5lbDo6T00gPSBLZXJuZWw6OlN5c3RlbTo6T2JqZWN0TWFuYWdlci0+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+IGFuZCBJPE9wdGlvbmFsPiBhcmUgdXNlZC4KCj1jdXQKCnN1YiBQYXJhbXMgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTnVtYmVyJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1RoZSBudW1iZXIgKHJlcXVpcmVkIGlmIG5vIG51bWJlciBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdBIG5hbWUgKHJlcXVpcmVkIGlmIG5vIG5hbWUgbW9kdWxlIGlzIGNvbmZpZ3VyZWQpJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ1ZlcnNpb25TdHJpbmcnLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnVGhlIHZlcnNpb24gc3RyaW5nIChyZXF1aXJlZCBpZiBubyB2ZXJzaW9uIHN0cmluZyBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICA9PiAnQ2xhc3MnLAogICAgICAgICAgICBWYWx1ZSA9PiAnQSBjbGFzcyAocmVxdWlyZWQpJywKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgPT4gJ0RlcGxTdGF0ZScsCiAgICAgICAgICAgIFZhbHVlID0+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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpQcm9jZXNzTWFuYWdlbWVudDo6VHJhbnNpdGlvbkFjdGlvbjo6Q29uZmlnSXRlbVVwZGF0ZTsKCnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoSXNIYXNoUmVmV2l0aERhdGEpOwoKdXNlIHBhcmVudCBxdyhLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkJhc2UpOwoKb3VyIEBPYmplY3REZXBlbmRlbmNpZXMgPSAoCiAgICAnS2VybmVsOjpDb25maWcnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpEeW5hbWljRmllbGQnLAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJywKICAgICdLZXJuZWw6OlN5c3RlbTo6TGlua09iamVjdCcsCiAgICAnS2VybmVsOjpTeXN0ZW06OkxvZycsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlByb2Nlc3NNYW5hZ2VtZW50OjpUcmFuc2l0aW9uQWN0aW9uOjpDb25maWdJdGVtVXBkYXRlIC0gQSBtb2R1bGUgdG8gY3JlYXRlIGEgY29uZmlnIGl0ZW0KCj1oZWFkMSBERVNDUklQVElPTgoKQWxsIENvbmZpZ0l0ZW1DcmVhdGUgZnVuY3Rpb25zLgoKPWhlYWQxIFBVQkxJQyBJTlRFUkZBQ0UKCj1oZWFkMiBuZXcoKQoKRG9uJ3QgdXNlIHRoZSBjb25zdHJ1Y3RvciBkaXJlY3RseSwgdXNlIHRoZSBPYmplY3RNYW5hZ2VyIGluc3RlYWQ6CgogICAgbXkgJENvbmZpZ0l0ZW1DcmVhdGVPYmplY3QgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6UHJvY2Vzc01hbmFnZW1lbnQ6OlRyYW5zaXRpb25BY3Rpb246OkNvbmZpZ0l0ZW1DcmVhdGUnKTsKCj1jdXQKCnN1YiBuZXcgewogICAgbXkgKCAkVHlwZSwgJVBhcmFtICkgPSBAXzsKCiAgICAjIGFsbG9jYXRlIG5ldyBoYXNoIGZvciBvYmplY3QKICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9Cgo9aGVhZDIgUGFyYW1zKCkKClJldHVybnMgdGhlIGNvbmZpZ3VyYXRpb24gcGFyYW1zIGZvciB0aGlzIHRyYW5zaXRpb24gYWN0aW9uIG1vZHVsZQoKICAgIG15IEBQYXJhbXMgPSAkT2JqZWN0LT5QYXJhbXMoKTsKCkVhY2ggZWxlbWVudCBpcyBhIGhhc2ggcmVmZXJlbmNlIHRoYXQgZGVzY3JpYmVzIHRoZSBjb25maWcgcGFyYW1ldGVyLgpDdXJyZW50bHkgb25seSB0aGUga2V5cyBJPEtleT4sIEk8VmFsdWU+IGFuZCBJPE9wdGlvbmFsPiBhcmUgdXNlZC4KCj1jdXQKCnN1YiBQYXJhbXMgewogICAgbXkgKCRTZWxmKSA9IEBfOwoKICAgIG15IEBQYXJhbXMgPSAoCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnQ29uZmlnSXRlbUlEJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0NvbmZpZ0l0ZW1JRCAocmVxdWlyZWQgaWYgbm8gTnVtYmVyIGlzIGdpdmVuKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICAgICB7CiAgICAgICAgICAgIEtleSAgICAgID0+ICdOdW1iZXInLAogICAgICAgICAgICBWYWx1ZSAgICA9PiAnQ29uZmlnSXRlbSBOdW1iZXIgKHJlcXVpcmVkIGlmIG5vIENvbmZpZ0l0ZW1JRCBpcyBnaXZlbiknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTmFtZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdBIG5hbWUgKGNhbiBvbmx5IGJlIGNoYW5nZWQgaWYgbm8gbmFtZSBtb2R1bGUgaXMgY29uZmlndXJlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnVmVyc2lvblN0cmluZycsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdUaGUgdmVyc2lvbiBzdHJpbmcgKG9ubHkgaWYgbm8gdmVyc2lvbiBzdHJpbmcgbW9kdWxlIGlzIGNvbmZpZ3VyZWQgYW5kIGEgdmVyc2lvbiBpcyBhZGRlZCknLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnRGVwbFN0YXRlJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ1NldCBhIG5ldyBkZXBsb3ltZW50IHN0YXRlJywKICAgICAgICAgICAgT3B0aW9uYWwgPT4gMSwKICAgICAgICB9LAogICAgICAgIHsKICAgICAgICAgICAgS2V5ICAgICAgPT4gJ0luY2lTdGF0ZScsCiAgICAgICAgICAgIFZhbHVlICAgID0+ICdTZXQgYSBuZXcgaW5jaWRlbnQgc3RhdGUnLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnRHluYW1pY0ZpZWxkXzxOYW1lPiAocmVwbGFjZSA8TmFtZT4pJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0EgdmFsdWUnLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnTGlua0FzJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJ0FsdGVybmF0aXZlIHRvfERlcGVuZHMgb258UmVsZXZhbnQgdG8nLAogICAgICAgICAgICBPcHRpb25hbCA9PiAxLAogICAgICAgIH0sCiAgICAgICAgewogICAgICAgICAgICBLZXkgICAgICA9PiAnVXNlcklEJywKICAgICAgICAgICAgVmFsdWUgICAgPT4gJzEgKGNhbiBvdmVyd3JpdGUgdGhlIGxvZ2dlZCBpbiB1c2VyKScsCiAgICAgICAgICAgIE9wdGlvbmFsID0+IDEsCiAgICAgICAgfSwKICAgICk7CgogICAgcmV0dXJuIEBQYXJhbXM7Cn0KCj1oZWFkMiBSdW4oKQoKICAgIFJ1biBEYXRhCgogICAgbXkgJENvbmZpZ0l0ZW1VcGRhdGVSZXN1bHQgPSAkQ29uZmlnSXRlbVVwZGF0ZUFjdGlvbk9iamVjdC0+UnVuKAogICAgICAgIFVzZXJJRCAgICAgICAgICAgICAgICAgICA9PiAxMjMsCiAgICAgICAgVGlja2V0ICAgICAgICAgICAgICAgICAgID0+IFwlVGlja2V0LCAgICMgcmVxdWlyZWQKICAgICAgICBQcm9jZXNzRW50aXR5SUQgICAgICAgICAgPT4gJ1AxMjMnLAogICAgICAgIEFjdGl2aXR5RW50aXR5SUQgICAgICAgICA9PiAnQTEyMycsCiAgICAgICAgVHJhbnNpdGlvbkVudGl0eUlEICAgICAgID0+ICdUMTIzJywKICAgICAgICBUcmFuc2l0aW9uQWN0aW9uRW50aXR5SUQgPT4gJ1RBMTIzJywKICAgICAgICBDb25maWcgICAgICAgICAgICAgICAgICAgPT4gewogICAgICAgICAgICAjIGNvbmZpZyBpdGVtIHJlcXVpcmVkOgogICAgICAgICAgICBDb25maWdJdGVtSUQgID0+ICdJRCBvZiB0aGUgQ29uZmlnIEl0ZW0nLAogICAgICAgICAgICAjIE9SCiAgICAgICAgICAgIE51bWJlciAgICAgICAgPT4gJ051bWJlciBvZiB0aGUgQ29uZmlnSXRlbScsCgogICAgICAgICAgICAjIGNvbmZpZyBpdGVtIG9wdGlvbmFsOgogICAgICAgICAgICBOYW1lICAgICAgICAgID0+ICdTb21lIENvbmZpZyBJdGVtIE5hbWUnLAogICAgICAgICAgICBEZXBsU3RhdGUgICAgID0+ICdTb21lIERlcGxveW1lbnQgU3RhdGUnLAogICAgICAgICAgICBJbmNpU3RhdGUgICAgID0+ICdTb21lIEluY2lkZW50IFN0YXRlJywKICAgICAgICAgICAgJURhdGFQYXlsb2FkLAoKICAgICAgICAgICAgIyBvdGhlcjoKICAgICAgICAgICAgRHluYW1pY0ZpZWxkX05hbWVYID0+ICRWYWx1ZSwKICAgICAgICAgICAgTGlua0FzID0+ICRMaW5rVHlwZSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBOb3JtYWwsIFBhcmVudCwgQ2hpbGQsIGV0Yy4gKHJlc3BlY3RpdmUgb3JpZ2luYWwgdGlja2V0KQogICAgICAgICAgICBVc2VySUQgPT4gMTIzLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG9wdGlvbmFsLCB0byBvdmVycmlkZSB0aGUgVXNlcklEIGZyb20gdGhlIGxvZ2dlZCB1c2VyCiAgICAgICAgfQogICAgKTsKICAgIFRpY2tldCBjb250YWlucyB0aGUgcmVzdWx0IG9mIFRpY2tldEdldCBpbmNsdWRpbmcgRHluYW1pY0ZpZWxkcwogICAgQ29uZmlnIGlzIHRoZSBDb25maWcgSGFzaCBzdG9yZWQgaW4gYSBQcm9jZXNzOjpUcmFuc2l0aW9uQWN0aW9uJ3MgIENvbmZpZyBrZXkKICAgIFJldHVybnM6CgogICAgJENvbmZpZ0l0ZW1DcmVhdGVSZXN1bHQgPSAxOyAjIDAKCiAgICApOwoKPWN1dAoKc3ViIFJ1biB7CiAgICBteSAoICRTZWxmLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgZGVmaW5lIGEgY29tbW9uIG1lc3NhZ2UgdG8gb3V0cHV0IGluIGNhc2Ugb2YgYW55IGVycm9yCiAgICBteSAkQ29tbW9uTWVzc2FnZSA9ICJQcm9jZXNzOiAkUGFyYW17UHJvY2Vzc0VudGl0eUlEfSBBY3Rpdml0eTogJFBhcmFte0FjdGl2aXR5RW50aXR5SUR9IgogICAgICAgIC4gIiBUcmFuc2l0aW9uOiAkUGFyYW17VHJhbnNpdGlvbkVudGl0eUlEfSIKICAgICAgICAuICIgVHJhbnNpdGlvbkFjdGlvbjogJFBhcmFte1RyYW5zaXRpb25BY3Rpb25FbnRpdHlJRH0gLSAiOwoKICAgICMgY2hlY2sgZm9yIG1pc3Npbmcgb3Igd3JvbmcgcGFyYW1zCiAgICBteSAkU3VjY2VzcyA9ICRTZWxmLT5fQ2hlY2tQYXJhbXMoCiAgICAgICAgJVBhcmFtLAogICAgICAgIENvbW1vbk1lc3NhZ2UgPT4gJENvbW1vbk1lc3NhZ2UsCiAgICApOwogICAgcmV0dXJuIGlmICEkU3VjY2VzczsKCiAgICAjIG92ZXJyaWRlIFVzZXJJRCBpZiBzcGVjaWZpZWQgYXMgYSBwYXJhbWV0ZXIgaW4gdGhlIFRBIGNvbmZpZwogICAgJFBhcmFte1VzZXJJRH0gPSAkU2VsZi0+X092ZXJyaWRlVXNlcklEKCVQYXJhbSk7CgogICAgIyB1c2UgdGlja2V0IGF0dHJpYnV0ZXMgaWYgbmVlZGVkCiAgICAkU2VsZi0+X1JlcGxhY2VUaWNrZXRBdHRyaWJ1dGVzKCVQYXJhbSk7CiAgICAkU2VsZi0+X1JlcGxhY2VBZGRpdGlvbmFsQXR0cmlidXRlcyglUGFyYW0pOwoKICAgIG15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwogICAgbXkgJENvbmZpZ0l0ZW1PYmplY3QgICAgID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OklUU01Db25maWdJdGVtJyk7CgogICAgbXkgJURlcGxTdGF0ZTJJRE1hcCA9IHJldmVyc2UgJEdlbmVyYWxDYXRhbG9nT2JqZWN0LT5JdGVtTGlzdCggQ2xhc3MgPT4gJ0lUU006OkNvbmZpZ0l0ZW06OkRlcGxveW1lbnRTdGF0ZScgKS0+JSo7CiAgICBteSAlSW5jaVN0YXRlMklETWFwID0gcmV2ZXJzZSAkR2VuZXJhbENhdGFsb2dPYmplY3QtPkl0ZW1MaXN0KCBDbGFzcyA9PiAnSVRTTTo6Q29yZTo6SW5jaWRlbnRTdGF0ZScgKS0+JSo7CgogICAgbXkgJUNvbmZpZ0l0ZW1QYXJhbTsKCiAgICBpZiAoICRQYXJhbXtDb25maWd9e0NvbmZpZ0l0ZW1JRH0gKSB7CgogICAgICAgICMgZm9yIHRoZSBwcm9jZXNzZXMgbW9zdGx5IHRoZSBDb25maWdJdGVtcyB3aWxsIGNvbWUgZnJvbSByZWZlcmVuY2UgZmllbGRzCiAgICAgICAgaWYgKCByZWYgJFBhcmFte0NvbmZpZ317Q29uZmlnSXRlbUlEfSApIHsKICAgICAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9ID0gJFBhcmFte0NvbmZpZ317Q29uZmlnSXRlbUlEfVswXTsKICAgICAgICB9CgogICAgICAgIGVsc2UgewogICAgICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkUGFyYW17Q29uZmlnfXtDb25maWdJdGVtSUR9OwogICAgICAgIH0KICAgIH0KCiAgICBlbHNlIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0NvbmZpZ0l0ZW1JRH0gPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbUxvb2t1cCgKICAgICAgICAgICAgQ29uZmlnSXRlbU51bWJlciA9PiAkUGFyYW17Q29uZmlnfXtOdW1iZXJ9LAogICAgICAgICk7CiAgICB9CgogICAgaWYgKCAhJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9ICkgewogICAgICAgIG15ICRNaXNzaW5nID0gJFBhcmFte0NvbmZpZ317TnVtYmVyfSA/ICJObyBDb25maWdJdGVtIHdpdGggTnVtYmVyICckUGFyYW17Q29uZmlnfXtOdW1iZXJ9JyEiCiAgICAgICAgICAgIDogIk5lZWQgQ29uZmlnSXRlbUlEIG9yIE51bWJlciEiOwoKICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgTWVzc2FnZSAgPT4gJENvbW1vbk1lc3NhZ2UKICAgICAgICAgICAgICAgIC4gIkNvdWxkIG5vdCB1cGRhdGUgQ0kgaW4gVGlja2V0OiIKICAgICAgICAgICAgICAgIC4gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH0gLiAiISAkTWlzc2luZyIsCiAgICAgICAgKTsKCiAgICAgICAgcmV0dXJuOwogICAgfQoKICAgIG15ICRDb25maWdJdGVtID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1HZXQoCiAgICAgICAgQ29uZmlnSXRlbUlEID0+ICRDb25maWdJdGVtUGFyYW17Q29uZmlnSXRlbUlEfSwKICAgICk7CgogICAgaWYgKCAhJENvbmZpZ0l0ZW0gKSB7CiAgICAgICAgJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkxvZycpLT5Mb2coCiAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAuICJObyBDb25maWdJdGVtIHdpdGggSUQgJyRDb25maWdJdGVtUGFyYW17Q29uZmlnSXRlbUlEfSc7IGZhaWxlZCBpbiBUaWNrZXQ6IgogICAgICAgICAgICAgICAgLiAkUGFyYW17VGlja2V0fS0+e1RpY2tldElEfSAuICIhIiwKICAgICAgICApOwoKICAgICAgICByZXR1cm47CiAgICB9CgogICAgZm9yIG15ICRPcHRpb25hbEF0dHJpYnV0ZSAoIHF3L05hbWUgTnVtYmVyIFZlcnNpb25TdHJpbmcvICkgewogICAgICAgIGlmICggJFBhcmFte0NvbmZpZ317ICRPcHRpb25hbEF0dHJpYnV0ZSB9ICkgewogICAgICAgICAgICAkQ29uZmlnSXRlbVBhcmFte05hbWV9ID0gJFBhcmFte0NvbmZpZ317ICRPcHRpb25hbEF0dHJpYnV0ZSB9OwogICAgICAgIH0KICAgIH0KCiAgICBpZiAoICRQYXJhbXtDb25maWd9e0RlcGxTdGF0ZX0gJiYgJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9ICkgewogICAgICAgICRDb25maWdJdGVtUGFyYW17RGVwbFN0YXRlSUR9ID0gJERlcGxTdGF0ZTJJRE1hcHsgJFBhcmFte0NvbmZpZ317RGVwbFN0YXRlfSB9OwogICAgfQogICAgaWYgKCAkUGFyYW17Q29uZmlnfXtJbmNpU3RhdGV9ICYmICRJbmNpU3RhdGUySURNYXB7ICRQYXJhbXtDb25maWd9e0luY2lTdGF0ZX0gfSApIHsKICAgICAgICAkQ29uZmlnSXRlbVBhcmFte0luY2lTdGF0ZUlEfSA9ICRJbmNpU3RhdGUySURNYXB7ICRQYXJhbXtDb25maWd9e0luY2lTdGF0ZX0gfTsKICAgIH0KCiAgICBteSAkRHluYW1pY0ZpZWxkT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkR5bmFtaWNGaWVsZCcpOwogICAgbXkgJFNldE1hcHBpbmcgICAgICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnRHluYW1pY0ZpZWxkczo6RHluYW1pY0ZpZWxkU2V0OjpJbm5lckZpZWxkc1RpY2tldFRvQ0knKSAvLyB7fTsKCiAgICAjIGFkZCBkeW5hbWljIGZpZWxkcwogICAgQ09ORklHUEFSQU06CiAgICBmb3IgbXkgJENvbmZpZ1BhcmFtICgga2V5cyAkUGFyYW17Q29uZmlnfS0+JSogKSB7CiAgICAgICAgbmV4dCBDT05GSUdQQVJBTSBpZiAkQ29uZmlnUGFyYW0gIX4gL15EeW5hbWljRmllbGRfKC4rKS87CgogICAgICAgIG15ICRGaWVsZE5hbWUgICAgPSAkMTsKICAgICAgICBteSAkRHluYW1pY0ZpZWxkID0gJER5bmFtaWNGaWVsZE9iamVjdC0+RHluYW1pY0ZpZWxkR2V0KAogICAgICAgICAgICBOYW1lID0+ICRGaWVsZE5hbWUsCiAgICAgICAgKTsKCiAgICAgICAgbmV4dCBDT05GSUdQQVJBTSBpZiAhSXNIYXNoUmVmV2l0aERhdGEoICREeW5hbWljRmllbGQgKTsKCiAgICAgICAgIyBmb3Igc2V0IGZpZWxkcyB3ZSBuZWVkIHRvIG1hcCB0aGUgbmFtZSBvZiB0aGUgaW5uZXIgZmllbGRzCiAgICAgICAgaWYgKCAkRHluYW1pY0ZpZWxkICYmICREeW5hbWljRmllbGQtPntGaWVsZFR5cGV9IGVxICdTZXQnICYmIHJlZiAkUGFyYW17Q29uZmlnfXsgJENvbmZpZ1BhcmFtIH0gKSB7CiAgICAgICAgICAgIFNFVFZBTFVFOgogICAgICAgICAgICBmb3IgbXkgJFNldFZhbHVlICggJFBhcmFte0NvbmZpZ317ICRDb25maWdQYXJhbSB9LT5AKiApIHsKICAgICAgICAgICAgICAgIG5leHQgdW5sZXNzICRTZXRWYWx1ZTsKCiAgICAgICAgICAgICAgICBmb3IgbXkgJElubmVyRmllbGQgKCBrZXlzICRTZXRWYWx1ZS0+JSogKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCAkU2V0TWFwcGluZy0+eyAkSW5uZXJGaWVsZCB9ICkgewogICAgICAgICAgICAgICAgICAgICAgICAkU2V0VmFsdWUtPnsgJFNldE1hcHBpbmctPnsgJElubmVyRmllbGQgfSB9ID0gZGVsZXRlICRTZXRWYWx1ZS0+eyAkSW5uZXJGaWVsZCB9OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgJENvbmZpZ0l0ZW1QYXJhbXsgJENvbmZpZ1BhcmFtIH0gPSAkUGFyYW17Q29uZmlnfXsgJENvbmZpZ1BhcmFtIH07CiAgICB9CgogICAgIyB1cGRhdGUgY29uZmlnIGl0ZW0KICAgICRTdWNjZXNzID0gJENvbmZpZ0l0ZW1PYmplY3QtPkNvbmZpZ0l0ZW1VcGRhdGUoCiAgICAgICAgJUNvbmZpZ0l0ZW1QYXJhbSwKICAgICAgICBVc2VySUQgPT4gJFBhcmFte1VzZXJJRH0sCiAgICApOwoKICAgIGlmICggISRTdWNjZXNzICkgewogICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICBQcmlvcml0eSA9PiAnZXJyb3InLAogICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgdXBkYXRlIENvbmZpZ0l0ZW0gJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9IGZyb20gVGlja2V0OiAiCiAgICAgICAgICAgICAgICAuICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9IC4gJyEnLAogICAgICAgICk7CgogICAgICAgIHJldHVybjsKICAgIH0KCiAgICAjIGxpbmsgdGlja2V0CiAgICBpZiAoICRQYXJhbXtDb25maWd9LT57TGlua0FzfSApIHsKCiAgICAgICAgIyBnZXQgbGluayBvYmplY3QKICAgICAgICBteSAkTGlua09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMaW5rT2JqZWN0Jyk7CgogICAgICAgICMgZ2V0IGNvbmZpZyBvZiBhbGwgdHlwZXMKICAgICAgICBteSAlQ29uZmlndXJlZFR5cGVzID0gJExpbmtPYmplY3QtPlR5cGVMaXN0KAogICAgICAgICAgICBVc2VySUQgPT4gMSwKICAgICAgICApOwoKICAgICAgICBteSAkU2VsZWN0ZWRUeXBlOwogICAgICAgIG15ICRTZWxlY3RlZERpcmVjdGlvbjsKCiAgICAgICAgVFlQRToKICAgICAgICBmb3IgbXkgJFR5cGUgKCBzb3J0IGtleXMgJUNvbmZpZ3VyZWRUeXBlcyApIHsKICAgICAgICAgICAgaWYgKAogICAgICAgICAgICAgICAgJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IG5lICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57U291cmNlTmFtZX0KICAgICAgICAgICAgICAgICYmICRQYXJhbXtDb25maWd9LT57TGlua0FzfSBuZSAkQ29uZmlndXJlZFR5cGVzeyRUeXBlfS0+e1RhcmdldE5hbWV9CiAgICAgICAgICAgICAgICApCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIG5leHQgVFlQRTsKICAgICAgICAgICAgfQogICAgICAgICAgICAkU2VsZWN0ZWRUeXBlICAgICAgPSAkVHlwZTsKICAgICAgICAgICAgJFNlbGVjdGVkRGlyZWN0aW9uID0gJ1NvdXJjZSc7CiAgICAgICAgICAgIGlmICggJFBhcmFte0NvbmZpZ30tPntMaW5rQXN9IGVxICRDb25maWd1cmVkVHlwZXN7JFR5cGV9LT57VGFyZ2V0TmFtZX0gKSB7CiAgICAgICAgICAgICAgICAkU2VsZWN0ZWREaXJlY3Rpb24gPSAnVGFyZ2V0JzsKICAgICAgICAgICAgfQogICAgICAgICAgICBsYXN0IFRZUEU7CiAgICAgICAgfQoKICAgICAgICBpZiAoICEkU2VsZWN0ZWRUeXBlICkgewogICAgICAgICAgICAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6TG9nJyktPkxvZygKICAgICAgICAgICAgICAgIFByaW9yaXR5ID0+ICdlcnJvcicsCiAgICAgICAgICAgICAgICBNZXNzYWdlICA9PiAkQ29tbW9uTWVzc2FnZQogICAgICAgICAgICAgICAgICAgIC4gIkxpbmtBcyAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30gaXMgaW52YWxpZCEiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CgogICAgICAgIG15ICRTb3VyY2VPYmplY3RJRCAgID0gJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgIG15ICRTb3VyY2VPYmplY3RUeXBlID0gJ0lUU01Db25maWdJdGVtJzsKICAgICAgICBteSAkVGFyZ2V0T2JqZWN0SUQgICA9ICRQYXJhbXtUaWNrZXR9LT57VGlja2V0SUR9OwogICAgICAgIG15ICRUYXJnZXRPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgaWYgKCAkU2VsZWN0ZWREaXJlY3Rpb24gZXEgJ1RhcmdldCcgKSB7CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RJRCAgID0gJFBhcmFte1RpY2tldH0tPntUaWNrZXRJRH07CiAgICAgICAgICAgICRTb3VyY2VPYmplY3RUeXBlID0gJ1RpY2tldCc7CiAgICAgICAgICAgICRUYXJnZXRPYmplY3RJRCAgID0gJENvbmZpZ0l0ZW1QYXJhbXtDb25maWdJdGVtSUR9OwogICAgICAgICAgICAkVGFyZ2V0T2JqZWN0VHlwZSA9ICdJVFNNQ29uZmlnSXRlbSc7CiAgICAgICAgfQoKICAgICAgICBteSAkU3VjY2VzcyA9ICRMaW5rT2JqZWN0LT5MaW5rQWRkKAogICAgICAgICAgICBTb3VyY2VPYmplY3QgPT4gJFNvdXJjZU9iamVjdFR5cGUsCiAgICAgICAgICAgIFNvdXJjZUtleSAgICA9PiAkU291cmNlT2JqZWN0SUQsCiAgICAgICAgICAgIFRhcmdldE9iamVjdCA9PiAkVGFyZ2V0T2JqZWN0VHlwZSwKICAgICAgICAgICAgVGFyZ2V0S2V5ICAgID0+ICRUYXJnZXRPYmplY3RJRCwKICAgICAgICAgICAgVHlwZSAgICAgICAgID0+ICRTZWxlY3RlZFR5cGUsCiAgICAgICAgICAgIFN0YXRlICAgICAgICA9PiAnVmFsaWQnLAogICAgICAgICAgICBVc2VySUQgICAgICAgPT4gJFBhcmFte1VzZXJJRH0sCiAgICAgICAgKTsKCiAgICAgICAgaWYgKCAhJFN1Y2Nlc3MgKSB7CiAgICAgICAgICAgICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpMb2cnKS0+TG9nKAogICAgICAgICAgICAgICAgUHJpb3JpdHkgPT4gJ2Vycm9yJywKICAgICAgICAgICAgICAgIE1lc3NhZ2UgID0+ICRDb21tb25NZXNzYWdlCiAgICAgICAgICAgICAgICAgICAgLiAiQ291bGRuJ3QgTGluayBUaWNrZXRzICRTb3VyY2VPYmplY3RJRCB3aXRoICRUYXJnZXRPYmplY3RJRCBhcyAkUGFyYW17Q29uZmlnfS0+e0xpbmtBc30hIiwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gMTsKfQoKMTsK</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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgpwYWNrYWdlIEtlcm5lbDo6U3lzdGVtOjpTeXNDb25maWc6OlZhbHVlVHlwZTo6RW50aXR5OjpDb25maWdJdGVtQ2xhc3M7Cgp1c2Ugc3RyaWN0Owp1c2Ugd2FybmluZ3M7Cgp1c2UgS2VybmVsOjpTeXN0ZW06OlZhcmlhYmxlQ2hlY2sgcXcoOmFsbCk7Cgp1c2UgcGFyZW50IHF3KEtlcm5lbDo6U3lzdGVtOjpTeXNDb25maWc6OlZhbHVlVHlwZTo6RW50aXR5KTsKCm91ciBAT2JqZWN0RGVwZW5kZW5jaWVzID0gKAogICAgJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycsCiAgICAnS2VybmVsOjpTeXN0ZW06OldlYjo6UmVxdWVzdCcsCik7Cgo9aGVhZDEgTkFNRQoKS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZzo6VmFsdWVUeXBlOjpFbnRpdHk6OkNvbmZpZ0l0ZW1DbGFzcyAtIFN5c3RlbSBjb25maWd1cmF0aW9uIGNvbmZpZyBpdGVtIGNsYXNzIGVudGl0eSB0eXBlIGJhY2tlbmQuCgo9aGVhZDEgUFVCTElDIElOVEVSRkFDRQoKPWhlYWQyIG5ldygpCgpDcmVhdGUgYW4gb2JqZWN0LiBEbyBub3QgdXNlIGl0IGRpcmVjdGx5LCBpbnN0ZWFkIHVzZToKCiAgICB1c2UgS2VybmVsOjpTeXN0ZW06Ok9iamVjdE1hbmFnZXI7CiAgICBsb2NhbCAkS2VybmVsOjpPTSA9IEtlcm5lbDo6U3lzdGVtOjpPYmplY3RNYW5hZ2VyLT5uZXcoKTsKICAgIG15ICRFbnRpdHlUeXBlT2JqZWN0ID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OlN5c0NvbmZpZzo6VmFsdWVUeXBlOjpFbnRpdHk6OkNvbmZpZ0l0ZW1DbGFzcycpOwoKPWN1dAoKc3ViIG5ldyB7CiAgICBteSAoICRUeXBlLCAlUGFyYW0gKSA9IEBfOwoKICAgICMgQWxsb2NhdGUgbmV3IGhhc2ggZm9yIG9iamVjdC4KICAgIG15ICRTZWxmID0ge307CiAgICBibGVzcyggJFNlbGYsICRUeXBlICk7CgogICAgcmV0dXJuICRTZWxmOwp9CgpzdWIgRW50aXR5VmFsdWVMaXN0IHsKICAgIG15ICggJFNlbGYsICVQYXJhbSApID0gQF87CgogICAgbXkgJENvbmZpZ0l0ZW1DbGFzc2VzID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1MaXN0KAogICAgICAgIENsYXNzID0+ICdJVFNNOjpDb25maWdJdGVtOjpDbGFzcycsCiAgICAgICAgVmFsaWQgPT4gMSwKICAgICk7CgogICAgbXkgQFJlc3VsdDsKCiAgICBmb3IgbXkgJElEICggc29ydCBrZXlzICRDb25maWdJdGVtQ2xhc3Nlcy0+JSogKSB7CiAgICAgICAgcHVzaCBAUmVzdWx0LCAkQ29uZmlnSXRlbUNsYXNzZXMtPnskSUR9OwogICAgfQoKICAgIHJldHVybiBAUmVzdWx0Owp9CgpzdWIgRW50aXR5TG9va3VwRnJvbVdlYlJlcXVlc3QgewogICAgbXkgKCAkU2VsZiwgJVBhcmFtICkgPSBAXzsKCiAgICBteSAkQ2xhc3NJRCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpXZWI6OlJlcXVlc3QnKS0+R2V0UGFyYW0oIFBhcmFtID0+ICdDb25maWdJdGVtQ2xhc3NJRCcgKSAvLyAnJzsKCiAgICByZXR1cm4gaWYgISRDbGFzc0lEOwoKICAgIG15ICRJdGVtID0gJEtlcm5lbDo6T00tPkdldCgnS2VybmVsOjpTeXN0ZW06OkdlbmVyYWxDYXRhbG9nJyktPkl0ZW1HZXQoCiAgICAgICAgSXRlbUlEID0+ICRDbGFzc0lELAogICAgKTsKCiAgICByZXR1cm4gJEl0ZW0tPntOYW1lfTsKfQoKMTsK</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/965513du3alZSUtGDBAk9PT0EQoqKihgwZ0uKa0RHV1tZmZWUplcru3btbtubMzExRFLt27dpxw5HMcA8AkCUnJyckJHh4eNx7770HDx40XqRQKCyS4mqpeiy4X+m2tgWtMmfD5h6vrc4PYFkde7YIAE2KiYlZvnx5RUXFtWvXXnzxRbn8qaeeSktL02q1glF20ksvvfTCCy9cvHixtrb2t99+e/LJJ+uts95tjT366KObN2+uW/7000+/8cYbOTk5OTk5//Ef/2G8aPPmzY8++mhLj/L/DBw4MCUl5fTp0w8++OBnn33WytrQcVlpoiWBabwBAG2uxWnd5khISNi4cWNxcbFJXEloUeSlXnXrkR7+1auystIiO613v+YsanGdLa7c/PUbOW+AzXFzDNi5//7v/965c6efn9+oUaPGjRsnlz/++OOTJ0/29vZ+99135fFir7766mOPPTZ58mQvL68//OEPTz31VL111rutsSlTphw9ejQjI8Ok/J133omKiurfv390dPTDDz8sl6enpx8/fnzSpEmtPVpBEARhwIABW7duTUhIsEht6Iis9Ho4aTIvoc6LFwEAsB7jrHNBEKqrq19//fXAwMDg4OB169b16tVLKtdqtXPnzu3du3evXr1mz55dW1srlSsUCoVCsWrVqrCwMBcXl+TkZKk8MjJSoVBotdrJkydL68i7SElJMSkRBKGysvKFF15Qq9XR0dHp6el1V6ir3np8fX3Ly8sVv5PLNRrN4MGD3d3dAwMDX3nlFSnGJK2zYsUKT0/P1NTUtWvXenp6yofQrP1WVFRMnz7dw8Nj4MCB58+fN9kkNjbW/PT5GzduDB06VK1WG79PuaH9NnLe6l2/oevV0HkD2glCS4Cdu/vuu48cOVJVVXX9+vWXXnpJfjDy5JNPXrp0qaqq6vTp06NGjZIKlUrlq6++evHixerq6nPnzj3++ONSucnjlHq3Nebm5vbmm2++8cYbJpt36tTpv/7rv4qLi2/dujVr1iy5/M0333zzzTddXV0teOC8Ic6RWSlrSf6JJWsJAGArb7/9dm1t7fnz569everu7l5cXCyVz5s3LzQ0ND09PSMjIzQ0dN68eVK59McrNzc3LS1t48aN8rO3rKwsaZH4O3kX8fHxdVNp5syZ4+vrm5+ff+jQoV27dglmpNvUW4/U4Lo7nTVr1vLly2tra69cuTJ69OhZs2bJu9Dr9f/85z8nTJhw/vz5f/7zn00+Pmyo/cHBwcXFxXv37v3xxx9Nlpo0pnHr1q3bvHnzlStXPDw8Zs+e3eR+Gzpv9a7f0PVq6LwB7QQDOwEA9qawsLCkpMTHx8ff39+C1Wq12uvXrysUirrziHUgCoUiOjqaabwBQCZN423+G+Lef/9941wVy9qyZcsnn3wSHx8fGhqam5trvCgkJCQnJyc4OPjChQt131MRFBR06dIlHx8fQRBKSkr69u0rz4ZpPJuPycw+jU9IZLwoICDg0qVL0n41Gk1AQICZHcm6u6h3p126dJHDZIIg+Pv7FxQUGK9c90Oz9uvr65uZmSm1v6ioyM/Pr2UdYYVCkZ2dLb3vuLi4uE+fPlI7G9pvk+et8fPTyLUzMXPmzMjISONQF9CWmMYbAGBvpAFxVspaImUJABzcp59+OmPGDLVabY3K5dHcOTk50geTgIKUmVsvqyYNGA/CsuCOamtrXVxcBEGIiYnZs2ePpaptcqcWqcdgMDR5V2Dt8wa0E4SWAAD2xt/fX61WW2muJSY4AAD89a9/rfeNuq2XkpLS+ApPPPHE8uXLFy9erNFofv311++//16a+PLZZ59NSkqSxpGtXr36mWeesWzDEhISVqxYsWDBgsrKyjVr1rSmKmdn5+Tk5EceeWTfvn0ffPDBL7/8IgjC+PHj16xZM27cuJCQEGs8xXnyySc/+uijxMREjUbz4YcfmiyVJlo6fvy4OVUlJSU9//zz7u7uixYtmjZtWuMrW/u8Ae0Ej14BAPZGqVS6uLhYKbRE1hIAoC0FBAQYf12+fHlpaWlAQEC/fv22bt26bNkyqXzhwoUajSY8PDw8PLyoqGjhwoVSufREpO6/0hzSwu/zRhs/OJG/GpcvWbIkPz/fz89v+PDhZr7Vt956BEGQphBSq9Vr1qxZu3atVPjaa69pNJoRI0b4+vqOHTt2yZIlJg0WzH66U+9+ly1blp2drVarx48f/9xzz5nUptfrzRxkJwjC9OnTJ0+eHBUVVV5eLrWzkf02ct7qXb+h69XQeQPaCeZaAgDALBUVFbm5uZ07dw4PD7d1W1qOuZYAwERz51ry9/c/ceKElbKWRo4cOWfOnPj4eGtUbhFarXb79u3z5s27cOGCrdvSkVj7vDHXEmyLR68AAJiFAXEAAEf2zjvvKBQKDw+P9evXHzhwwNbN6TA4b3AEhJYAADAL03gDABzZokWLRFGsqalJTk4ODAy0dXM6DM4bHAH3xwAAmIWsJQAAjAUGBirqaIPoia32C6AhvCEOAACzkLUEAICxW7duOdR+ATSE+2MAAMyiVCo7derk7Oxs64YAAAAA7QhZSwAAmMXb29vb29vWrQAAAADaF0JLAAC7Ul5ertVq3dzcOnXqZOu2AAAAAPaPAXEAALtSVlZWWFhYXV1t64YAAAAADoGsJQCAXXFzc1OpVKQsAQBgDQqFQnqvRb2LhN/femGN+gG0W2QtAQDsio+PT2BgYOfOnW3dEAAALCA4ONikxNPT01KVV1ZWNneTRuI+FgkJmV+JBc8DgFYiawkAAKBjmzlz5oYNG2zdCqAdcXNzy87OtnUrLCM/P9/4q6+vb3l5uZQfJBgFYqSSHTt2xMfHp6SkTJgwISws7ObNm1L5vn37nnrqqYiIiO+//z4yMlIQBI1GEx8ff/LkyYCAgKlTp3744Ydubm6Nt0SqVvj36E9FRcXMmTM3b97cs2fPr776ymST2NhYQRCOHz9uzpHWW7/U/k8//XTp0qUFBQUbN26cNGlSI+cBgE0QWgIAAOjYKisr33rrreeff97WDQHaBY1GEx0dbetWWEtxcXG9Q8aOHDnyxhtvxMfHC4Iwfvz4QYMGrV27VhAEURQVCkVRUdHNmze3bdv2xhtvbNmyRRCEWbNmLV++PC4urqamZu/evbNmzfr8888b33V8fLxUm3HhnDlzgoODi4uLy8rKkpKSTDZpVsSn3vqlktzc3LS0tP379yckJNTW1jZyHgDYBKElAACADs/V1VWtVtu6FUC7IIUeOrrQ0NDc3FzpsxRtCQkJycnJaWj9oUOHBgcHb9myZfLkyd9//32PHj3uueceeenDDz/cqVOn8ePHz5gxQyr58ccfv/zyS3kFf3//JkNL9fr2228zMzNdXFz8/Pz+8pe/vP3228ZLT5w40YI66/rggw8EQZg0aZJWq7VIhfZHq9V++umn3333na0b4ui2bt0aGhpq61bYAKElAAAAAGhf5ChS47k5tbW1Li4u0ufFixc/8cQTEyZM+Pvf//7999/Xu76T0/91AGNiYvbs2WPRJtsyqGd8HhyTSqUaP358QkKCrRvi0KZOnVpTU2PrVtgGoSUAAMySk5Oj1+uDg4OdnZ1t3RYAgONydnZOTk5+5JFH9u3b98EHH/zyyy9SeZ8+fYYNG/boo48OGTKkZ8+expv8+uuvDz/88M6dOx966CGpZPz48WvWrBk3blxISIhS2fKXOz355JMfffRRYmKiRqP58MMPTZY2a66l5mroPDgmpVLZs2fPMWPG2LohDs2R45uElgAAMEtVVRVzOgAw0ZrZXpgpBuYICAgwKdm4cWNCQoKLi8vYsWOlCZVkb731Vt++fS9fvmyySUhISPfu3cPDwzdt2iSVvPbaax9++OGIESNKSkqGDBkyatSouXPnNt4SeRYk6YP007ts2bKXX35ZrVZ37979q6++WrlypfEPtl6vNz9uVW/90mepTuPPjZ8HAG2M0BIAAGYJCQkxGAzyUAIAjiA5OTkhIUEUxcDAwLvvvnvXrl22bhEczq1bt0xKJk2a1NDQsx07drz00kvh4eEm5dHR0Tdv3jQuUalUb7311ltvvWV+S+qNhLq7u3/55ZfytE0m65w6daqV9RsXmqzQyHkA0Ma4PwYA2A+DwdCarP7GNflWZgD2JyEhQX7Zeb1ak3bU0LYhISHy/M2A+eSsnxUrVpgUkiIHwKoILQEA7EdWVpZerw8PD+/UqZOt2wLAHmi12kbiSlaSl5fX+Ao1NTX8L4e6msz6AQArsdajXQAA2pgoijqdThRFlUpl67YAaCPp6elTpkxRq9Wurq4jRozYv39/r1695KUXL16cOHFiaGhoaGjo5MmT09PT5UUKhUKhUJSXl0+cONHFxcXFxSU5Odm45sjISDndQzJq1CjjFS5fviyV123Vli1bevbs6eHh8cc//rGysrLuag1t26NHD5OdmqyzcePG0NDQzp07e3h4jB07Vh5tJK35j3/8w9PTMzU1dfHixe7u7iZHBDQpMDBQUUdgYKCt2wWgvSO0BACwE3q9XhAEhULBdEiAg7h48eK4cePGjRt34cKFsrKyDRs2XL58ubi4WF76pz/9acWKFTk5OTk5OR9//PH06dPl6JKUyjFr1qy//e1vNTU10nzAxpVnZWVJ64i/O3jwoPEKPXv2rDcf5OjRo+++++6mTZuKiopeeeWVxMREoU7mSEPbZmZmmuzUeLWDBw+uX79++/btlZWV+fn5b7/99syZM0+ePCnXf/ny5XXr1j3++OOFhYXr16/nNeRorlu3bol11J3sCQBMEFoCANgJnU4nCAIpS4DjmDt37oIFC1544YWQkBBnZ+ewsLC//vWvhYWF0tI5c+YsWLCgW7du0teuXbvOnz9/zpw5xjU8+OCDI0aMUCgUkyZN0mq1FmlVYmLixx9/PGDAgE6dOg0dOnTo0KEWqVaq+fPPPx84cKCrq6uHh8fIkSOTkpKMp2FesGDBlClTCgsLpQ+WOiIAABrHc10AgJ2QQkukLAGO4+DBg2vWrGlk6bp164xLYmNjTRJ5pk6davFWnTx5csiQIfLXkSNHWqrm48ePy5EymfEbBry8vKQPnp6eltopAABNImsJAGAnCC0Bjkav19c71ZGs7qCzDj2lsaur67Vr10wGK1VUVNi6XQAAR0doCQBgJ6ShH87OzrZuCIA2MmzYsG3btjW0dNSoUUePHjUuOXLkyOjRo63dqkGDBp04cUL+um/fvlZWWFNTBuCVkwAAIABJREFUI32YMGHCN99808raAACwOEJLAAA7YdWsJZ1OV1lZKXfwALQHixcvfvfdd/ft2yeKYlVVVXp6+po1a5577jlp6dKlS+fNm5eamqrT6XQ6XWpq6vz585cuXWrtViUmJv7nf/5nRkaGVqtNTU39+eefm1uDs7Oz9HK3vLy8VatWxcXFSeUffPBBUlLSwoULr1+/rtVqi4uLd+/ePWHCBAsfAGCPGnqfY2vMmzdP/rxhwwaVSqVQKOq+blJ+156Pj09aWlqT5cbVAh0FoSUAgJ2watZSeXl5Tk6O/OYpAO1BbGxscnLy0qVL1Wp1SEjIM888U11d/dlnn0lL77rrrm+//XbJkiVqtVqtVi9dunTDhg29e/eWlkqdTLmrafJVEIRz587JhZL4+Hh5qVxo8lkQhKFDh86fPz8+Pt7Hx2fVqlV1g1mNbCuRXlenVCqHDBmSmZm5fft2qTwsLOzw4cOZmZmDBw/28PCIi4uT55Oq93BMjggdVHBwsJVqbmROrsrKSovU035YfDDs5cuXS0pK5K8zZ87cvn27KIp1Xzcp/P7Ox9LS0r59+zZZXlJScvXqVcu2FrA2QksAADth1awl6ZZUqeTvJtC+xMbG7t27t7S0tKSk5Pjx46+88orxtNZ33XXXtm3b7ty5c+fOna1bt8pxJeH3Hp3c2zT5KgjCPffcYzKrUUpKSt3NjclLp0yZkpmZWVFRsWHDhurqapOOd+PbCoIwadKk2tpag8Fw48aNlStXGkcWQkND161bp9FoampqLl26tGTJEn9/f5P21/2ADi0/P9/4a3V19euvvx4YGBgcHLxu3bpevXpJ5Vqtdu7cub179+7Vq9fs2bNra2ulcil2uWrVqrCwMOOEGl9f3/Ly8rrBTY1GM3jwYHd398DAwFdeeUWOMTW3HklsbGxsbGyTx2iyucnXV199tXfv3u7u7g899NDBgweN1yktLZ0xY4anp+esWbMaPz+SAwcOmLS/ufXLkpKSHn74YflrcXHx+PHjBUGYMGHCwIEDmzzkRowePXr16tWtqQFoe9wiAwDsgcFg0Ov1gtWylgwGg8DzfwDNlJubO2/evLqdUqDF3n777dra2vPnz1+9etXd3V1Op503b15oaGh6enpGRkZoaKg8qEoKL+bm5qalpRkn1Egb1g1uzpo1a/ny5bW1tVeuXBk9erT809vceuStzIlviqI4dOjQ1NRU6WtqauqwYcPkDT/44IP09PTS0tK5c+c+9thjxu2ZPHnyiBEjcnJyxo0b1/j5kezcuTM9Pd0ksahZ9cv27Nlz11131T2W/fv379ixw7jE1dVVClSZhLQaKu/Tp8+ePXuaPGlA+1LvYxMAADqWmpqajIyMzMxMK9Wv0WgyMjI0Go2V6m8zgiBER0fbuhWwsOnTp69atcrWrcD/Jw+C8/f359K0vfz8fHd3d/PXX7hw4euvv27++n5+fnVf1Wcp999//44dO0RRDAkJMem4hYSEiKIYFBRUVFRUd8PAwMCSkhLpc3FxcVBQkLxIqC+vzeSzzNfX13in/v7+LaunuXbv3j1mzBjp85gxY/bs2SN9zsjIeOSRR3x9fd3d3UeMGGGy3zt37pjU09D5kdbXarUmbW5u/TIvL6+6S/fu3ZuXl9fQJllZWc7Ozk2W375929vbu6FKGvLyyy8vXbq0uVvBsgICAq5cuWLrVtgGWUsAAHtg7dfDkbUEwHyzZ8+WbrULCgpeeeUVWzcHHVJOTo70UyT8HuzIyckRfh/9XS+xFeMf5QF0MTExxt3FgoKCltXTXA8//HBVVdWhQ4cOHTpUXV390EMPSeXTpk0bPnz4xYsXS0tLv/vuO5OtPDw8TEoaOT9CfaPmm1u/rO7ZXr9+fWRkZFBQUEObRERESLcrTZa35lICNkFoCQBgD6w60ZLAXEsAgPbhiSeeWL58uSAIGo0mOTn5j3/8o1T+7LPPJiUlSfGg1atXP/PMM01WJb2LUKvV7ty5c8yYMVLh+PHj16xZk52dLT1TMUe99UjMnGtJsmDBgvnz58+fP3/BggVyYU5OzqBBg7y8vNLS0j799NMmK2no/DSkufXLIiMjc3Nz5a+bNm3q379/z549hX9/EDVixIj58+dfuXJFEITk5GT5GVhD5YIgZGdnR0VFmd8SoD3gFhkAYA/IWgIA2KWAgADjr8uXLy8tLQ0ICOjXr9/WrVuXLVsmlS9cuFCj0YSHh4eHhxcVFS1cuFAqN357oMmbBKUph9Rq9Zo1a9auXSsVvvbaaxqNZsSIEb6+vmPHjl2yZEnL6pHo9XrzE3BGjx5tMBhEUXzwwQflwtWrV8+YMcPX13fu3LnPPvts3TaYTB/e0PlpqP3NrV/28MMPX7p0Sf46ffr06OjouisnJydnZWXFxMQoFIqEhISNGzc2Xi4IwqVLl8aOHWvmSQPaCQW5dgAAO5Cfn3/nzh0/Pz+1Wm2N+nNzcysqKgIDA728vKxRf5tRKBTR0dGnTp2ydUNgSX/+859jYmIYeAVIbt261b179/LycjPXX7RokUaj+eSTT8xc39/f/8SJE127dm1h+xo1cuTIOXPmxMfHW6NyWFBGRsbKlSs///xzi9c8c+bMv/3tb81NXJo5c2ZkZOTs2bMt3h6YLzAw8MiRI46ZdEbWEgDAHpC1BAAA2kyvXr18fHysUbOvr69jxibQoVlrTgoAANqStedakkJLzLWE9uncuXPbtm37+9//buuGAO2CKIrmzxMEtNiiRYusUe37779vjWoBqyK0BADo8ERRlEJL1staYhpvtGfdu3cfM2bMtGnTbN0QoF0oLi6eOHGirVsBAA6E0BL+H3t3H9fUlecP/FyQqCRgEyBpiNZWp2jbqW15qnW1XYtowYcpaIHdtRTFdvoApXWKoHVs7VTAgkNfMnXXAVad6bbFUbNWxY6PrXSwo+Ns20UUFVuVIBANUUIkCUl+f9xf797Jw80DgZvA5/2Hr5tzz/2e770BCV/OPRcAIODRdSWKooKDgwdpCNwQB/5MKBROmDAhLi6O70QA/EJnZyf+uwYAGEooLQEAQMCzWCxjxowZ1ClFmLUEAAAAAOAQSksAABDwRo8ePWHChEEdArOWAAAAAAAcwl9fAQAAXMOsJQAAAAAAh/ARGQAAwAW6rkQwawkCH8fXMEVR3n2Fu3Ogp5HxvQYAABBAUFoCAABwAaUlCDhyudxhO/PF7NEubu4c6Glw9/uHhYV5FBkA/ASPP1K9rqQDgDMoLQEAALhAL7REUFqCwNHR0WHTUl9fb//bVG9vb05Ojkgkeuyxx5qammwOSUxMTExMdHPEq1evTp8+XSwWL1++vLe3l3tcvV7/4osvisXi2NjYlpYWdgeH/emWqqqq8ePHCwQCpVJJt0skEp1OR/3EzVQBAouzSrFH9Hq9+505Kra+ikM8rDh7NK5Lbg7tq+sAMBJgGW8AAAAX6M+g+MUVBs9f/vKXs2fPen14a2trXFwcd5/U1FSr1WrzZVxUVCSXyzUaze3bt6urq20O8egXv+3bt+/atSs0NPTdd99dtWrVRx99xD2uRCLp6Ojo7++vqalhj+WwP93S3t7e3Nx89OjRzMxMo9FICNFoNBRFeT3fCoYxs9n8+9//3s3Op0+f1ul07vfv6+vzNi9v2FSK+/r6ioqKPvvss6CgoNLS0pKSkgsXLpCffkh1d3f/6le/2rlz58svv1xeXk4IUavVqampf/vb36RS6XPPPffBBx+EhobSofLz8w8dOtTW1jZjxow1a9bMnj2bsCq2dB/m+4sjjkPO4hBC6uvr58+fT+wmBf/2t79dt27dn//853Pnzr3xxht/+MMf0tLSuMely9+nTp1yeRl7e3tfe+21Xbt23X///X/84x/Zuwb1OgCMEPhhDAAA4ILRaLxy5UpwcPCkSZP4zmWgKIqKjY09c+YM34nAP8jPz//qq6+mTp3q3eHfffddfn5+Xl6eQqFob29n74qOjlapVMxLm0KMRCK5dOmSRCIhhNy8eTMyMtK7T4YURbW1tSkUCkKIRqOZOnVqV1eXTQd2ZKlUev78eXpctVotlUptxrUvGLFbnG0D0Do7OydOnLho0SI3+587d85gMDz66KPuD/HRRx9FRUV5lZ0LTz31VFFRUWpqKtNi80W+cuXKO3fuvPfeeyKRaP/+/a+88sqNGzeYnrNnz87Ozk5PTz99+nRSUhIhJCcnZ9myZTNmzDAYDIcPHz5y5AhT+dXpdCKRyGQynThx4tlnn+3p6XE4Io0jjjPc3542eymKKi8vv/fee1988cWcnJx/+qd/+td//Vej0cg9bkJCAiHk9OnT3JkQQvLy8sLCwtavX09X0tesWcOMPtjXYWi89tprEydOXLVqFd+JjGgymezkyZPD4OOiF/DDGAAAwAWTyXTjxo3g4GCpVMp3LgOF0pJ/ys/PVygUxcXF3h2+bNmyuLi4vLw8psXZb3QcpaXr169HR0cPvLR048aNn//85zbzLGzGlclk586do8ft6uqSyWQ+KS0ZjUaBQOBF/jDMdHZ2Tp48WafTudl/w4YNarX6ww8/HNSs3MSUlpxViuVy+dmzZ+lvHxsURfX09IhEInZjRESERqNhXkZFRdGV34sXL65cubKxsdFgMMTGxjY0NHBXbJ3F4eBpaYmZI8ze8GJch5xV0ofgOgwNlJb8wUguLWGtJQAAABdCQkLkcvkwqCsB2MjKytq0aZPJZGpvb9+4caPNXo/WWqqurm5ra+vu7t6wYUNGRgZ358zMzMrKSovFotPp6BvivBYSEqJUKk0m08GDB+fMmTOQUAB+RaVSWa1WurRBb9AzEPv7+zmOsqkrEULi4uKsLEwdJCMjY+bMmefOndNqtTt37nQWkL75lCOOm5g4nhrguC6TGeLrADBcobQEAACB7caNG1euXLl9+zbfiQD4EftKKLPQNXvF6/Ly8ra2NrFYnJKSsnz5cvKPa4qZzWZ3JjHRh+Tk5KSnp0+aNEmn05WVlXGPW1ZW1tHRERkZOXPmzIULF7rMk2mx+ZcQUldXl5mZKRaLa2pqamtr3bs8AAFsyZIlFRUVhBC1Wq1UKpcuXcrdPyUlpaampq2tjXkkBU2lUsXHx4eHhzc3N2/evJm9y2HF1lkcDj6p/HKP634F3FklfQiuA8BIgNISAAAENoPB4PXfQgGGq87OTpsW6z+iG4VC4Y4dO3Q63XfffTdt2jT2LkLImTNn3FnBhD7q3nvvPXXqVHd3d3V1NXtRW4fjhoaGVldXazSa06dPX7p06cEHH+Tuz35psystLc1oNOp0ut27d99///2eXigA/2dTKa6oqNBqtVKp9KGHHtq7dy+9VjdhVV1tHpj4+uuvq9XqWbNmSSSSefPmMZXfrVu35ubmSiSS4uLi7Oxs4qpi6ywOB2eVX/sKsk3J2J38aW5WwInzSvoQXAeAkQBrLQEAQGAzmUwmk0kgEIwahceeuoa1lvyTz9da8n9vv/12SUmJQCBITU39j//4D5lMxndGMHwMj7WW+E4EAgzWWvIHWGsJAAAgUIWEhISGhqKuBBBYNmzYYLVaDQaDUqlEXQkAACCgobQEAAAAAAAAAABeQmkJAAAAAAAAPCaTySg7mIcIMALh9gEAAAAAAADwmP0TAwBgZMKsJQAAAAAAAAAA8BJKSwAAAC7cvHmztbX15s2bfCcCADAcmM1mvlMAAABfQmkJAADABYvFYrFY+M4CwF8olUqBQCCRSGbPnm2zi6Ioj0J52t8f0KvJ8J3FoBiMU1u7di2zbbVar1271tzc/Oijj7L7nDhxYunSpWlpaRRFCQQCpVLJ3W4TFgAAeIe1lgAAAFyQSCTjxo0LCsLfYyBgyOXy69evD1LwzMzMurq6tLQ0+11Wq9WjUPb9w8LCenp6HHbW6/WhoaEexR8MVquVu/7iJ3l6weWpeerixYvd3d3My//93/+9fPnyL37xi6amJna3l1566eTJk2KxmBDS2Ng4d+5cnU7H0U4I6e7uvnz58qRJk3yYLfgQ/YXk6X8IXo81NAMBAAd8SgYAgEBlNptv3Lhx+/btwR4oODhYIBCMGoW/x0DA6OjoYL/s6+srKCiQyWRyuXz79u0xMTF0u8lkKi4unjJlSkxMzKpVq4xGI91Oz16pqqoaP348e7bIxIkTKYoymUzp6ek2M1zq6+vt57zo9foXX3xRLBbHxsa2tLSwOzjsL5FIdDod85wppl2tVickJAiFQplMlpeXp9frmSQrKyvDwsIaGxtra2vDwsLYE1vsOTsv9nDMNnf8q1evTp8+XSwWL1++vLe3lyNPJpRWq83NzQ0LCyssLGRnlZiYmJiYyJE2O4hNnszL/Pz8KVOmCIXC5OTk48ePc4/r7OuBduzYMZvr42l8RnV19dy5c5mX06ZNe/bZZ+2rVwaDga4fEUJmzJjBXE9n7YSQpKSkrVu3urxow4NcLh94EOar0R1hYWEDjDOUtR73x+I4LwAYIJSWAAAgUBkMhu7ubo1Gw3ciAP5uzZo1RqOxqanp8uXLQqGQ+a5Zu3atQqFoaWm5cOGCQqFgbjKif1Vrb29vbm6uq6vLzMyk269cuULvsv6EGSI1NdX+F7yioiKJRNLR0dHQ0PDFF18Q1i+BDvvTidkHLywsrKioMBqNra2tSUlJdAmD7mA2m7dt2zZ//vympqZt27YxqTrk7LzYYzHb3PG3b9++a9eu1tZWkUi0atUqjjyZUOnp6bNmzVKpVM8884xNVu78bmy1WqdPn97Y2Ei/bGxsfOKJJ5gDS0tLW1patFptcXHxokWLuMd19vVAO3jwYEtLC/v6eBqfcejQoQceeMDlqV27ds2jdkLI1KlTDx065DLy8OBmpdhZpc9ZxZM4qRh6VOHl5rACS4etr68nP5WYJ0yYwBziZqWV5rBC7ayC7Oy8AMA3rAAAAIGpu7v7woULKpWK70QCCSEkNjaW7yzAVl5eXmlpqdeH5+TkVFVVWa3W6Ohom0960dHRVqv17rvvvnnzpv2BMpmsu7ub3tZoNHfffTezi/xjiYd9FMcHSJtdUVFRzLhdXV32B7rTYrVaJRIJ+6SioqJsOttvuJOhy21nG4SQtrY2uuXmzZtMPs7ypA/p6enhzs2lP//5z3PmzKG358yZc+jQIXr7woULCxYskEgkQqFw1qxZNudiP66zrwe6v8lkYp+sF/EZ4eHhDvdyf0U5ezfZL2/dujVu3Dhn43Z0dAiFQmd77b3//vsFBQXu9x9UTz755IEDB9gtNtfhzTfffPnll7u6uvR6/c6dOyMiItg9Z8+evW3btlu3bh05coRufOGFF7788kuj0djT07Nnz55XX32V6U+/O0aj8ciRIyKRyNmILuM4RAhZv379tWvXbt68mZ+fz/Q/efLk9OnT6W2LxRIfH//dd98xR8XHx8fHx3NHth/IvqW4uPjWrVt79uwJCQnhPq9h49VXX924cSPfWYx0Uqm0tbWV7yz4gbn9AAAQqEwmEyFEIBDwnQiAv1CpVPSGzeIj/f39zg5hd/M59tQALwYyGo30N3hcXNyQTVHxdM1+i8XCLMTGnadIJBpQZoTMnTv3vffea2hoIIT09fUlJyfT7RkZGVlZWbW1tRKJ5MaNGzb3T9mPy/H1QAixv/nX0/gMr7+6zGZzcHAwd7sPv3S/+OKL77//fu/evQKBwOEiYkOJWSVNoVC0t7fT2/S3UnR0tEql+vTTT8+ePUvXMZ977rnnnnuOffjnn39OvyNJSUl0y759+3bs2MF0iIqK+uijjwghFy9eXLlyZWNjo8FgiI2NZdaxcsZZHA65ubkKhYIQ8u67706dOpXuP336dLlcvmfPnvT09N27d//sZz+bNm0ac8jp06e5Y7qptLSUEJKWlkZ/VACAwYYb4gAAIFDR68KEhITwnQiAv1uyZElFRQUhRK1WK5XKpUuX0u3Z2dnV1dX03xu3bt36/PPP+3bczMzMyspKi8Wi0+lqamrcOSQkJESpVJpMpoMHD86ZM4duTElJqampaWtrG7xnNdLjXr9+/Y033nCnf3V1dVtbW3d394YNGzIyMgaSp0d3AK1fv37dunXr1q1bv34906hSqeLj48PDw5ubmzdv3uwyiLOvB2c8jc+YOHEiUxzhMHbsWOZGv9OnT4eHh9MX0Fk7IaStrc2Ha3j39vY+8sgjjz/+eHx8vK9iDhwzJ5f8NNeGrh1zVwbtK31xcXHsmQX0/EFCSEZGxsyZM8+dO6fVanfu3OksILMEm7M47mBXYAkhJSUl69atMxgM77333nvvved+HB9izgsAfGNQ50QBAAAMnsuXL1+4cEGv1/OdSCAhuCHOL/nqhjiGVCplv9TpdK+88kpUVFRUVNQLL7zQ3t5OtxsMhrfeekuhUCgUirfeestgMNDt7A+K7O0DBw44+yTpsL23t3fFihVisfiRRx75/vvvXfa3Wq30DSxCoTA9Pf3ChQt0Y39/f0lJyb333jtu3Li5c+fS18o+SaurG16cnRc9rkAgiIuL++677+xzsz/qhx9+SEhIuOuuu1asWNHb28uRJ8fJ0mJjYz26A+jJJ5986qmn2C179uyZOHHi2LFjU1JSzp07Z5+tzbjOvh6cXR9P4zNWrly5d+9eh2+BzcWn/0gQGRkZHR391Vdfcbdbrdbdu3cXFRU5u0Se3hD39NNP2+TJI5c3xL388surV6+2Wq1dXV179uz5t3/7N2c9ab/97W+rq6uvXbtmNpvZ7VFRUUeOHLlz58533323evVq9rEhISF79uwxGo319fWzZs3ijuMMIeSdd965du2aRqN544038vPz2XtXrFiRnJy8YsUKm6MSEhISEhLcic8eiKPF5XkNG7ghzh+M5BviUFoCAICAZDabL1y4cOHChf7+fr5zCSQEpSW/5PPSkr8xGo179ux58MEH+U4EhlRLS4vLFXm88+qrr3L8/jbMSktuVoqdVfqcVTydVQytnlR4neGowNJaW1tHjx599epVmwM9qrQ6PGVnFVJn5zVsoLTkD0ZyaQlrLQEAQECiV08IDg52uB4HAPiJt99+u6SkRCAQpKamHjt2jO90YEjFxMTcddddgxFZIpH48IY4P9fZ2cl+KRQKt2zZsmXLFptuVieLTwUHB69evZqel8SWlpbGXliKfXhaWpr9/WLO4jjERDt16pTDDgcOHHjllVfYz4ajnTlzxp34NqM4a7Tp4PC8AMAnUFoCAICANJQLLfX09FgsFpFIhDIWgKc2bNiwYcMGvrMA3gzSu/+b3/xmMMLC0GAW+K+srOQ3EwDwFSzjDQAAAWkoHw/X1dXV1dVlNpuHYCwAGCCZTEbZkclkfOcFAP8fcwcN34kAgM+gtAQAAAGJnrU0NKUl+uMv++k2AOC3Ojs77deAsLmlCAB8ApVcAKDhhjgAAAhIQ3lDHF1aYibwAwAAALFbBwoARiyUlgAAICAN2Q1xzIx9lJYAAGCwmc3mzs7OH374ge9EIMDcvn27v7+f7yxg5EJpCQAAAk9/f7/FYqEoaghmLVksFnoDpSUAABhsra2tr7zyCp4aAZ4yGo2pqal8ZwEjF0pLAAAQeOi74UaNGjUE5R7MWgIAgCETExNTVFSEGgF46rXXXps4cSLfWcDIhRVJAQAg8GANbwAfolfe5Wtojl0DzwoVYQAAgCGAD8oAABB4hmyhJYI1vCEwyeVy9zvz+AhwjqF9kpX7QcLCwgY+HAAAwMiEG+IAACDwDOXj4ei1llBagsDS0dHBftnX11dUVPTZZ58FBQWVlpaWlJRcuHCBO0J+fv6hQ4fa2tpmzJixZs2a2bNnE0KUSmVmZqbJZAoLC5s2bVpXVxcdx1k7h/r6+vnz55N/rP709va+9tpru3btuv/++//4xz/aHJKYmEgIOXXqlDtXwGF8+ht58+bNGzdu7OrqqqurS0tLI4RIJBKdTsd8m/NYawMghOTm5oaGhvKdBQSYGzduvP3223xnASMXSksAABB4DAYDIWT06NFDMBZmLcEwsGbNGqPR2NTUJBKJ9u/fr9FoXB5SWlpaVVVlMplOnDixaNGinp4eQkh2dvaCBQt27txpNBoPHTr00ksv0Z2dtXNITU21Wq0231lFRUVyuVyj0dy+fbu6utrmEI8qPg7j0y3t7e3Nzc1Hjx7NzMyk69QajYaiKFSUwB98+umnfX19fGcBAUkikfCdAoxcKC0BAECAMZvNZrOZYK0l+Efbtm17//33+c7CSzdu3Bg1apR9McVNPT09cXFxhBCFQtHe3k430lWV6OholUr16aefnj17lv6t47nnnnvuuee4A168eHHlypWNjY0GgyE2Nlan09Htn3zyyeLFi0NCQiIjI6Oiog4cOMDd7qlPPvnk0qVLAoEgMjLypZdeWrNmDXvv6dOnvQtro7S0lBCSlpZG31oL4Feio6P5TgEAwGMoLQEAQIBh7oYbmnIPZi0Filu3bk2bNm3t2rV8J+KNDz74QCqV5uTkeHf4b37zG3pDpVLRGzZzcPr7+z0KmJGRkZWVVVtbK5FIbty4wazctHDhQqPR2Nvbq9FoPv7447lz53Z3d3O0DwT9nc4Lo9E4NJVrAACA4QGlJQAACDCjR48eP378kN26grWWAkhkZCQ9eSfgSKVShULhdfJisZi7w5IlSyoqKkpKStRq9ddff7179+6PP/6Yo79KpYqPjw8PD29ubv7ss8+YdnpG0sMPPzxhwoSpU6f29vZyt3sqKytr06ZN7777rlqt/uCDD2z2erTWkqdCQkKUSuWCBQuOHDlSWlp64sSJwRgFAABgWML0fgAACDBBQUFjx44dsiVOMWsJApFUKmW/rKio0Gq1Uqn0oYce2rt3b3l5ObOLoij6y5vZIIRs3bo1NzdXIpEUFxdnZ2eTn74F7rvvvm+//TYmJoaiqMzMzLq6Orq/s3YODsctLy9va2v7esxmAAAgAElEQVQTi8UpKSnLly8n//itZzab3a8pO4zPtNj8Swipq6vLzMwUi8U1NTW1tbVujgIAAAAEs5YAAAC4Ya0lCESdnZ3sl0KhcMuWLVu2bLHv6bBYk5aWRj86zaYPPWPIfpVuZ+0cHI4rFAp37NixY8cOh33OnDkzwPjsRpsOaWlpPN6CBwAAENDwQRkAAIALZi0BAAAAAHBAaQkAAIAL1loCAAAAAOCA0hIAAAAXzFoC8I5MJqPsyGQyvvMCAAAAH8NaSwAAAFxQWgLwjs16TwAAADBcYdYSAAAAF5SWAAAAAAA4YNYSAAAAl9DQUIqiQkND+U4EAAAAAMAfobQEAACB5MaNGyEhIeHh4UM2jUgoFAqFwqEZCwAAAAAg4KC0BAAAAcNoNHZ3dwcFBY0bN47vXAAAAAAAgBCUlgAAIIBQFHXXXXfxnQVAoKLn+tHLhw0zFEUN6nlxxPf6qrpzoKfnNdjXAQAAwCEs4w0AAAEjJCQkKioqKiqK70QA/J1cLrdv9EnRISwsbOBBaHq93lehBruewhHf66HdOdDT4O739+H7CAAAgNISAAAAwHDT0dHhZs/8/PwpU6YIhcLk5OTjx4/TjUqlUiAQUBQVHh4+c+bMmJgYul0ikeh0Ouon3JFturFfqtXqhIQEoVAok8ny8vKYGhPdQavV5ubmhoWFFRYWcudDCKmvr7dPxmQyFRcXT5kyJSYmZtWqVUajkR2/qqpq/PjxAoFAqVS6vD4O4/f29ubk5IhEoscee6ypqcnmkMTExMTERJeRaVevXp0+fbpYLF6+fHlvby/3uHq9/sUXXxSLxbGxsS0tLewODvs7O1+P3kcAAACXUFoCAAAAGLlKS0tbWlq0Wm1xcfGiRYvoxuzs7AULFphMpo6Ojrfeekur1dLtGo2GEGL9CXdkq9U6ffr0xsZG+mVjY+MTTzxBH1VYWFhRUWE0GltbW5OSkpgSEr03PT191qxZKpXqmWee4c6HEJKammqfydq1axUKRUtLy4ULFxQKxdq1a9nx29vbm5ub6+rqMjMzXV4fh/GLiorkcrlGozl8+PC+ffvsT9z92UPbt2/ftWtXa2urSCRatWqVy3ElEklHR0dDQ8MXX3xBWNOUHPZ3dr4evY8AAAAu4X5sAACAEYSiqNjY2DNnzvCdiO99+OGHZ8+era6u5jsRb+Tn5ysUiuLiYu8OX7ZsWVxcXF5enkKhaG9vZ++Kjo5WqVTMS5u1eC5evLhy5crGxkaDwRAbG9vQ0EDv3bdv3+LFi00mU2RkZFRU1I4dOxISEhxG4Hbo0KHy8vLDhw8TQpKTk1etWpWcnEwIiYiIoKsbtKioqK6uLiZ+T0+PSCRix+HIx2FWd9999/nz5+ml2bq7ux988MHr16/b93T/XGx6SiSSS5cuSSQSQsjNmzcjIyO9+0RNUVRbW5tCoSCEaDSaqVOnMtfB4bhSqfT8+fP0uGq1WiqV2oxrf0bOznd4r8rU2dk5efJknU7nZv+kpKSCggKmtAoA4B2ZTHby5MlJkybxnQgPMGsJAAAAYJhQqVTMPBR6g11XspeRkTFz5sxz585ptdqdO3cy7QsXLjQajTqd7u9///vzzz8/d+5ch4czN5o5M3fu3Dt37jQ0NDQ0NPT19dF1JUJIXFyclcWmnmJTV3I/H7Yhq5u4vAhuslgsQUEuPpmzb17z4Qn66hQAAGDEQmkJAACAi8VisVgsw/jP+zCSqVSq+Pj48PDw5ubmzZs3M+1RUVGnTp0KCgqaMGHC1KlT2WsAhYSEKJVKk8l08ODBOXPmuBxi/fr169atW7du3fr165nGlJSUmpqatrY2i8XiTp4c+TiUnZ1dXV1N1622bt36/PPPuzOK+7KysjZt2mQymdrb2zdu3Giz16O1lqqrq9va2rq7uzds2JCRkcHdOTMzs7Ky0mKx6HS6mpoab1L/iafvIwAAAAeUlgAAALhcu3attbX1zp07fCcC4AGpVGrTwizYzF65eevWrbm5uRKJpLi4ODs7m/w0L+a+++779ttvY2JiKIrKzMysq6tj4tBL9ojF4pqamtraWpeZJCUl0cXZp59+mml8/fXX1Wr1rFmzJBLJvHnzysrKmCSJ3frf3Pk4PK/3339frVZPmDBhwoQJN2/efP/9923i2/zLwWH88vLytrY2sVickpKyfPlymzhms9mdYjR9SE5OTnp6+qRJk3Q6HXMdnI1bVlbW0dERGRk5c+bMhQsXusyT43w9fR8BAAA4DOe7rAEAAAbuxx9/NJlM48ePHzt2LN+5+ADWWvJPvlprybdZgd8ymUz79+9fu3bt2bNn+c7FH2GtJQDgBdZaAgAA8GtWq9VgMPDy55B77rln8uTJY8aMGfqhAQBsvP322xRFiUSiP/zhD8eOHeM7HQAAAEJQWgIAgIBgMBiuXr36448/Dv3QQUFBQUFBLu+aAQAYAhs2bKBL7UqlUiaT8Z0OAAAAISgtAQBAQOjr6yOEjB49mu9EAMCWTCaj7ARQ1SPQ8wcAAODdKL4TAAAAcM1gMBCUlgD8UmdnJ98pDEig5w8AAMA7zFoCAIAAgNISAAAAAIB/QmkJAAD8ndVqNRqNBKUlAAAAAAD/g9ISAAD4O6PRaLVag4KCQkJC+M4FAAAAAAD+AUpLAADg73A3HAAAAACA30JpCQAA/B1KSwABhH7CGr8ReMeRv0/OLtCvDwAADDMoLQEAgL/r6+sjhIwZM2boh7ZYLDdu3Lh58+bQDw0wEHK5nK+hrVarTYterx9gBC+EhYX5qr+n+RPOU/DJ2bkfxNPrAAAA4AWUlgAAwK9ZrVZ61hIvpSWz2dzd3d3d3T30QwMMREdHB/tlX19fQUGBTCaTy+Xbt2+PiYmh29kzaOy3tVptbm5uWFhYYWEh93C9vb05OTkikeixxx5rampi2tVqdUJCglAolMlkeXl5TI2Gjn/06FGpVBofH3/lyhXvTlOpVAoEAoqiwsPDZ86cyZyXRCLR6XTUT9iH5OfnT5kyRSgUJicnHz9+nLu/s/w51NfX2w/q7PrQEhMTExMT3Txlh/HplqqqqvHjxwsEAqVS6fI6AAAA+NAovhMAAADgYjAYrFZrcHAwL2t401MD8CtZQFCr1T/88MOf/vQnvhPxxqVLlzQajdfJX7t2LS4ujqPDmjVrjEZjU1OTSCTav3+/RqOh261WK/Plbb+dnp6enZ1dWVl5+vRp7gSKiorkcrlGo7l9+3Z1dTXTXlhYWFFRMWPGDIPBcPjw4cLCwo8++oiJf/PmzWvXrn3++edvvvnmnj17vDjx7OzsBQsW7Ny502g0Hjp06KWXXqLbNRoNRVEOp/aUlpZWVVWZTKYTJ04sWrSop6eHo7+z/DmkpqayryTN2fWheTSPyWF8uqW9vb25ufno0aOZmZn0UzU5rgMAAIAP4YcNAAD4Na1Wq1arQ0NDFQrF0I9uMBiuXr0aHBw8adKkoR99MFAUFRsbe+bMGb4T8b20tLTDhw8/8cQTfCfijZaWltGjR997773eHd7a2rpy5cq8vDyFQtHe3s7eFR0drVKp5HL52bNnJRKJ/bHs0oPNdk9Pj0gkcicBiURy6dIlOv7NmzcjIyPpOBEREUwZixASFRXV1dXFxO/u7r7rrrt0Ol10dPTt27edZcVh3759ixcvNplMkZGRUVFRO3bsSEhI4Ihw8eLFlStXNjY2GgyG2NjYhoYGh+fO4Mifm000Z9fHa/bZcryPI/DTfmdn5+TJk3U6nZv9k5KSCgoKFi1aNKhZAcCwJ5PJTp48OWw+NHoEs5YAAMCv8bjQEgOzlgLF+PHjDx8+zHcW3sjPz1coFMXFxd4dvmzZMnpDpVLRGzYFhf7+fpdBLBaLTYubdSUb9HwZWlxc3KFDh1weMmqUl59IFy5caDQae3t7NRrNxx9/PHfuXIe3rxqNRoFAQAjJyMjIysqqra2VSCQ3btxwtiIV09/N/D3Cvj5DjDkvAAAA38JaSwAA4Nfo0tLYsWN5GR03xMHwsGTJkoqKCkKIWq1WKpVLly5ldoWEhCiVyuvXr7/xxhtex8/Kytq0aZPJZGpvb9+4cSPTnpKSUlNT09bWZl+3IoR8/fXXRqPx4MGDycnJ3o0bFRV16tSpoKCgCRMmTJ06tbe3l9lFn5fJZDp48OCcOXPoRpVKFR8fHx4e3tzcvHnzZnYoh/2583efs+tD82itJU85PC8AAADfQmkJAAD8l9lsNplMhJDRo0fzkgBKSxCgpFIp+2VFRYVWq5VKpQ899NDevXvLy8uZXXV1dVlZWQsXLlyxYgX56aud+dfN5Z/Ly8vb2trEYnFKSsry5cuZCK+//rparZ41a5ZEIpk3b15ZWRn7qOjo6MmTJ1dWVv72t79lGpkR3Rn6vvvu+/bbb2NiYiiKyszMrKurY59XZmamWCyuqampra2lG7du3ZqbmyuRSIqLi7Ozswnru9thf+78HXKYv7PrQzObze7fs+Ywvs275vK8AAAAfGsk3n0NAACBore3t729PSQkxOs1aAZIr9erVKrRo0ffc889vCTgc8N7raVz586dP3+e70S8MfAb4uLi4vLy8nyb1aAamWsAwdDAWksAwIuRvNYSZi0BAID/4n2hJcxaAhgMNjNrAAAAIKBhGW8AAPBfflJaAgDfwncWAADAcIJZSwAA4L/8pLSEuRUAhBCZTEbZkclkw3XcQMkHAACAd5i1BAAAfspoNFosFoqi+FrDm6C0BMDS2dk5osZ1xt/yAQAA4B1KSwAA4KdGjRp199139/f381jZQWkJAAAAAIAbSksAAOCngoKCwsLC+M0BpSUAAAAAAG5YawkAAMAplJYAAAAAALihtAQAAOACSksAbvLVN0ugf9Nx5E8v+z148QEAAIYeSksAAABOYdYSBCi5XM7LuPS3jD/E8fR2Wo7+er3e09E58vfJJXI/CO+3FQMAwEiA0hIAAIBTKC1BgOro6GC/7OvrKygokMlkcrl8+/btMTExdDt7Bo39tlarzc3NDQsLKywsdDlifX29/XwcuqWqqmr8+PECgUCpVHLn4yyOM0qlUiAQUBQVHh4+c+ZMJo5EItHpdNRP2Ifk5+dPmTJFKBQmJycfP36cu79arU5ISBAKhTKZLC8vz50ak8P8e3t7c3JyRCLRY4891tTUZHNIYmJiYmKiO+frLL6z68xxHQAAAHwIpSUAAACnUFqC4WHNmjVGo7Gpqeny5ctCoVCj0dDt7Mkv9tvp6emzZs1SqVTPPPOMyyFSU1Ptp9LQLe3t7c3NzXV1dZmZmdz5OIvjTHZ29oIFC0wmU0dHx1tvvaXVaul2OqD1J+xDSktLW1patFptcXHxokWLuPsXFhZWVFQYjcbW1takpCR3SmwO8y8qKpLL5RqN5vDhw/v27bPZa5+kp/GdXWeO6wAAAOBDFH7MAAAAOKNWq7VarUQiiYiI4DsX36AoKjY29syZM3wn4nszZ848e/ZsRkYG34l44y9/+YtQKHz00Ue9O7yxsfGXv/xlXl6eQqFob29n74qOjlapVHK5/OzZsxKJxP5Yivq/T4M22z09PSKRyKNM2BE44nPk4yyOQ/v27Vu8eLHJZIqMjIyKitqxY0dCQgJHhIsXL65cubKxsdFgMMTGxjY0NDg8d0ZERAS77BUVFdXV1eUyK/toEonk0qVL9PnevHkzMjJygJ/A3bzODnuOBJ2dnZMnT9bpdG72T0pKKigoYEqNAADekclkJ0+enDRpEt+J8GAU3wkAAAD4rxH4K1ngun37dl9fX4B+nmtqagoPD/c6+e+//57eUKlU9IZNQaG/v99lEIvFYtPiaV3Jfe7k446FCxcajcbe3l6NRvPxxx/PnTu3u7vbvpvRaBQIBISQjIyMrKys2tpaiURy48YNZytSMf3j4uIOHTrkk1TZwX0b0KOh6fMCAADwLZSWAADA7/T29ppMptDQUN5/CwoLCxs9evSYMWP4TQPcNHr06KKiIr6z8EZbW5tCofA6+fPnz3N3WLJkSUVFRUlJiVqt/vrrr3fv3v3xxx/Tu0JCQpRK5fTp00tLS70b3Qsc+XgkKirqwIEDDz/88IQJE6ZOndrb28vsos9rwYIFR44cKS0tPXHiBCFEpVLFx8eHh4c3Nzd/9tln7FAO+6ekpNTU1DzzzDPR0dFBQd6vI5GVlbVp06Z3331XrVZ/8MEHNnvphZZOnTrldXwODs8LAADAt7DWEgAA+J1bt26p1Wr2b4l8GTt27Lhx40aPHs13IgCekUql7JcVFRVarVYqlT700EN79+4tLy9ndtXV1WVlZS1cuHDFihXkp5XFmH/dX/6Z6WmzHLjDfznycRjHmfvuu+/bb7+NiYmhKCozM7Ouro59XpmZmWKxuKampra2lm7cunVrbm6uRCIpLi7Ozs4mrJXUHPZ//fXX1Wr1rFmzJBLJvHnzysrKvLsO5eXlbW1tYrE4JSVl+fLl7HEJIWaz2f0Jkh5dZ2fnBQAA4Fsj8e5rAADwc7du3ert7Y2IiEBNx+eG8VpL06ZNu3r1KrOQc2DJz89XKBTFxcXeHb5s2bK4uLi8vDzfZgUQoLDWEgDwAmstAQAA+JFx48aNGzeO7ywAAAAAAMA13BAHAAAAAAAAAABeQmkJAAAAAFyTyWSUHZlMNlzHDZR8AAAAeIcb4gAAAADAtc7OzhE1rjP+lg8AAADvUFoCAAAAAACAQfTNN9989dVXfGcBMFC//OUv77rrLr6z8EcoLQEAAAAAAMAg+vLLL//0pz8lJyfznQiA96qqqp577jmUlhxCaQkAAMCp/v5+q9UaHBwcFITVCQEAALw3Y8aMsrIyvrMA8N62bdv4TsF/4YMyAACAUx0dHT/++GNvby/fiQAAAAAA+CmUlgAAwF/09/frdDqz2cx3Iv8n6Cd8JwIAhBBCURSPQ/M4OgAAgD/DZ2UAAPAXvb29169fv379Ot+J/J/o6OjJkycLhUK+EwHwjFwuH3gQvV7vfuewsLDBjkMIsVqt7ofyaFyX3BzaV9cBAAAggKC0BAAA/oL+vSs0NJTvRAACXkdHB/tlX19fQUGBTCaTy+Xbt2+PiYmh2+mZOFqtNjc3NywsrLCwkG5Xq9UJCQlCoVAmk+Xl5bFrIvn5+VOmTBEKhcnJycePH6cbJRKJTqejfsJ05ojjkLM4hJD6+nqbRvplZWVlWFhYY2NjbW1tWFiYUql0OW5iYmJiYqI7l7G3tzcnJ0ckEj322GNNTU3sXYN6HQBgCAxkHmIgzmEMxJwhgKC0BAAA/gKlJYBBsmbNGqPR2NTUdPnyZaFQqNFo6HZ6Jk56evqsWbNUKtUzzzxDtxcWFlZUVBiNxtbW1qSkJKbkRAgpLS1taWnRarXFxcWLFi2iG+mA1p8wnTniOOQsDiEkNTXVpoV+aTabt23bNn/+/Kampm3btmVmZroc1z64M0VFRXK5XKPRHD58eN++fexdg3odAGDglEqlQCAICQkZP34885/b8IN7dcFPUB7NKwYAABgkfX19165dCwoKmjx5Mt+5DGcURcXGxp45c4bvRHxv2rRpV69e1Wq1fCfijfz8fIVCUVxc7N3hy5Yti4uLy8vLUygU7e3t7F3R0dEqlUoul589e1YikdgfS1FUT0+PSCRiN0ZERDDlJ0JIVFRUV1cXIeTixYsrV65sbGw0GAyxsbENDQ3MJ0mKcvCp0lkcDg7jONvLvLTZ8GJchyQSyaVLl+jrdvPmzcjISHqUIbgOMBCdnZ2TJ0/W6XRu9k9KSiooKGBKhDAYysrKVCpVVVXVkI0oEAjq6urS0tKGbERCSHR0tM1/wkOA+7/NAeLljFziKyuZTHby5MlJkyZ53WEYw6wlAADwC/SUpbFjx/KdCEAAU6lUzHwZekOlUhFC+vv7OY6yqSsRQuLi4qwsTB0kIyNj5syZ586d02q1O3fudBbQaDRyx3ETE8dTAxzXZTJDfB0AwAsmk2mI60qEEJfrRRoMhqHJxFf8agVMxqBmFXDvkZ9AaQkAAPzCnTt3CO6GAxgcS5YsqaioIISo1WqlUrl06VLu/ikpKTU1NW1tbRaLhd2uUqni4+PDw8Obm5s3b97M3hUSEqJUKk0m08GDB+fMmcMdh4PDOJ7iHtf9tZaysrI2bdpkMpna29s3btzItA/BdQAY9lpaWhYvXiwWi8eOHTtr1qyjR48yy8ARQs6dO/fss88qFAqFQpGent7S0sLsom8B0+l0zz77rEAgEAgE9CJrjIkTJ9L3iDELn82ePZvd4eLFi87uI9uzZ8/9998vEomWLl2q1+vtuzk79mc/+5nNoDZ96urqFArFmDFjRCLRvHnzmOnDdM8tW7bQy8aVlJQIhUKbM3LpypUrTz311KhRo+yvBkfO9D2DFEWNGzcuPT39+PHjP//5z90/I473iLDu1Dt06NAjjzwSExNz4MABZ9Hol/fff7/LM+XIymVk5itn8eLFQqHwgQce2LVrFzu4s/cI3GIFAADgm8ViuXjx4oULFwwGA9+5DHOEkNjYWL6zGBQPP/zwuHHj+M7CS3l5eaWlpV4fnpOTU1VVxW6RSqXslzqd7pVXXomKioqKinrhhRfa29vpdmcfC/v7+0tKSu69995x48bNnTuXyW3Pnj0TJ04cO3ZsSkrKuXPn2Eft2bMnJCREKBSmp6dfuHCBOw4Hh3Ecpmq/bf1puhb3uLGxsfHx8W5cV6tOp8vOzhYKhdOmTfvuu++YUYbgOsBAdHR0CIVC9/s//fTTe/fuHbx8wGq1lpaW5uXlMS+bm5vvvffe3//+9yqVymg0Xrt27d///d8jIiKYvQkJCZcvX6Zf/vDDD9OnTz9//jxzOCHk5ZdfPnHihMViob/p7Ed0+auufYeTJ08++OCD//M//9PX13fy5El6WTQ3j+VuP3bsWGpq6t///ne9Xt/T0/Pll18+/vjjp0+fZo564403du3aFRkZ+eabb+7atcvhGXGcyLx58/72t79xXA2HuYWEhOzZs8dqtZrN5q6urj/+8Y9RUVFunpHL94g+9sMPP/zNb36jUqksFsuSJUvo9s8///zZZ59l99Tr9ZMmTVKr1W6dsPOsXEYmhLzzzjsHDx68c+fOlStXnnzyySNHjtC7uN8jmlQqbW1t5UjMZYdhDKUlAADgX29v74ULF5gPKDB4UFryTz4vLQGMZCgt+SGb0tKiRYt27NjhrPPChQvr6+vZLfX19b/4xS+Yl4SQnTt3sl/aB/GitDRv3rwvvviCebl7925flZaefPLJH374gd3y/fffz5kzhznq1q1b9Mbt27fdSd5m0G+//daL3MLCwg4ePEgPzRHcYbvL94g+9tChQ8zL/v5+ZnvGjBl//etfmZeVlZVvvfUWRxpuZuUyMiHkv//7v5mXp06dSkpKore53yMaSksccEMcAADwD8+GAwAAGDmOHz+ekpLCsffxxx9ntyQmJh47dozd8txzz/k8q7/97W/scZ966ilfRT516tR9993HvmNr2rRpjY2NTIfw8HB6IywszIv4jzzyiBdHffPNN+Xl5VFRURMnTpw/f/6SJUvcX8PInfeIEJKcnMxsBwcHM9sbNmxYs2YNvW0wGH73u9+99dZbXpyCPZeRZ82axWxPmzbt1KlT9LbL9wi4obQEAAD889vSUldX1/Xr100mE9+JAAAADB9ms9nhUkcMK+dtsAFn7NixNjNirFZrb28vv1k9+OCDR48eNRgMV65cOXDgwK5du1asWOH+4QN5j/75n/85ODj46NGjhJDa2tr58+fLZDL3h/ZhZIFAQG/453sUQFBaAgAAnpnNZvphHH74eDidTqfT6QL64yyAv5HJZJQdX/1SAQAB4Yknnvj888+d7Z09e/Y333zDbjl58mRSUtJgZxUfH3/69Gnm5ZEjRwYYkHnW2Pz58//rv/5rgNGGQH19PXcH5owG/h5t2LDh7bffNhqNH374YVFRkaepOszKncjsiUjff/99XFwcvR0o75HfQmkJAAB4Rj8bTiAQjBo1iu9cbKGoBOBznZ2d9ms0dHZ28p0XAAydkpKSX//61/QKynfu3GlpaampqVm+fDm9d+PGjWvXrm1sbOzv7+/v729sbFy3bh37KY2D5N13333rrbcuXLhgMpkaGxu/+uorTyPQz4gkhFy/fr2qqmrGjBl0e2lpaXV19fvvv//jjz+aTCaNRvPnP/95/vz5Pj4BD0VFRe3du7e7u5t+2djYGBISYtPH2RkN/D2Kj48fP358RkbGnDlzoqOjPcrcWVbuRL58+fKhQ4cMBsO1a9cKCwvfeecdut0/36MAgtISAADwjJ5s7Id3wzG4J+0DAACARxITE5VK5caNG8VicXR09PPPP9/X1/e73/2O3vvAAw988sknZWVlYrFYLBZv3Ljx008/nTJlCr2Xefa8w5eEkO+//97m+fSpqanMXvbz6W2eVT99+vR169alpqbeddddVVVV9oUSjmNpdXV1mZmZQUFBjz/++KVLl/bv30+3jx8//i9/+culS5cSEhJEItGMGTOOHz++fft2Z6dD3P7s4fJqcOR83333RUdHv/rqq9HR0XFxcVlZWXV1dTbxnZ0R93vEzsThhaK988479fX1xcXF7pypO1m5E/nVV1/dvXt3ZGTk7NmzX331VaYsxfEegTv87u/DAAAw0tClJaFQyHciDmDWEgAAwGBITEw8fPiws70PPPCAszvmbH402/+knjZtGsePb+6f7IsXL168eDG9rVarbRbVdvmpIC0tzWg0OtylUCgc1inYMZlt9z9+uLwaHKHoFaw//fRTjvgcZ8TxHnGPyzh9+vQLL7xwzz33uOzpflYuI48aNWrr1q1bt2613+XsPQJ3oLQEAAB86uvrM5vNQUFBfrjQEgOzlgAAAEaU9vb29evXFxYW8p3IsGU2mysqKuwnHPlzZOCAG+IAAIBPzN1w/lm+waHhWJEAACAASURBVKwlAACAkeODDz6g79569NFHH3744V//+td8ZzQM0Vd41KhR586dmzx58pBFtr9bEHwIs5YAAIBPer2e+OvdcAx8CgEYAvQ32tDUcymKQuEYAOytWrVq1apVfGcxzA3ef7/ckfHf/qDCrCUAAOCN2Wzu6+sj/lpawkcQCFxyuXzgQejKr5tsViTxIs5Qfse5PxbHeQEADLaJEydSTkycOJHv7HxvpJ3vcILSEgAA8Ia+G27MmDHBwcF858IFs5Yg4HR0dLBf9vX1FRQUyGQyuVy+ffv2mJgYup3+vK7VanNzc8PCwphVRdRqdUJCglAolMlkeXl57NpQfn7+lClThEJhcnLy8ePH6UaJRKLT6ewfA8QRx5mrV69Onz5dLBYvX76c/i+CybO+vp4QUl9fT1HUhAkTmEMSExMTExPdvDL04Tbf1HRLVVXV+PHjBQIB/UxrjvMCABgaV65csTpx5coVvrPzvZF2vsMJbogDAADemEwmiqJCQ0P5TsSx4Tprqb+/v7u7m+8sfM9sNlut1gA9NYPBcOfOHa+T535QDiFkzZo1RqOxqalJJBLt379fo9HQ7VarlaKo9PT07OzsysrK06dP0+2FhYUVFRUzZswwGAyHDx8uLCz86KOP6F2lpaVVVVUmk+nEiROLFi3q6ekhhGg0Goe3mHHEcWb79u27du0KDQ199913V61aRfc/efLkm2++ST8+PCUlJT4+vra2ljnEo2/V1NRU+qzZjXRLe3t7c3Pz0aNHMzMz6Uvq7LwAAACADT8sAQCATxaLhRASFOSPs2gtFktraysh5Gc/+9mwmbAwbE4E2EJDQzdu3JiXl6dQKNrb29m7oqOjVSqVXC4/e/asRCKxP5aiqJ6eHpFIxG6MiIhgyk+EkKioqK6uLkLIxYsXV65c2djYaDAYYmNjGxoamE+SDkswzuI4Q1FUW1ubQqEghGg0mqlTpzL909PTly5dmp6evmvXrt27d3M/Ldsl+2zZLc62IVB0dnZOnjxZp9O52T8pKamgoGDRokWDmtUI96tf/erYsWOzZ8/mOxEA723duvWvf/3rz3/+c2cdZDLZyZMnJ02aNJRZ+QnMWgIAAD75Z1GJNix/n6Qoas6cOYcOHeI7Ed+bNm3a1atXtVot34l4Iz8/X6FQFBcXe3f4smXL6A2VSkVv2BRE+vv7OQ63qSsRQuLi4hx+kWRkZGRlZdXW1kokkhs3bjhb0cloNAoEAo447rBYLOz/H0pKSpYsWTJ//vz33ntv9+7d3sUcIOa8AMBT7e3tHR0d33zzDd+JAHjPaDS6X7MeaVBaAgAAcAEzfSDQLVmypKKioqSkRK1Wf/3117t37/744485+qekpNTU1DzzzDPR0dHs+o5KpYqPjw8PD29ubv7ss8/Yh4SEhCiVygULFhw5cqS0tPTEiRMccThUV1evWLFCKBRu2LAhIyODaZ86deoTTzyxcOHCxx9//P7772cfQi+0dOrUKXfie8rheQGApx555JHIyMiqqiq+EwHwnkwmk0qlfGfhp/z3b8UAAAD8GpazlmCEsPnsW1FRodVqpVLpQw89tHfv3vLycrqdLpvaL1P9+uuvq9XqWbNmSSSSefPmlZWV0e1bt27Nzc2VSCTFxcXZ2dmEVXitq6vLzMwUi8U1NTXMQkjO4jhEh8rJyUlPT580aZJOp7Ppv3r16hMnTqxbt87mQHqZLTevDHOm7FNmWmz+dXZeAAAAwIZZSwAAAFwwZQkCUWdnJ/ulUCjcsmXLli1bbLo5q8gEBwevXr169erVNu1paWlpaWkOD09LS7NfTdxZHIeYaM7mHx04cOCVV15hPxuOdubMGXfi24zirNGmg8PzAgAAADaUlgAAAByjf8NEaQnAHzDfiZWVlfxmAgAAADZwQxwAAIBjuCEOwH9Yf8J3IgAw6Dj+qGNz967P4wOAd1BaAgAA4IIPoAC+JZPJKDsymYzvvABgqDl7yiRHEdkn9WX3g4SFhQ18OICRAKUlAAAYakaj0WKx8J2Fa5gfATAYOjs7rXZsFocCgJGgo6PDpqW+vt5+XlJvb29OTo5IJHrssceamppsDklMTKQfE+kOh/HplqqqqvHjxwsEAqVSSbdLJBKdTmf/oAMAsIe1lgAAYKip1eo7d+7IZLKA+GMgPk0CAAAMjdTUVKvVavOTt6ioSC6XazSa27dvV1dX2xzi0d+BHManW9rb25ubm48ePZqZmUkv3q/RaCiKwt+ZANyB0hIAAAwpq9VKPyl8zJgxfOfiQkhIiEKhQGkJAADAhxQKRXt7O71N/5CNjo5WqVTO+n/yySeXLl0SCASRkZEvvfTSmjVr2HtPnz7tk6xKS0sJIWlpaSaTyScBYfjp6+uLjY0NCnJ675dWqx3KfPwKSksAADCkKIq65557TCZTSEgI37m4EBQUFBoayncWAAAAwwpTRfJiThA9n4gXRqNRIBDwNTr4g9GjR//pT3+aMGECRx/uvcMYSksAAMAD/68rAQAAgD/IysratGnTu+++q1arP/jgA5u99EJLp06dGoyhQ0JClErlggULjhw5UlpaeuLEicEYBQIFRVETJkyYNGkS34n4IyzjDQAAADBCBdzatDxmG3DXCsD/SaVSmxbmG439HVdeXt7W1iYWi1NSUpYvX07+8b8C+i57N0d0GJ9psfmXEFJXV5eZmSkWi2tqampra708T4ARALOWAAAAAIYbuVx+/fp1l93sl7MdDHq93v17S8PCwnp6epzt9ejeGY/GdcnNa8WRv2/zARgG7B8N6fB7XCgU7tixY8eOHQ77nDlzxv0RHcZnN9p0SEtL4/EWPIAAgllLAAAAAMONzSO9+/r6CgoKZDKZXC7fvn17TEwMe++xY8dsHrlNCMnPz58yZYpQKExOTj5+/Djd6OwR3Xq9/sUXXxSLxbGxsS0tLcx0ALVanZCQIBQKZTJZXl6eXq/nTpvjUd/2jwynX1ZWVoaFhTU2NtbW1oaFhdEpcY/r/qPKOR557vD6OMvf0+sAAAAQWFBaAgAAABjm1qxZYzQam5qaLl++LBQKNRoNe+/BgwdbWlro+z6YxtLS0paWFq1WW1xcvGjRIrqR/ns+/Yhudv+ioiKJRNLR0dHQ0PDFF18wPQsLCysqKoxGY2tra1JSUmFhIXeedGLWn7B30Y8MZ7fQL81m87Zt2+bPn9/U1LRt2zY6Je5x7YM7wzzy/PDhw/v27WPvcnh9nOXv6XUAAAAILB6vyQ8AAACBKygoaM6cOYcOHeI7Ed+bNm3a1atXA/S5v/n5+QqFori42LvDly1bFhcXl5eXx36kN41+pLdcLj979qxEIrE/lqIok8k0atQownpa08WLF1euXNnY2GgwGGJjYxsaGphPjOwnOjHbUqn0/PnzdHy1Wi2VSun2iIgIdhkrKiqqq6uL+1y4nxhls5d5abPhxbgOSSSSS5cu0ed18+bNyMhIj64Pw1f5gJs6OzsnT56s0+nc7J+UlFRQUMCUCGEwlJWVqVSqqqoqvhMB8J5MJjt58iSW8XYIs5YAAAAAhgmVSsXMl6E36Id89/f3cxxF15XYMjIyZs6cee7cOa1Wu3PnTpfjsm/+YhdW4uLirCye1lO8XuJkgOO6TMbN68McMhj5AAAA+A+UlgAAYChYLJY7d+7wnYVnLBaLXq8PuLQB7C1ZsqSiooIQolarlUrl0qVLufurVKr4+Pjw8PDm5ubNmze7jJ+ZmVlZWWmxWHQ6XU1NDdOekpJSU1PT1tZmsVjcTJV+1LfJZDp48OCcOXPcPMoG97jur7VEP/LcZDK1t7dv3LiRaee4Pg7z9+I6AAAABBCUlgAAYCjodLq2tjZ6AkWgMBqNKpXK/vk1AP7P5pHeFRUVWq1WKpU+9NBDe/fuLS8vp9udPXJ769atubm5EomkuLg4Ozuboyf9b1lZWUdHR2Rk5MyZMxcuXMiM+/rrr6vV6lmzZkkkknnz5pWVlbnM3Nmjvu0fGW7zjHD2zCnucd1/VLmzR547uz7O8vfiOgAAAAQQrLUEAABDQaVS6fX6iIgIh6u9+CeDwdDZ2Tlq1Kjo6Gi+c/EZrLXkn3y11pJvs/KCyWTav3//2rVrz549y3cuMHJhrSU/hLWWYBjAWkscMGsJAAAGXX9/P/2w7bCwML5z8cDo0aPvueee4VRXAhg8b7/9NkVRIpHoD3/4w7Fjx/hOBwAAAIYOSksAADDoenp6CCFjxowJCQnhOxcAGBQbNmywWq0Gg0GpVMpkMr7TAYCRgrlJ1uEuL44avDhexAcIFCgtAQDAoKNLS4E1ZQkABolMJqPsoBoFMALJ5fKBB+FY4MW7XYMXZ+BB8FEK/BZKSwAAMLiMRqPBYKAoCp+HAIAQ0tnZabWD9fIBRqCOjg5mmyk0O3yZn58/ZcoUoVCYnJx8/Phxl5Hr6+vt5xP19vbm5OSIRKLHHnusqanJnQy9iOP+Myidxadbqqqqxo8fLxAIlEol3S6RSHQ6nc2VAfATKC0BAMDgoqcshYaGBgcH850LAAAA+COr1Tp9+vTGxkb6ZWNj4xNPPMFM5yktLW1padFqtcXFxe4suJ6ammo/FaioqEgul2s0msOHD+/bt8+drLyIQ5fL3QnuLD7d0t7e3tzcTD90km7XaDRMfDyMC/wNSksAADC4bt++TTCFGwAAAAghhCgUCmbeDb2hUCgIIevXr1+3bh3dZ926devXr6e3L168+C//8i8RERFisXj9+vXuP/vPxieffFJYWCgQCCIjI1966SWv8+eOc/r06dOnT3sdnFFaWhoeHp6WlmYymQYeDWCwobQEAACD6M6dO/39/UFBQSKRiO9cAAAAgH8qlYqZd0NvqFQqQsjcuXPv3LnT0NDQ0NDQ19eXnJxM98/IyJg5c+a5c+e0Wu3OnTt9koPRaPSrOIE1NIA9lJYAAGAQ0XfDiUQiLAoA4If8asGOoUzGf84aANjoiUvsKUuEEJVKFR8fHx4e3tzcvHnzZq+DZ2Vlbdq0yWQytbe3b9y4cZDieLTWkqdCQkKUSqXJZDp48OCcOXMGaRQAL6C0BAAAg8VqtdKz1nE3HMAQc/O5S0OzWoder3en21AuHYLnMQH4A6lUatOSlJRksVisVuvTTz/NNG7dujU3N1cikRQXF2dnZxNWddjmxjrmEIft5eXlbW1tYrE4JSVl+fLlxI0qsxdxzGaz+//DOIzPtNj8Swihl14Si8U1NTW1tbVujgIwBFBaAgCAwaLX681mc3Bw8NixY/nOxRsGg0GlUnV1dfGdCIDH2M9dIoT09fUVFBTIZDK5XL59+/aYmBj23mPHjtk8h4g4eR6Ts+cW6fX6F198USwWx8bGtrS0ML8jqdXqhIQEoVAok8ny8vLcqTFdvXp1+vTpYrF4+fLlvb297HHr6+vJTw9UmjBhAnMInscEEKAcPhryq6+++vLLL9ktaWlpP/74o16vr6+vnzp1KnsRa5tnTTKHOGwXCoU7duzQ6XTffffdtGnT3FkM24s4Z86ccX+tJYfx2S9tdqWlpRmNRp1Ot3v37vvvv9/NUQCGAEpLAAAwWG7dukUICQsLC9Bfycxms16vv3PnDt+JAAzUmjVrjEZjU1PT5cuXhUIh/ZghxsGDB1taWtjPISJOnsfk7LlFRUVFEomko6OjoaHhiy++YHoWFhZWVFQYjcbW1takpKTCwkKXqW7fvn3Xrl2tra0ikWjVqlV048mTJ6dPn56amkoISUlJiY+PP3DgAHMInscEAADALwo/JgEAYDD09/f/8MMPhJCJEycKBAK+0/GGXq9XqVSjR4++5557+M7FZ4KCgiZOnMiuIAwb//mf/3n79u033niD70S8cfjw4bCwsOnTp3t9+LJly/Ly8hQKRXt7O3tXdHS0SqWSy+Vnz56VSCT2x1IUZTKZRo0aRW/TnwwvXry4cuXKxsZGg8EQGxvb0NDAfGJk+rC3pVLp+fPn6fhqtVoqldLtERER7DJWVFQU9zRAiqLa2troZ0VpNJqpU6cy/dPT05cuXZqenr5r167du3d/+umn3l0r+7PgOC+HPcH/dXZ2Tp482f3niCUlJRUUFLjzSHvwWllZmUqlqqqq4jsRAO/JZLKTJ09OmjSJ70T8EWYtAQDAoLh9+zYhZOzYsQFaVxquKIrC2jHDmLPnLvX393McRdeV2Dx9HhN7ZiK7EBMXF8e+18Oj20stFktQ0P99Ui0pKVm3bp3BYHjvvffee+899+P4EJ7HBDD8yGQyyo5MJuM7L4AAY/tJAgAAwCfou+HCw8P5TgT+AUVRcXFxZWVlfCfie/X19UajMUBPrbe3V6FQFBcXe3e4w/VK2JYsWVJRUVFSUqJWq7/++uvdu3d//PHHHP3Zz2P67LPPXCaQmZlZWVm5fv16vV5fU1PDtKekpNTU1DzzzDPR0dHsOhGH6urqFStWCIXCDRs2ZGRkMO1Tp0594oknFi5c+Pjjj9usMEIvtHTq1Cl34nuKfh7TggULjhw5UlpaeuLEicEYBQD44vL/TwBwB2YtAQCA7+n1+v7+/qCgIEyQAeCFzXOXKioqtFqtVCp96KGH9u7dW15eTrc7ew6Rs+cxOfu3rKyso6MjMjJy5syZCxcuZMZ9/fXX1Wr1rFmzJBLJvHnzuAt/dKicnJz09PRJkybpdDqb/qtXrz5x4sS6detsDsTzmAAAAPiFWUsAAOB7gb6AN0Cgs/k7vFAo3LJly5YtW2y62TxQidlOS0tLS0uz3+Wsf2hoaHV1dXV1tclk2r9//4MPPki3BwcHr169evXq1e7kzAR0Nv/owIEDr7zyCvvZcLQzZ864E98+bYeNNh3o5zG5Hx8AAGAEQmkJAAB8rL+/n35k+Lhx4/jOZUCwdi+A+95+++2SkhKBQJCamnrs2DGfx2fq1JWVlT4PDgAAAAOBG+IAAMDHKIoSi8VCoXD06NF85wIAQ2TDhg1Wq9VgMCiVysFYAZdZC9znkQEAAGCAUFoCAAAfCw4OjoiIiI6O5jsRAPBHeB4TAAD5xxXffGXt2rXM9qeffhocHExRlEAgUCqV9kNTFHXXXXc1Nze7bGeHBXAIN8QBAABwwXJRAL6F5zEBAE0ul1+/fn2Qguv1+tDQ0EEK7hNWq9W3nzEuXrzY3d3NvHzttdf279///9i7+7gmrnx/4DMEwkMSJAESQkCqrWjr1lZR1F65uy4+Aaut1Iqve8Wl2u7ttqLddlFqLb/aVsVC613Z7X2x4Avq1lp8aNatootWduUWerXdu68uoqjoShOeIiFACJCn+f0x19nZhIQAgUnC5/2Hr5kzZ875zkFx8s2ZMykpKUqlMiMjw2bZOEeTQIcs7+rqunPnzvTp090YLfgYpJYAAAAAvNvAwMDt27f//Oc/cx0IgEfQarV4dtIrtLW1sXfpPMuhQ4cOHDjQ0dFRUVHBvE8gOzu7qqpKpVI99dRTu3btWrp0KV35ww8/zMvL++Mf/3j9+vVXX331yJEja9eu1Wg0qamp33zzjVQqfe65595//312jikxMZFw/LoAm2CIB6kWm137eJg6XV1dr7/++vHjx1966SX6dZwDAwM7d+787LPP/Pz89u/fv2/fvps3bzIdXbp0adOmTcNer5P2GSUlJStWrGB2tVotvZGWljZ37txhfhhOJScnFxcXHzhwYCyNgG9DagkAAADAu/3tb3/7/PPPS0pKuA4EwCNQFIX3+nkjehZPS0tLQ0PDl19+yZ5os3///qKiIpPJdPny5TVr1vT29tKVLRZLWVlZWlpaVlZWWVkZfUpOTk5hYeFTTz01ODh44cKFnJyc3/zmN+xeXAxm8eLFH374Ib1bW1v7+uuv19bWOoqHiT89PX3Tpk0HDx68evUqXXnXrl1Go7G+vl4oFJ45c4bJ+NDOnTvX2NhYVVXl/HqdtM+oqqp64YUX7K/lyy+/PHv2LLskODiYTlQFBASwU1qOymfNmvXuu+8itQROkMjoAwAADKmvr6+lpSUoKMj+Zefey9/fPzMzs6ysjOtA3G/OnDnNzc06nY7rQEYjOztboVDk5uaO7vTnn38+ISFh69at7o0KwEu1t7c//PDDer3exfrJycnbt29fs2bNuEY1yeXn56vV6qKiIoIgFApFS0sL+2h0dLRarSYIgiT/8fmU2b5169Zrr71WW1s7ODg4b968mpoaZibRkBvh4eHs9E1kZGRHR8coYq6qqiooKLhw4QJBEMuXL9+xY8fy5cudxEMH0NvbKxQK2e3I5fJr165JJBL7LkiSNJlM/v7+rlyvo/YZU6ZMUavVNkcvXrz4gx/8ICoqashTmpubH3nkEftUrE15T0/P1KlTvfR/WDeSyWR1dXV4MHBIWMYbAAAAAAAAJoharWZe+Ehv0HklR9avX79kyZLr16/rdLrjx48P235CQgLFMrq8EkEQK1as6O/vr6mpqampGRgYoPNKw8Zjn/cxm81OeqHzSmwjbZ9hP2vkyJEjcXFxjvJKBEFMnTrVZDK5Uo4pKeAcUksAAABDw10UAAAA59Rq9fz580NDQxsaGg4dOjRs/ZSUlNLSUpVKZbVa7Y8mJibSyy25Ys+ePXl5eXl5eXv27Bl1POvWrSssLCQIQqPRKJXKjRs3Oq8/0vYZcXFx7OlgJ06cePzxx2fMmEH88ztJkpKS8vLympqaCIJQKpUBAQHOywmCUKlUmKoDzmGtJQAAAACvt3Pnzry8PK6jAPAIQyYUwANJpVL2Lp3+oJ8LY28XFxdv2bKlo6PjRz/60Ycffrh//34mUWL/TBxBENu2bXv//feTkpK6uroWLly4dOlS9uPGFovFz8/VCRbJycnvvPMOSZI//vGPmcIh42HHTFdj4iksLMzJyaEvNjU1lVl7e0TX66R9xooVK27cuBEfH0/vZmVlGQwG+4tSKpWvv/56QkJCd3c3vaaS83KCIG7cuLFy5UoXBw0mJ6y1BAAAbmA0GlUq1ZQpU8LDw7mOxW30en1rayvWWvIWk3mtJY1GQy/yCgA0kiSnTZvmYmWstTQB2GstwTi5efPmr371K/aa5e7yyiuvvP7665i4hLWWnMCsJQAAcIOenh6LxYI38gBwIjIyMjIykusoAACAS/Hx8WFhYePRskQiQT4FnENqCQAA3CAiIiIoKIj9WL4PYC9MAAAAAODh9u7dOx7Nvvvuu+PRLPgSpJYAAMA9nLyyBAAAAAAAfBVSSwAAAEMLDg6eOnUq5i4BAAAAADiB1BIAAMDQ/Pz8AgMDuY4CAAAAAMCjufraRQAAAAAAAAAAABtILQEAAAAAAAAAwCghtQQAAAAAAADgU0iSdPt6kbt372a2jx07xuPxSJLk8/lKpdK+a5Ikw8LCGhoahi1nNwteCqklAAAAAAAAmGhyuXziOzUYDK5XFolE4xfJeKMoyr0N3rp1q6uri9l95ZVXzpw5Q1FURUVFRkaGfe8URel0uscee2zY8q6urjt37rg3WphgSC0BAMAo9fT0mEwmrqMAAAAAr9TW1sbeHRgY2L59u0wmk8vl5eXl8fHxdLnJZMrNzZ05c2Z8fPyOHTuMRiPxYP7LwYMHRSJRbW3t4cOHRSKRUql0VE4QhEajWbBggUAgkMlkW7duZXJM9ClFRUUxMTHsCTgSiUSv1zMTbZg4lUoln88nSTI0NHTJkiVMnLTExMTExMRhr92mWZvd7OzsmTNnCgSC5cuXV1dXs+vodLotW7aIRKKcnBzn40a7dOmSzXWNtH1GSUnJihUrmF2tVpuSkkIQRFpa2ty5c4e9ZCeSk5OLi4vH0gJwDqklAAAYDbPZ3NHRce/ePfoODwAAAGAsdu3aZTQa6+vr79y5IxAItFotXb57926FQtHY2Hjz5k2FQkE/PEVPybFYLGVlZWlpafX19WVlZRkZGY7KCYLIyckpLCw0Go1NTU3JyclM6oQ+paWlpaGhgT0Bhw6AeoCJc9OmTT/5yU9MJlNbW9svf/lLnU7Hvgqbyo5QFLVo0aLa2lp6t7a2dvHixcyJ+/fvb2xs1Ol0ubm5a9asYceZnp6elJSkVqtXrVrlfNxo586da2xstJlYNKL2GVVVVY8++qj9tXz55Zdnz55llwQHB9OJKpuUlqPyWbNmVVVVDTto4MlIt0+TAwCAyaCjo6O7uzs4ODgmJobrWGAE/P39MzMzy8rKuA7E/ebMmdPc3Gxzi+8tsrOzFQpFbm4u14EATEbJycnbt29nPmDDeMjPz1er1UVFRQRBKBSKlpYW9tHo6Gi1Wi2Xy69duyaRSGzOjYqKunHjRlhYGEEQXV1djz32WGtrK0EQJPl/H2ZtNhyVh4eHs9MukZGRHR0d9DZT08k244svvnj22WdNJlNERERkZOTHH3+8YMGCUYxJVVVVQUHBhQsXCIJYvnz5jh07li9fThDErVu3Xnvttdra2sHBwXnz5tXU1LDj6e3tFQqF7HYcjRtd32Qy+fv7s69lpO0zpkyZolarbY5evHjxBz/4QVRU1JCnNDc3P/LII/ZfQ9qU9/T0TJ061fP/B5fJZHV1ddOnT+c6EE+EWUsAADBiZrO5p6eHIIgh72N8htVq1ev1fX19XAcCAADgO9RqNTO1h95Qq9UEQZjNZkenuGU+REJCAsXC5JVcxORBVq9ebTQa9Xr9X/7yl8zMTPYzYiOyYsWK/v7+mpqampqagYEBOq9EEMT69euXLFly/fp1nU53/Phxm7Ps8z5Oxo0gCDqvxDbS9hn2P4UjR47ExcU5yisRBDF16tQhF0+wL8eUF2+H1BIAAIyYTqejKCooKCgkJITrWMaRyWRqbW0d6a0nAAAAjMK6desKCwsJgtBoNEqlcuPGjXT5pk2bSkpK6HxQcXFxZmbm6NpPSUkpLS1VqVRWq9XFUwICApRKpclkOnfu3LJly+jCyMjIK1eu+Pn5xcbGzpo1y+YrKBfXWqLt2bMnLy8v3GvrYQAAIABJREFULy9vz549TKFarZ4/f35oaGhDQ8OhQ4eGbcTRuDky0vYZcXFx7OlmJ06cePzxx2fMmEEQBHstqqSkpLy8vKamJoIglEplQECA83KCIFQqFaYCeTuklgAAYGQsFkt3dzdBEGKxmOtYxpefn19ISEhQUBDXgQAAAPggqVTK3i0sLNTpdFKpdPbs2adPny4oKKDL33vvPY1GExsbGxsb29nZ+d577xEPchnsZbDZG/blBEFs27ZNo9EkJSVJJJKVK1fm5+fbn2JzOr1EkVgsLi0tPXz4MF04bdq0v/71r/Hx8SRJZmRkVFRUsK/CYrG4PgEnOTnZarVSFPXjH/+YKSwuLt6yZYtEIsnNzd20aZN9bDbLijsaN0fXNdL2GStWrLhx4wazm5WVNW/ePPvKSqXy3r17CQkJNuPjqJwgiBs3bqxcudLFQQPPhLWWAABgZDo7O7VaLZ/Pj4uL4zoWGDGsteSZsNYSAIew1tIEYK+1BF7q5s2bv/rVr37zm9+4veVXXnnl9ddf9/yJS1hryQnMWgIAgBGwWq30lCXfXmUJAAAAANji4+PpxdTdTiKRIF/j7ZBaAgCAEeju7rZYLAEBASKRiOtYAAAAAGDi7N27dzyafffdd8ejWZhISC0BAICrKIqinzYap++sAAAAAADA6yC1BAAAruru7jabzf7+/lOmTOE6FgAAAAAA8AhILQEAgEusVqtWqyUIIjw8fMj3hgAAAAAAwCSE1BIAALhEp9NZLBY+nx8aGsp1LAAAAAAA4CmQWgIAgOFZLJauri6CIMLDw7mOBQAAAAAAPAhSSwAAMLyuri6r1RoYGCgUCrmOBQAAAAAAPIg/1wEAAICnM5vN9IvhJtuUJYvF8v333xME8dBDD3EdCwAAAHgHkiQpiuKqa4IguOodJjPMWgIAgGF0dXVRFBUcHCwQCLiOZaKZTCaTyYRbNAAAALeTy+Vjb8RgMLheWSQSjXc7xAgzOyPqd1gudu2ucQBgILUEAADOmEym7u5uYvJNWSIefPUHAAAA46GtrY29OzAwsH37dplMJpfLy8vL4+Pj6XKSJEmS1Ol0W7ZsEYlEOTk5dLlGo1mwYIFAIJDJZFu3bmXnRLKzs2fOnCkQCJYvX15dXU0XSiQSvV5PPsBUdtLOkBy1QxBEZWWlTSG9e/DgQZFIVFtbe/jwYZFIpFQqh+03MTExMTHRlWHs6+vLysoSCoVz586tr69nHxrXcQBgQ2oJAACc0Wq1FEWFhIQEBwdzHQsAAAD4rF27dhmNxvr6+jt37ggEAq1WS5fTM3HS09OTkpLUavWqVavo8pycnMLCQqPR2NTUlJyczKScCILYv39/Y2OjTqfLzc1ds2YNXUg3SD3AVHbSzpActUMQRGpqqk0JvWuxWMrKytLS0urr68vKyjIyMobt175xR3bu3CmXy7Va7YULF7744gv2oXEdBwA2zp4CBQAAr9DX19fZ2SmVSoOCgriOZaJZrdampiaCIB5++GE/Px/5Msbf3z8zM7OsrIzrQNxvzpw5zc3N9LpgXic7O1uhUOTm5nIdCMBklJycvH37duaDN4yH/Px8tVpdVFREEIRCoWhpaWEfjY6OVqvVcrn82rVrEonE/nSSJHt7e23eJRIeHs6knwiCiIyM7OjoIAji1q1br732Wm1t7eDg4Lx582pqapjPvEOuguSoHSecr6Zkc5TZtdkYRb9Dkkgkt2/fpsets7MzIiKC7mUCxmGykclkdXV106dP5zoQT+QjN8oAADBOBALB1KlTJ2FeicADcQAAAONArVYz82XoDbVaTRCE2Wx2cpb9O2oTEhIoFiYPsn79+iVLlly/fl2n0x0/ftxRg0aj0Xk7LmLaGakx9jtsMBM8DjDJIbUEAAAAAAAAHFu3bl1hYSFBEBqNRqlUbty40Xn9lJSU0tJSlUpltVrZ5Wq1ev78+aGhoQ0NDYcOHWIfCggIUCqVJpPp3Llzy5Ytc96OE0O2M1LO+3V9raUNGzZ88MEHJpOppaXlwIEDTPkEjAMAA6klAACAYeDhcQAAALeTSqXs3cLCQp1OJ5VKZ8+effr06YKCArqcnkRsv+z0tm3bNBpNUlKSRCJZuXJlfn4+XV5cXLxlyxaJRJKbm7tp0yaCNQ25oqIiIyNDLBaXlpYePnzYeTtODNkOE6TNBjsAV+KnWSwWF28/CgoKVCqVWCxOSUnZvHkz08sEjAMAA2stAQAAOHTr1i2CIKZPn87j8biOxT2w1pJnwlpLABzCWksTgL3WEoCXwlpLTmDWEgAAAAAAAAAAjBJSSwAAAMPADF8AAAAAAEeQWgIAAHAIL4kDAACYhGQyGWlHJpNxHReAh/LnOgAAAPAsWq1WKBTy+XyuAwEAAADgRnt7O9chAHgTzFoCAIB/MBgMnZ2dzc3NFouF61g8CB6IAwAAAABwBLOWAADgH/h8vlAo5PF4PvNCtDEiSZKiKKSWAAAAAAAcQWoJAAD+wd/fXy6Xcx2FB8FaSwAAAAAAzuGBOAAAAIfo1BJmLQEAAAAAOILUEgAAgENILQEAAACDflXchPU1MR0BjB1SSwAAAA4htQQAADBO3PIMvsFgcL2ySCQaYzsTeUvgel9OrgtgYiC1BAAAMAyklgAAANyura2NvTswMLB9+3aZTCaXy8vLy+Pj4+lyeqKQTqfbsmWLSCTKycmhyzUazYIFCwQCgUwm27p1Kzs3lJ2dPXPmTIFAsHz58urqarpQIpHo9XryAaayk3YcaW5uXrRokVgs3rx5c19fHzvOyspKgiAqKytJkoyNjWVOSUxMTExMdHFk6NNtZi3RJUVFRTExMXw+X6lUOr8ugImEZbwBAAAcwqwlAIDJQK/Xd3V1cR2FL+vv7x+2zq5du4xGY319vVAoPHPmjFarpcspiiJJMj09fdOmTQcPHrx69SpdnpOTU1hY+NRTTw0ODl64cCEnJ+c3v/kNfWj//v1FRUUmk+ny5ctr1qzp7e0lCEKr1dIvfrXp10k7jpSXl588eTIkJOTtt9/esWMHXb+uru4Xv/hFamoqQRApKSnz588/fPgwc8qI7iVSU1Ppq2YX0iUtLS0NDQ1ffvllRkaG0Wh0cl0AEwl/BQEAABwym80URfn7+/vM14D+/v6ZmZllZWVcB+J+c+bMaW5u1ul0XAcyGtnZ2QqFIjc3l+tAACajp59+uqamhusovENfX5/JZHJ0NCAgQCAQDHloYGAgMzOzuLiYIAiFQtHS0sI+Gh0drVar5XL5tWvXJBKJ/ekkSfb29gqFQnZheHg4k34iCCIyMrKjo4MgiFu3br322mu1tbWDg4Pz5s2rqalhPvMOmYJx1I4jJEmqVCqFQkEQhFarnTVrFlM/PT1948aN6enpJ0+ePHXq1LFjx5y0Myz7aNkljrZh/Mhksrq6uunTp3MdiCfCrCUAgEmttbVVJBLZ3KsBw98f/1ECAPi406dPcx2C12hra3P0vNiZM2cuXLjwxRdfDHk0Pz9frVbT28yGTULEbDY76dr+XiUhIaGqqsq+5vr16zds2HD48GGJRHL//n1HKzoZjUY+n++kHVdYrVY/v38sMrNv375169alpaW98847p06dGl2bY8RcF8BEwlpLAACTV3d3t16vb29vt1gsXMcCAAAAni4qKmq6A1KpdIyNr1u3rrCwkCAIjUajVCo3btzovH5KSkppaalKpbJarexytVo9f/780NDQhoaGQ4cOsQ8FBAQolUqTyXTu3Llly5Y5b8eJkpISlUrV1dW1d+/e9evXM+WzZs1avHjx6tWrFy5cOGPGDPYpI1praaSGvC6AiYTUEgDAJGUyme7fv08QRHh4OI/H4zocAAAAmFxsslGFhYU6nU4qlc6ePfv06dMFBQV0Of1Muv0y1du2bdNoNElJSRKJZOXKlfn5+XR5cXHxli1bJBJJbm7upk2bmBYIgqioqMjIyBCLxaWlpcxCSI7aGRLdVFZWVnp6+vTp0/V6vU39N9544/Lly3l5eTYnWiwW159ZY66UfclMic2fjq4LYCJhnj8AwCSl0WisVmtQUFBYWBjXsQAAAMCk097ezt4VCAQfffTRRx99ZFPNUUaGx+O98cYbb7zxhk352rVr165dO+Tpa9eupZe+dqWdITGtXblyZcgKZ8+e/fnPf85+Nxzt22+/daV9m14cFdpUGPK6ACYSUksAAJNRX18f/a7csU9fB/AQnZ2der1+8eLFXAcyGnfv3uXz+VjwBQDG7siRIzaPYsGEYaYRHTx4kNtIACYYHogDAJh0LBYL/T1hWFhYYGAg1+EAuIder3d9mQwAAJ/09ddfq1QqrqOYvKgHuA4EYKJh1hIAwKRDr9sdGBgYERHBdSwA7kSSZF1dHddRjEZ2drZCocjNzeU6EADwblg80V1kMllHR4dNoVQqtXmIDwBoSC0BAEwuPT09fX19JEnKZDL2WpgAAAAAQEMKCWBEkFoCAJhETCaTRqMhCEIikeBROFcYDIbBwcGgoKDg4GCuYwEAAAAA8ERYawkAYBJpb2+3Wq3BwcESiYTrWLyDwWC4f/8+veQ5AAAAAADYQ2oJAGCy6Orq6u/v9/Pzk8lkXMfiNQIDA4VCIZ/P5zoQAAAAAAAPhQfiAAAmhcHBwc7OToIgIiIiAgICuA7Ha4hEIpFIxHUUAAAAAACeC7OWAAB8H0VR7e3tFEUJBIIpU6ZwHQ4AAACAq0iS9K4Xj3AYrdeNFfgMpJYAAHyfVqsdHBzk8XhSqZTrWAAAAAAIgiDkcrkr1SiKGu9ICIIwGAyuV3Y+o3lEAY+o32G52LWT+N0bD0weSC0BAPi4/v7+rq4ugiAiIiL8/fEcNAAAAHiEtrY29u7AwMD27dtlMplcLi8vL4+Pj2cfvXTpUkxMDJ/PVyqVTGF2dvbMmTMFAsHy5curq6vpQnrmTlFRkU19g8Hw4osvisXiefPmNTY2MhN8NBrNggULBAKBTCbbunXrsLkViUSi1+vJB9iHKisrbQrp3YMHD4pEotra2sOHD4tEIjok5/0mJiYmJia6Mox9fX1ZWVlCoXDu3Ln19fXsQ0OOj6P4RzoOAGxILQEA+DKLxdLW1kZRlEgkCg0N5TocAAAAgKHt2rXLaDTW19ffuXNHIBBotVr20XPnzjU2NlZUVGRkZDCF+/fvb2xs1Ol0ubm5a9asoQvpmTstLS0NDQ3s+jt37pRIJG1tbTU1NefPn2dq5uTkFBYWGo3Gpqam5OTknJwc53HSgVEPsA+lpqbalNC7FoulrKwsLS2tvr6+rKyMDsl5v/aNO7Jz5065XK7Vai9cuPDFF1+wDw05Po7iH+k4ALCREzO9EAAAOKFSqfr7+wMDA2NjY/HsPRAE4e/vn5mZWVZWxnUg7jdlyhS9Xm+xWLgOZDSys7MVCkVubi7XgQCAd+PxeBcvXly6dOnEd/3ZZ58dPXrUJrXByM/PV6vVRUVFBEEoFIqWlhb20ejoaLVaLZfLr127JpFI7E8nSdJkMtGTr0ny/z7D3rp167XXXqutrR0cHJw3b15NTQ3z2Zapw96WSqU3btyg29doNFKplC4PDw9np7EiIyM7OjqcXyy7/WGPMrs2G6Pod0gSieT27dv0dXV2dkZERIxofBjuiseHyWSyurq66dOncx2IJ8KsJQAAn2WxWKxWK0mSMpkMeSUAAADwBGq1mpkvQ2+o1WqCIMxms5Oz7B/qX79+/ZIlS65fv67T6Y4fPz5sv+x7IXZiJSEhgWIZaT7FaDSOqL67+h02GBfHhzllPOKByQOpJQAAn8Xj8WJjYxUKRWBgINexAAAAADizbt26wsJCgiA0Go1Sqdy4caPz+mq1ev78+aGhoQ0NDYcOHRq2/YyMjIMHD1qtVr1eX1paypSnpKSUlpaqVCqr1epiqAEBAUql0mQynTt3btmyZS6eZcN5v66vtbRhw4YPPvjAZDK1tLQcOHCAKXcyPkPGP4pxAGAgtQQA4MtIkgwODuY6CgAAAABbNi+uLSws1Ol0Uql09uzZp0+fLigooMvp2Ub2fxYXF2/ZskUikeTm5m7atMlJTfrP/Pz8tra2iIiIJUuWrF69mul327ZtGo0mKSlJIpGsXLkyPz9/2MjpJZzEYnFpaenhw4eZcmZhbPYGwZowxZ455bxfi8Xi4to1BQUFKpVKLBanpKRs3rx52PFxFP8oxgGAgbWWAAAAHDIYDK2trYGBgTExMVzH4h5Ya8kzYa0lAHALr1hriXMmk+nMmTO7d+++du0a17GAN8FaS05g1hIAAIAzVqvVS7MVAAAAwPbmm2+SJCkUCo8cOXLp0iWuwwHwHUgtAQAAOERPHccMXwAAAB+wd+9eiqIGBweVSqVMJuM6HADfgdQSAACAQ0gtAQAATEL023VtIBsF4IjtGxwBAMBL0W+K9fPDdwbuxF5uEwAAACaJ9vZ2rkMA8Cb4BAIA4CPa29u///57k8nEdSA+BbOWAAAAAACcQ2oJAMAXmM3m/v5+k8mE1NJ4QGoJAAAAAMARPBAHAOAL/P39p06d2t/fHxISwnUsPgWzlgAAAAAAnMOsJQAAH8Hj8YRCIddR+Bp67SqklgAAALhCL6HNdRT/ZyKD8ZyrBhgWUksAAAAOMXd1VquV20gAAAB8jFwud6XaxHzBYzAYXKk2kd82ud6XSCQa10gAhoXUEgAAgENMagkTlwAAANyrra2NvTswMLB9+3aZTCaXy8vLy+Pj49lHL126FBMTw+fzlUolU5idnT1z5kyBQLB8+fLq6mq6kJ5YVFRUZFPfYDC8+OKLYrF43rx5jY2NzPwjjUazYMECgUAgk8m2bt3qSo6publ50aJFYrF48+bNfX197H4rKysJgqisrCRJMjY2ljklMTExMTHRxZGhT7eZteTouiQSiV6vJx9wsQsA90JqCQAAwCHmLg2pJQAAgHG1a9cuo9FYX19/584dgUCg1WrZR8+dO9fY2FhRUZGRkcEU7t+/v7GxUafT5ebmrlmzhi6k/8tuaWlpaGhg19+5c6dEImlra6upqTl//jxTMycnp7Cw0Gg0NjU1JScn5+TkDBtqeXn5yZMnm5qahELhjh076MK6urpFixalpqYSBJGSkjJ//vyzZ88yp1AU5fq9RGpqqn1lR9dFDxT1gItdALgXib98AAAATjQ1NVmt1ri4OD6fz3UsbuDv75+ZmVlWVsZ1IO43ZcoUvV5vsVi4DmQ0srOzFQpFbm4u14EAgHfj8XgXL15cunTpxHf92Wef7dy5c9WqVUMe/etf/5qQkPDRRx8RBKFQKFpaWthHo6Oj1Wq1XC6/du2aRCKxP50kSZPJ5O/vT2/Tn2Fv3br12muv1dbWDg4Ozps3r6amhvlsy9Rhb0ul0hs3btDtazQaqVRKl4eHh7PTWJGRkR0dHU6ulCRJlUqlUCgIgtBqtbNmzWLqp6enb9y4MT09/eTJk6dOnTp27NjwA+e0I5tP60Ne15A1YTzIZLK6urrp06dzHYgnwhviAAC8z+DgYGBgINdRTBZ+fn5WqxV3bAAAAE488cQTL7/8sqOjzc3NzLZaraY3bBIiZrPZSft0Xolt/fr1GzZsOHz4sEQiuX///rArN7EfFmP3m5CQUFVV5fxcR6xWK/3GD9q+ffvWrVuXlpb2zjvvnDp1anRtjpHRaPSNL8PAuyC1BADgZQYGBtRqdUhISFRUFJ6onwD0IGMZbwAAACceffTRRx991NFRiqKYjJIj69atKyws3Ldvn0aj+e///u9Tp0598sknTuqr1er58+eHhoY2NDR89tlnw0aYkZFx8ODBPXv2GAyG0tJSpjwlJaW0tHTVqlXR0dHsPJETJSUlL7zwgkAg2Lt37/r165nyWbNmLV68ePXq1QsXLpwxYwb7FHqhpStXrrjS/kgFBAQolcqf/OQnFy9e3L9//+XLl8ejFwAnsNYSAIA3GRwcVKvVdJoDeaWJQd9lYtYSAACAe0mlUvZuYWGhTqeTSqWzZ88+ffp0QUEBXU7f8Nj/WVxcvGXLFolEkpubu2nTJic16T/z8/Pb2toiIiKWLFmyevVqpt9t27ZpNJqkpCSJRLJy5cr8/HwnMdNNZWVlpaenT58+Xa/X29R/4403Ll++nJeXZ3OixWJx/V6CWeqRvTK3o+siCIJeekksFpeWlh4+fNjFXgDcCLOWAAC8htlsbmlpsVqtwcHBUVFRXIczWWDWEgAAwHhob29n7woEgo8++ohej4mNnZFhb69du3bt2rX2hxzVDwkJKSkpKSkpMZlMZ86ceeyxx+hyHo/3xhtvvPHGG67EzDToaP7R2bNnf/7zn7PfDUf79ttvXWnfPuwhC20qrF271mg0ut4+gNshtQQA4B0sFotarTabzXw+Xy6XY8rShMGsJQAAAN/w5ptv7tu3j8/np6amXrp0ye3tM7dnBw8edHvjAJ4MD8QBAHgBq9Xa0tJiNBr9/f0VCgWPx+M6okkEs5YAAAB8w969eymKGhwcVCqVMpnM7e1TD7i9ZQAPh9QSAICnoyiqra1tYGDAz89PoVDYvyEFxhVmLQEAAEw2MpmMtDMe2SgA34DPJwAAnq69vb2vr48kSYVCgbfJTjzMWgIAAJhsbNaBAgDnkFoCAPBoWq22t7eXIAiZTBYUFMR1OJORTCbDt5QAAABjMTAwoFar//znP3MdCMDoGY1Gs9nMdRQeCqklAADP1dXV1dnZSRBEZGSkSCTiOhwAAACA0fj222/Pnz9fVVXFdSAAo9fX19fW1hYfH891IJ4IqSUAAA+l1WqZvFJYWBjX4QAAAACM0r/8y7889NBDRUVFXAcCMHoymSwmJobrKDwUlvEGAPBETF4pIiICeSUAAAAAAPBYSC0BAHgcdl5JLBZzHQ4AAAAAAIBDeCAOAMCzMOsrhYeHI68EAAAAvqGkpOTo0aNcRwEwejqdjusQPBdSSwAAHqSrq+v+/fsEQUgkEolEwnU4AAAAAG7w6quv/sd//AfXUQCM1ZQpU7gOwUMhtQQA4Cn0ej2dVxKLxeHh4VyHAwAAAOAeQUFBQUFBXEcBAOMFqSUAAE8REhISFBQUEhKCvBIAAAAAAHgLpJYAADyFn5+fQqHw88MLFjyL2WzW6XQkSSLlBwAAAABgDx9gAAA8CPJKHshisXR1dXV3d3MdCAAAAACAJ8KsJQAAAGf8/f3FYjFJklwHAgAAAADgiZBaAgAAcIbH40VERHAdBQAAAACAh8KTFwAAAAAAAAAAMEpILQEATDSr1arRaKxWK9eBAAAAAAAAjBUeiAMAmGitra0Gg8FsNsvlcq5jAQBfoNFoent7uY4CvEZISEhUVBTXUQAAgO9AagkAYKKFh4ebzWa8yR4A3GXHjh1nzpwJDQ3lOhDwAnq9fvHixb///e+5DgQAAHwHUksAABMtKCho6tSpeOMYALjR//t//2/r1q1cRwFe4OjRoydOnOA6CgAA8ClYawkAgAPIKwEAAAAAgG9AagkAAAAAAAAAAEYJqSUAAIDhWa1WiqK4jgIAAAAAwOMgtQQAMF6sVivXIYB7qFSqpqYmvV7PdSAAXmMsj/3ikWE2jAYAAHg+pJYAAMaFyWT6/vvvOzs7uQ4E3MDPz49ArhCARalU8vn8gICAmJiYVatWcR0OAAAAcAmpJQAA9+vv7//++++NRmNPTw/yET4AqSUAGxkZGRUVFSaTSaVSnT9/3r7CWB4gdXRudHT0qNv0XngUFwAAPB9SSwAAbqbT6dRqtcViCQoKio2NpbMS4NWQWgKwYTKZ1q5dO8Gdtra2Oq8wODg4MZF4SL8AAAAeAh94AADchqKotrY2jUZDUZRQKIyJifH39+c6KHADpJbA6zQ2Nj777LNisTg4ODgpKenLL7+Mj49njl6/fv2ZZ55RKBQKhSI9Pb2xsZE5RJIkSZJ6vf6ZZ57h8/l8Pl+pVLJbjouLo1f/IR9YunQpu8KtW7focvuoPv/88xkzZgiFwo0bNxoMBvtqjs595JFHbDq1qVNRUaFQKIKCgoRC4cqVK7/99lv25Xz00Ucikai2tnbfvn0CgcDmipyw6cu+a0f9susTBFFVVfXEE0/Ex8efPXuWPkQ/UUiS5JQpU9LT06urq3/wgx/Y9O5kJMfyEwQAAHA7pJYAANzDaDQ2Nzf39vaSJCmVSuVyOdZe9Rl0agmPpYC3uH79+qpVq1atWnXt2rWenp5jx47dunVLq9UyR3/6058ePHhQrVar1eoPP/wwKyuLyU3Qf89zcnJef/31wcHBioqKjIwMduP37t2j61APVFdXsyvMmDFjyH8sX3/99VtvvXXixInOzs6tW7e+/fbbhN0/K0fn3r5926ZTdrXq6uojR46cOXPGYDC0tbXt2rXrlVde+eabb5j2b926VV5e/vTTT9+/f//IkSM2V+REb2+vTCbr6+ujd/V6vUwm6+3tHbZf9mD+6le/unLlyrlz5xobG8vLy+lD9BOFFEV1dXUVFxer1eqOjg6b3h2Nxhh/ggAAAO5HAQDAmPX29t6+ffvmzZt37twxGAxchwNu1tXVdfPmzdbWVq4DcQMej5eVlcV1FOMiNDTUz8+P6yhGaevWrfv37x/16VlZWUVFRczumjVrPv74Y0eVV69eXVlZyS6prKx8+umnmV2CII4fP87etW9k2HtI+worV648f/48s3vq1ClHjYy0/F//9V/v3r3LLvnuu++WLVvGnNXd3U1v9PT0uBI827//+79/8skn9Pbvfve7jRs3utgv03tVVRWzazab6Q2RSHTu3Dk6MOfsox3jT/CTTz5hVwYf4+fnd+nSJa6jAIBJB7OWAADGhKIojUbT2tpqtVrpxZWCg4O5DgrcDA/EgXeprq5OSUlxcnThwoXsksTExEuXLrFLnnvuObdH9c0337D7/eEPf+iulq9cuTJt2jT2s3Jz5sypra1lKoSGhtIbIpFopI1nZmYeOXJZjo9MAAAgAElEQVSE3v7d736XmZnper+05cuXM9s8Ho/e+PrrrwsKCiIjI+Pi4tLS0tatWzfsSlIMrn6CAAAAjmAREACA0bNYLK2trf39/QRBiMXi8PBwPATnk5BaAu9isVic/y6i7B6zsi/xIsHBwdevX3/ooYfGo/Fly5Zt2bKFzvs0NDQkJye7pd/HHnvsyy+/ZJekpaUxKzENy8d+ggAA4O0wawkAYJQGBgaam5v7+/tJkoyKioqIiEBeyVchtQTeZfHixX/4wx8cHV26dOnXX3/NLqmrq2NnTMbJ/Pnzr169yuxevHhxjA0y72VLS0s7evToGFtzhMfjZWRkfPrpp0ePHs3IyGCmHbm938rKShdrcvUTBAAAcASpJQCA0ejp6VGr1Waz2d/fPyYmZhQPWYAXoZOGSC2Bt9i3b99bb7118eJFiqL6+/sbGxtLS0s3b95MHz1w4MDu3btra2vNZrPZbK6trc3Lyztw4MB4R/X222//8pe/vHnzpslkqq2t/fOf/zzSFgICAuiXnbW2thYVFT311FN0+f79+0tKSt57772///3vJpNJq9X+8Y9/TEtLc1fk9DNxNk/DjbHfyMjI06dPd3V10bu1tbUBAQEuxsPVTxAAAMARpJYAAEbGarW2tbW1t7dbrdaQkJCpU6cGBQVxHRSML8xaAu+SmJioVCoPHDggFoujo6MzMzMHBgZ+/etf00cfffTRTz/9ND8/XywWi8XiAwcOHDt2bObMmfRROpHKzMG02SUI4rvvvmMKaampqcxRptBmmyCIRYsW5eXlpaamhoWFFRUV2adCnJxLo1925ufnt3Dhwtu3b585c4Yuj4mJ+eqrr27fvr1gwQKhUPjUU09VV1fT72Ib8nJsrmhYTz75pNVqpSjqiSeeYJc76ddm9OwvZ9q0adHR0S+//HJ0dHRCQsKGDRsqKipcHI0x/gQBAADcDmstAQCMAP2GaXodE6lUyiwNC74NqSXwOomJiRcuXHB09NFHH3X0xJzNkj32K/jMmTPHybI+zlf8efbZZ5999ll6W6PR2Mz3HHa1oLVr1xqNxiEPKRQKdk5nyDaZ7VEsS/S3v/1tRP0O29GVK1cIgjh27NgoziXG9hMEAABwO6SWAABc1dfXR79+ns/nR0VFBQYGch0RTBA6tUS/WhVf/gOMXUtLy549e3JycrgOBAAAANwAD8QBALgqJCSEz+eHhYVNnToVeaVJhU4tEZi4BDA277//Pv1g15NPPvn444+/9dZbXEcEAAAAboBZSwAAriJJMiYmhskywORBfximKMpqtbLfDwUAI7Jjx44dO3ZwHQUAAAC4GT4gAQCMAPJKkxaWWwLwPXFxcaQDcXFxXEcHAADgNTBrCQAAYHh+fn4WiwWpJQBfcu/ePa5DAAAA8AX4+h0AAGB49HNwSC0BAAAAANhAagkA4J/09/c3NzebTCauAwHPggfiAAAAAACGhAfiAAD+iVarHRwcvH//vlwu5zoW8CA8Hs/fH/9pgoeqq6srLy/Pzs7mOhDwDrGxsVyHAAAAPgV3yQAA/0Qqlep0uvDwcK4DAc8SFRXFdQgADi1YsGDLli0vvPAC14GAFzhx4sQXX3zBdRQAAOBTkFoCAPgnAQEBkZGRXEcBADAC/v7+wcHBYrGY60DACwgEAnrxOAAAAHfBWksAAAAAAAAAADBKSC0BAAAAAAAAAMAoIbUEAJMORVFdXV19fX1cBwIAMNFIknRyyMlR520Oe+JIWx5dJAAAAMAJpJYAYHLp7+9vbm6+f/++RqOhKIrrcAAAxoWjd1w6+b036l+Jrpw40sZdry8SiUbUMgAAALgdUksAMFmYzeaWlhaVSmU0Gv39/SMjI/GtOAD4qra2NpuSyspK++lFfX19WVlZQqFw7ty59fX1NqckJiYmJia62GNzc/OiRYvEYvHmzZvZ00KH7NdgMLz44otisXjevHmNjY3sCkPWp0uKiopiYmL4fL5SqaTLJRKJXq8nH3AxVAAAAHAvpJYAwPdRFNXZ2fn3v/+d/rQTFhYWFxcnEAi4jgsAYOKkpqbaTwXauXOnXC7XarUXLlywfyE9RVGuzx4qLy8/efJkU1OTUCjcsWPHsP1KJJK2traamprz588TrGlKQ9anS1paWhoaGioqKjIyMuhyrVbLxImJqAAAAFxBagkAfJzBYGhubtZqtRRFBQUFTZ06NTIy0s8Pv/0AwAcpFApm/g69oVAonNT/9NNPc3Jy+Hx+RETEz372M5ujV69evXr1qotdb9myJSYmRiKRvP322ydOnHBeuaKiYufOnYGBgQKB4N/+7d9c7GL//v2hoaFr1641mUwungIAAAATwJ/rAAAAxovZbO7s7Ozp6SEIws/PLzw8PCwsjOugwFtRFNXW1ma1WqOjo/HcDXgstVpNb5AkOdJZPEaj0S0xWK3WYdP37H9EbpxtZDQa+Xy+u1oDAAAAF+F7ewDwQRRFabXae/fu0XklkUgUFxeHvBKMBUmSer3eYDBYLBauYwFwmw0bNnzwwQcmk6mlpeXAgQM2R0e01lJJSYlKperq6tq7d+/69eudV87IyDh48KDVatXr9aWlpaMJ/YGAgAClUmkymc6dO7ds2bKxNAUAAACjg9QSAPgUiqJ0Ot3du3c7OzutVmtQUFBsbGxUVJS/PyZpwljJZLKoqCg8TQleQSqV2pTYPChHFxYUFKhUKrFYnJKSsnnzZuKf5xNZLBZXphTRp2RlZaWnp0+fPl2v1+fn5zvvNz8/v62tLSIiYsmSJatXrx42TqbE5k+CIOill8RicWlp6eHDh10bHgAAAHAnfNYCAN/R19d3//59+pmOgICAiIgIoVDIdVDgO0JDQ7kOAcBV7e3tNiVDJokEAsHHH3/88ccfD1nn22+/daUv5qwrV644OcoWEhJSUlJSUlJiMpnOnDnz2GOPOa/PLrSpsHbtWnc9ygcAAACjg69eAcAXDA4OqtXqlpYWo9Ho5+cXGRkZFxeHvBIAgMd68803SZIUCoVHjhy5dOkS1+EAAADA6GHWEgB4vc7Ozq6uLvp7bJFIFBERgcffAAA83N69e/fu3ct1FAAAAOAG+PQFAL6AoiiBQBAREYF3AwEAAAAAAEwkpJYAwOuJxeLAwEA8/gYAAAAAADDxsNYSAHg9Pz8/5JUAAAAAAAA4gdQSAAAAAAAAAACMElJLAOAF9Hq9SqUa8o3UAAAAAAAAwCGklgDA01EUpdFo+vv7u7u7uY4FJjWr1TowMDAwMMB1IAAAAAAAHgSpJQDwdCRJRkREhIeHh4aGch0LTGpGo/H7779vbW3lOhAAjimVSj6fL5FIli5danOIJMkRNTXS+u7ipF+SJEcXlSsnesv4AAAAjAhSSwDgBUQikUQi8fPDryzgEv030Gq1ch0IwPDkcvn4NZ6RkVFRUaHVaqurq20OjfTJZfv6IpHIUWWDwTCixkfUryuHRt3mqBt3vb6TcQMAABhv+JwGAADgEh6PRxCE1WrFsl/g+dra2ti7AwMD27dvl8lkcrm8vLw8Pj6eLjeZTLm5uTNnzoyPj9+xY4fRaKTL6Qk4RUVFMTExfD5fqVTS5XFxcSRJmkym9PR0m0k6lZWV9tN2DAbDiy++KBaL582b19jYyK4wZH2JRKLX68kHmHKNRrNgwQKBQCCTybZu3UrnmOg6Bw8eFIlEtbW1hw8fFolETKiODNlvX19fVlaWUCicO3dufX29zSmJiYmJiYnOm2U0NzcvWrRILBZv3ry5r6/PvePj6OfiaNwAAAAmBlJLAMA9q9Wq1Wo7Ozu5DgTAGTq1RBCExWLhNhKAkdq1a5fRaKyvr79z545AINBqtXT57t27FQpFY2PjzZs3FQrF7t276XI6f9rS0tLQ0FBRUZGRkUGX37t3jz5EPcB0kZqaap913blzp0QiaWtrq6mpOX/+PMGahjNkfTow+8ZzcnIKCwuNRmNTU1NycnJOTg7TlMViKSsrS0tLq6+vLysrY0J1xFGccrlcq9VeuHDhiy++sDlqE4xz5eXlJ0+ebGpqEgqFO3bsGLbfEY2Po5+Lo3EDAACYGCT++wEADpnNZp1O193dbbVaSZKcNm0a8+kdwAM1NTVZrda4uDg+n891LKPk7++fmZlZVlbGdSDuN2XKFL1e76WJv+zsbKVSGRUVNbrT29racnNzt27dqlAoWlpa2Ieio6PVarVcLr927ZpEIrE5MSoq6saNG2FhYQRBdHV1PfbYY8xqYiT5j7tE9rb9LpvNIalUeuPGDbpfjUYjlUptTrRvasjGw8PDmXQYQRCRkZEdHR3syvYbztlUk0gkt2/fpuPs7OyMiIgY3R0ySZIqlUqhUBAEodVqZ82aRcfpqN8xjo+Tn5ETR48ePXHixO9///sRXx54Ax6Pd/HiRft10AAAxpU/1wEAwCRlNBp1Ol1PTw99KxwYGCgWi5FXAg/H4/GsVquXJi/Ak+3YsSMrK2vUp7/77rv0hlqtpjdsEg1ms9nRueP6LSP74axRdGQ0Guk0bkJCQlVVlTsjc9qpW9qxWq3DLhE4xvFxhBk3AACAiYEH4gBgohkMhpaWlnv37nV3d1MUFRQUJJfLp06diiVIwfMxyy1xHQj4mtjY2IQxEIvFzttft25dYWEhQRAajUapVG7cuJEu37RpU0lJCf0UVXFxcWZmpnuvKyMj4+DBg1arVa/Xl5aWunJKQECAUqk0mUznzp1btmwZXZiSklJaWqpSqcbpX9+GDRs++OADk8nU0tJy4MABm6MjWmuppKREpVJ1dXXt3bt3/fr1ziuPYnwcGXLcAAAAJgZSSwAwQSiK6unpaW5uVqvV9MqmISEhCoUiNjZWKBRyHR2AS+jUkpMJIAAeQiqVsncLCwt1Op1UKp09e/bp06cLCgro8vfee0+j0cTGxsbGxnZ2dr733nt0OT2bxv5Pem1p4sF60uxJN8wuuzw/P7+trS0iImLJkiWrV69mhzRkfYIg6CWExGJxaWnp4cOH6cJt27ZpNJqkpCSJRLJy5cr8/HybwIh/ngHkxJD9FhQUqFQqsVickpKyefNmm9YsFouLD9kRBJGVlZWenj59+nS9Xk/H6cbxcfRzcTRuAAAAEwNrLQHAuDOZTPSzb/S3zX5+flOmTJkyZUpAQADXoQGMTHt7e09PT3h4uP2aNd4Cay35pOeffz4hIWHr1q1cB+KQyWQ6c+bM7t27r127xnUsnmgixwdrLfk2rLUEAJzAWksAMI4MBoNOp2Pevszn88PCwkQi0bDLTwB4JnrW0uRMXgCMzptvvrlv3z4+n5+amnrp0iWuw/E4GB/wGRRFvfTSS1xHAZPdz372s4SEBK6jmIyQWgKAcaHX63U6XX9/P70bFBQUFhYmFApdfGABwDMhtQQwUnv37t27dy/XUXgujA/4kt/+9rfvvPMOVpEHrpSVlSUnJyO1xAmklgDAzXp7e+/fv08vRkOSpEAgEIvFQUFBXMcF4AZILQF4PplM1tHRYVMolUrb29s5iQdgUnnttdcEAgHXUcAkdfnyZa5DmLyQWgIANyNJ0mw283i80NDQsLAwf3/8ngHfgdQSgOdDCgkAAGCC4SMfALiZQCCQy+UCgQDPvoHvQWoJAAAAAMAGUksA4GYkSQqFQq6jABgXSC0BAAAAANjAS5oAYGQsFktXV5f9MhYAkwGdWqIoymq1ch0LAAAAuM1Ypttjqj4AUksAMDJWq/X+/fvd3d1Go5HrWAAmmp+fH337iIlLAAAAXkSpVPL5/ICAgJiYmFWrVnEdDoCvQWoJAEYmICAgLCxMJpMFBARwHQsAB/BMHIDnI0nS7ZMIdu/ezWwfO3aMx+ORJMnn85VKpX3XJEmGhYU1NDTQhZcvX964cePatWvtT2E3CwDjJyMjo6KiwmQyqVSq8+fP21egKGrUjTs6Nzo6etRteqPJdr3AhrWWAGDEIiMjuQ4BgDM8Hs9sNiO1BB5OLpe3traOU+MGgyEkJGScGncLiqLcm1q6detWV1cXs/vKK6+cOXMmJSVFqVRmZGTYTOO1/5D5s5/9rK6uTiwWEwRRW1u7YsUKvV5PH+rq6rpz58706dPdGC0A2DOZTGvXrp3gTof9PTw4OBgYGDgxwUyAyXa9wIZZSwDwTyiK6u3tbWtrG8tXNwA+DLOWwCu0tbWxd+l5NEVFRTExMTazZrKzs2fOnCkQCJYvX15dXc1UPnjwoEgkqq2tPXz4sEgkok/RaDQLFiwQCAQymWzr1q0Gg4HdS2JiYmJi4rCxMfN6hty1j4epo9PptmzZIhKJcnJy6PKBgYHt27fLZDK5XF5eXh4fH8/u6NKlS65cr5P2GSUlJStWrGB2tVptSkoKQRBpaWlz584d9pIHBwfpvBJBEE899VRfXx9zKDk5ubi4eNgWAHxeY2Pjs88+KxaLg4ODk5KSvvzyS/a/6OvXrz/zzDMKhUKhUKSnpzc2NjKH6H+/er3+mWee4fP59nMJ4+Li6N8wzG+bpUuXsivcunXL0VTHzz//fMaMGUKhcOPGjQaDwb6ao3MfeeQRm05t6lRUVCgUiqCgIKFQuHLlym+//ZZ9OR999BH9G3jfvn0CgcDmipwb40g633U0zqO+Xpu+qqqqnnjiifj4+LNnz7p+yeARKAAAiqIoqr+/v729/fbt2zdv3rx586Zer+c6IgBP1NnZ2dra2tfXx3Ugo8Tj8bKysriOYlyEhob6+flxHQU3srKyioqK2CX293gEQeTm5nZ3d3/++ecBAQFMeW9vL0VRRqPx4sWLQqGQqVxQUHDixImwsLBXX331xIkT9Ck//elP//SnPxmNxt7e3s8///zll19mdzF//vz58+e7EvCiRYtqa2vp7dra2sWLFzuPhw5p6dKlZWVl3d3dFy9epAt/8YtfvPTSSx0dHQaD4fjx4+Hh4ez6v/zlL/V6vSvX66h9xhNPPNHY2Gh/IZWVlRqNhl0SHBxM32MHBAR8/vnndCGPx2PXYf90rl279uSTTzocqXHwySefPP300xPZI0wkPz+/S5cucdI1/YKL0d1ANjQ0PPTQQ7/97W/VarXRaPz+++//67/+i/kX3dDQsGDBgjt37tC7d+/eXbRo0Y0bN5jTCYJ46aWXLl++bLVabf7Js+s4j8G+Ql1d3WOPPfa///u/AwMDdXV1dNLZxXOdl1+6dCk1NfUvf/mLwWDo7e3905/+tHDhwqtXrzJnvfrqqydPnoyIiPjFL35x8uTJIa9oSGMfSSfxDzvOo7te5tz//M//fPfdd9VqtdVqXbdunYuXzJaamlpRUTGKE2HskFoCmOwGBgbu379/9+7dmw80NTV1dHQYjUauQwMA90NqyScxqSX7dS6io6PpOuw7fmb75s2bP/nJTyQSiUAgSEpKYsodbUgkEnbjkZGRowv4j3/847Jly+jtZcuWVVVVOY+HDoDOCrFFRUV1dnYO2QVBECaTycXrddQ+IzQ01P7ohQsXWltbHZ1y79495nOXk09r3d3dU6ZMcdTIeEBqybd5aWppzZo1H3/8saOjq1evrqysZJdUVlay/xoTBHH8+HH2rn0jo0gtrVy58vz588zuqVOn3JVa+td//de7d++yS7777jvmtyJBEN3d3fRGT0+PK8Ezxj6STuIfdpxHd73Mucz/BRRFmc1mR1fhBFJLHMIDcQCTlNFo1Gq19+7da25u1mq1JpOJJEmhUBgdHT1t2rTIyEis0g0A4HXUajV9h0c8uL9Xq9VO6q9fv37JkiXXr1/X6XTHjx8ftv2EhAT2fWRHR8fo4lyxYkV/f39NTU1NTc3AwMDy5ctdiUcoFNqUmM1mJ734+9suKjrS9hmU3UPiR44ciYuLi4qKcnTK1KlTTSaTo6Psh2rtGweYbKqrq+mHTB0dXbhwIbskMTHx0qVL7JLnnnvO7VF988037H5/+MMfuqvlK1euTJs2jf3s2Jw5c2pra5kKoaGh9IZIJBpRy2MfSedGN87DXi+N+b+AeLD+AHgRpJYAJhej0djZ2Xnv3r179+51dnYajUY/Pz+RSBQdHf3www/L5XKBQODepU8BAMBjqdXq+fPnh4aGNjQ0HDp0aNj6KSkppaWlKpWKnp5gw8W1lmh79uzJy8vLy8vbs2fPqONZt25dYWEhQRAajUapVG7cuNF5/ZG2z4iLi2tpaWF2T5w48fjjj8+YMYMgCPZ/mklJSXl5eU1NTQRBKJVK5kua4OBg5kPU1atXQ0NDmQFUqVRYwxvAYrE4v/+0z8B6dU42ODjYZhYPRVHsVdhGzTNHcvyuFzwHUksAk4LJZGIySlqt1mg0kiQpEAjkcvn06dOjoqKQUQIA8CVSqZS9y6yuavNncXHxli1bJBJJbm7upk2bCNZaquxltpl2tm3bptFokpKSJBLJypUr8/Pz2b1YLBbXP6IkJydbrVaKon784x8zhUPGw/7TZmnYwsJCnU4nlUpnz559+vTpgoKCUVyvk/YZK1asuHHjBrOblZU1b948+8pKpfLevXsJCQkkSdJvOqfLjx49+qMf/YgkycjIyGeeeeaLL75gsk43btxYuXKli4MG4KsWL178hz/8wdHRpUuXfv311+ySurq65OTk8Y5q/vz5V69eZXYvXrw4xgYHBwfpjbS0tKNHj46xtSG5cSQbGhrGGMwEXC94EHc+XQcAHsZkMul0OpVKdZOlubm5q6uLWYECACYVrLXkk+yX8Qb3amxstFmz3F1efvnlpqam8WjZEay15Nu8dK2l//mf/4mOjr5w4YLVajUYDDdu3CgpKXn++efpow0NDU8++eRXX31lMplMJtNXX301d+5c1xefdlLovEJdXd2cOXMaGxuNRuNXX33185//3FEjjsqZ5fxbWloOHTo0b948uvz777+Pi4t799137969Sz9ScP78+dTUVJvW7DeGNcaRpAPu7+8/derUqlWrnA+sfVSju96RXqMTWGuJQ5i1BODLWltb6ffmEAQRGBgYERHx0EMPxcbGhoWF2a9AAQAAAEOKj48PCwsbj5YlEgkeiANITExUKpUHDhwQi8XR0dGZmZkDAwO//vWv6aOPPvrop59+mp+fLxaLxWLxgQMHjh07NnPmTProkBMt2TMKv/vuO5uZiampqcxR9nRFm6mLixYtysvLS01NDQsLKyoqOnDggE3YTs6lVVRUZGRk+Pn5LVy48Pbt22fOnKHLY2Jivvrqq9u3by9YsEAoFD711FPV1dXl5eWOLsfmisZpJJmAZTLZ2bNnjx075mRg7cd5dNdr05qT2aPg4UjKmx9SBQDnurq69Hq9QCAQCoV8Pp/rcACAe/7+/pmZmWVlZVwH4n5TpkzR6/Xs1ZEnj+effz4hIWHr1q1cBwJe4OjRoydOnPj973/PdSAwLng83sWLF5cuXTrxXVMU5efnR995TnzvE0Cj0Tz88MM9PT1cBwIOpaWl/fSnP12/fj3XgUxGmLYA4MvobyS4jgIAAAAAwIu1tLTs2bMnJyeH60AAPBQeiAPwYp2dnXfv3qWfdwMAAAAAADd6//336eeznnzyyccff/ytt97iOiIAD4VZSwBezGw2m83mvr6+kJAQrmMBmETa29v1en1kZGRoaCjXsQAAAMB42bFjx44dO7iOAsALYNYSgBcLCwuLjo6OiIjgOhCAScdqtZrNZq6jAAAAgEkkLi6OdCAuLo7r6GBSw6wlAA9FUZTBYOjr6xOLxQEBAUPWCQwMDAwMnODAACA8PFwikeA1iwAAADCR7t27x3UIAEPDbTGAZ6EfcOvr6zMYDPQLHAMCArAUN4BHQVIJAAAAAICBm2MA7lEUNTAwQKeTBgcHmXJ/f3+BQBAcHMxhbAAA4GNIkiQIgv72wjmlUpmRkSEUCp944onq6mqbRlxpYcLqj5ST9l0fn9G1D+DbXnjhBXwBA1z561//umrVKq6jmKTwzx6AM0aj0WAwGAyG/v5+q9XKlAcFBQkEAoFAgIfdAABgdORyeWtr65CHKIqisycMg8Ew5OsgMjIyKioq1q5dO2QjI4rHvr5IJOrt7XW9vns5ad9+fNzbvg3n4wDgRei/9jwez88P6/kCN6xWa19fH9dRTFJILQFMKIvFYniAvQYwj8cTCAQhISEhISE8Ho/DCAEAwAe0tbWxd/v6+l555ZWTJ0/OmDHjd7/7HVOu0WhSU1O/+eYbqVT63HPPvf/++3SOKS4urrm5mSCI9PR0uiaTK6msrExLSyP+OXtC52IOHTp04MCBjo4OdkJqyPoSiUSv1zMZHPahIeubTKa33npLqVRSFPXMM8+89957fD7feb+ODNm+o/GhJSYmEgRx5coV5y2PYnycjAOA16H/JhcXFwsEAq5jgUkqLS1t+v9n797Doqr3/YGvNTcuMzDOADMMFw3wVj3tbeItH9m78hZ4KczAZz9mlm3POUXZtkikttvaKV4on+LY8/gAR620TepGTwallmdrYlvz7NpHSQQ0heE2MNyGYe7r98d3u36ruSxmYGC4vF9/8Kz5ru/6fj9ricB85ntJTAx0FGMUUksAQ6G3t9d1vhtN0yEhISSdhAFKAAAweDZt2qTRaPR6fVdXV2FhIVuenZ2dn58/d+5cs9l8+vTp7OzsvXv3UndXinU7qystLc11XA8paWhoqKys/PrrrzMzMy0WC099vV7vacqY2/pvvvlmXFxcVVUVRVHvv//+m2++uWvXLv5+PXHbvqfnw94df5t9tu8pTp7nMKj0ev2ZM2eGuFPw3uzZs8PCwgIdBQCADzAPHGAo3Lp1ix2jFBQUFBoaKpVKg4ODBz7kHgDAJyKR6Omnn96/f3+gA/E/uVxuMBjsdnugAwmAZ599Njk5OSsrKzY2tqGhgXsqJiZGq9UqlcqamhqlUklRVFtbW2RkJPkLMCIiQq/Xs5WjoqJaWlrYl/wLEjmd4pbwn+2zcdez0dHR169fHzduHEVR7e3t948DuMsAACAASURBVN13Hzvdj79fL9v39Hz6zfvnM/SppUOHDr3xxhuTJk0ayk7BexUVFRcuXJg2bVr/LhcKhWfOnHnkkUf8G5U3GIYRCAQGgwGjliBQlixZ8swzz2RkZAQ6kLEIo5YAhoJUKrXb7WSAklgsDnQ4AAAwOmm1WnLAk7DgjutJTk4+derUUETGy2KxkAluPIYs/9LnuKdB7brP5+AX06ZNO378+BB0BP2ArB8AjERYYg1goBwOR0dHB/djXlcqlUqj0cjlcuSVAABg6K1aterdd9+1Wq0NDQ07d+5ky1NTU4uKiurr67m7SQwNsVhcWlpqtVrLy8sXLFjAX3nNmjWFhYUMwzAMs2/fvqefftq/wXh6PsSsWbPIckuDwafnADC60TQdqBH9PP36JSrMVIBRD6klAD9obW3t7Oy0Wq2BDgQAhkhvb69erzcajYEOBMA9lUrFfbl79+76+nqFQpGamvrcc89Rd9/nvPzyyzqdLiUlRalULl68eMeOHaR+WVkZqUDfxTbFvuSWsyVOXz3VpyiqpKQkMzNToVAUFRUVFxfzt//OO+/odLr4+Pj4+Pi2trZ33nmnz349cdu+p+dD2O1278dM+fp8PD0HgNFBo9F4XzmAS7Xw7xo5qO07wTJbMEIhtQQwUAKBIDw8XKlU4uMIgLGjp6enra0NG9zCsNXc3Mx9KZVKDx48aDAYfvzxx1/96ldk+A9FUUKhcPPmzbdu3ero6Pjqq69ycnJIfbIWNRfblNty7ktPp5zaSU9Pt1gsBoPh2LFj3BlAbutLJBKS/amvr9+9ezc7a4ynX0/ctu/p+RBXrly5fPmyV8/d9+fj6TkAjA5Ou1WaTKYNGzao1WqNRnPgwIHJkyf32cJLL700ZcoUqVS6cOHCs2fPksLS0lKJRELTdHh4+Lx589h2PJXzIJl0pz/je3p61q5dK5PJHnzwwatXrzpd4tNIRrftk5KCgoK4uDiJRFJaWkrK2V0jAziAC6B/kFoC8IhhGJPJ1N7e3tDQwC4X6pZKpYqIiBCJsHgZwFhB/r+zy/MDAABAn3Jzcy0Wy9WrV2/evCmVSrnbCHiSl5dXVVXV0dGRk5OzfPlyUrhmzZqlS5dardampqbXXnuto6ODv5wHyaQ7FbK7Rp4+ffrzzz93OutNFpu/fVJCdo0kQxdJOXkgXibKAYYVvBMG+AW73d57l8ViYX65gQs+PQAAAqklAAAYnh599NFAh0Bxd6skfz+T3So//fTTa9eukd0Yn3rqqaeeeoq/nerq6o0bN1ZUVJjN5unTpxsMBlJ++PDhJ598UiwWR0ZGRkVFffHFF/zlvjp8+HBNTY1EIomMjFy/fn1ubi73rPfDGPnl5eVRFJWeno5VNWAUQGoJ4P+nk0wmk9ls5n5EIBAIgoODQ0JCQkJCAhghAAw3SC0BDFtqtdp1bw2VSuU0SRBgVIqMjCwvL09ISBj6rhmGiYiIIMeedqv09fdmRkbGqlWriouLlUpla2sru3LTsmXLLBZLT0+PXq//5JNPFi1a1N7ezlM+EGNh10iAgUNqCcYos9lsusvpF4ZQKAy5KygoKFARAsBwRlJLdrs90IEAgDOkkGAso2laLpcrFIqh79qbCVwrV67Mz8/fvn27Tqf79ttvjx079sknn/DU12q1M2bMCA8Pr6ys/Mtf/sKWkxFJDzzwQHx8/NSpU9mlDz2V+4rsGrl161adTrdr1y6ns2ShpUuXLvWvcX5k18ilS5eeOXMmLy/v3Llzg9ELgN8htQRjSG9vr9FoJOkkp12WxWIxySUFBwfjwwEA6JNQKKQoimEYm82GddYAAADcctqtMj8/Pzs7mxSmpaXt3r2bPeW0oyJJVO3bt2/dunUtLS0PP/zwe++9l5eXR4ZBJSQk/PDDD08++WR9fb1YLC4pKSHXeirn4bbf3bt3v/DCCwqFIikp6eOPP37//fe5w6/sdrtA4O2axW7bZ3eKZBfcYNsnSy9JJJLFixdj10gYQfDXMIwh3d3dnZ2d5Jim6eC7QkJCyLtEAAAv0TQtFArtdjtSSwAAAJ647lb54Ycffvjhh6413Q56Sk9PT09Pd61DRgytX7/eqb6nch5u+yW7Rh48eNBtnStXrgywfeaX225yT5FdI71vH2CYwF/DMKrYbDahUOhpsW2pVOpwOEg6KSgoCGtyA8BAiEQiu92OOXEAAAAAMMYhtQSjx507d8xmc3x8fHBwsNsKUqlUKpUOcVQAMFqJRCKz2YyVvGHE4U7KCFQLAee0tLDTKWrAd8fTPgAAwOjj7RxRgOGPTGrD5p0AMDSwSRwMZ+w+Sq5cUx5Go9Gnxv2SNAkLC/NXfV/jp3hvwS93530jvj4HAPCVWq2mXajV6kDHBTCqILUEwx3DML29vR0dHU1NTQ0NDTw11Wr1xIkT8ScaAAwNsVhMIZ0Nw1VTUxP3ZU9Pz9q1a2Uy2YMPPnj16lW2XKfTzZw5UyqVqtXqrKwsNkdD3np9/fXXKpVqxowZt2/f7l8YpaWlEomEpunw8PB58+ZNnjyZlCuVSoPBwL7H417y0ksvTZkyRSqVLly48OzZs/z1PcXPo6yszLVTT8+HmDVrFtkQyhtu2yclBQUFcXFxEomktLS0z+cAAP7S3NzMuMBWkgD+hdQSDDsOh4Pkkpqbm+/cuVNbW1tfX6/T6bq7u3t6epx2duMSiUT4swwAhgxGLcEIsmnTJo1Go9frT58+/fnnn7Pl2dnZ+fn5FoultrZ2/vz52dnZpJwMumlra6urq9u0adMf/vCH/vW7Zs2apUuXWq3Wpqam1157raOjg5Tr9XrSC8G9JC8vr6qqqqOjIycnZ/ny5fz1PcXPIy0tzXVIkafnQ7gG6Wv7pKShoaGyspJs/8R/XwAAACML1lqCwHM4HCaTyXyX654IQqEwKCiILL+N5BEADBNk1BJSSzCsxMbGsiN8yW/MmJgYrVZ7+PDhmpoaiUQSGRm5fv363NxcUufzzz9nt0CiKCoqKmrv3r3sy0WLFgUFBaWmpq5bt65/8Rw+fPjJJ58Ui8WRkZFRUVFffPEFf/3q6uqNGzdWVFSYzebp06cbDAb++vzx+xSn2+dDXL58uR9tusrLy6MoKj09HaMdAQBglEFqCQLAbrebzWY2neT6B5ZQKCSbuBHk/RsAwLCCUUswDGm1WnLAs4w09yOc5OTkU6dO9dks+W7vh2XLllkslp6eHr1e/8knnyxatKi9vd1tSBKJhKKojIyMVatWFRcXK5XK1tZWTytGsfW9jN8nAdz2m70vAACAkQUT4mCoNTU13bx5U6vVtrW1GQwGklcSiURSqTQiIiImJiYhISExMTEmJiYiIkImkyGvBADDE5mEyzAMsksw/K1aterdd9+1Wq0NDQ07d+5ky1NTU4uKiurr693ON//2228tFkt5efnChQv7129UVNSlS5cEAkF8fPzUqVN7enrYU2KxuLS01Gq1lpeXL1iwgBRqtdoZM2aEh4dXVlZ+8MEH3Kbc1ueP33ueng/h01pLvnJ7XwAAACMLUkvgf/yLBZBUkVgslslkERERsbGxiYmJCQkJMTExSqVSKpX2+6NRAIAhRn5eYW4LDEMqlYr7cvfu3fX19QqFIjU19bnnnqPuTpd7+eWXdTpdSkqKUqlcvHjxjh07uFfFxMQkJSXt2bPnvffeYwvZBae9WXk6ISHhhx9+mDx5Mk3TmZmZJSUl7Cmy5JBCoSgqKiouLiaF+/btW7dunVKpzMnJWbNmDRunp/r88bvlNn5Pz4ew2+3eL4Tktn22xOmrp/sCABgOBmOHgTfffNO1C5qmx40bV1lZSQrPnTu3evXq9PR0mqa5Wx+4Xg7DB97Dgz8xDHP79m2r1ZqYmCgUCt3WGTdunEKhEAiQ1gSAEU8kElmtVoxagmHIafMjqVR68OBBdlkiNlEiFAo3b968efNmt41Mnz69rq7OqdCn1aYvXbpEUdT69etdT6Wnp7tOPUtPT09PT3fbl9v6/PG75TZ+T8+HuHLlygDb5xY6VXB7XwCjhkajaWxsHMoew8LCuru73Z4yGo2hoaGD176v/BLPoGIYxr+pperqatdp0a4/NtevX3/x4kWFQkFRVEVFxaJFi9il99rb22/evJmYmOjHqMAv8PYe/In90WM2mz3VEQqFyCsBwOiA5ZZgtHIaWQMA0D9NTU3clyaTacOGDWq1WqPRHDhwYPLkyaTcarXm5ORMmTJl8uTJr7/+OptvdRr953RcUFAQFxfHHdWiVCoNBgM7EIbtV6fTzZw5UyqVqtXqrKwso9HIbaejo2PdunVhYWF97jLpqX3ysqysjKKosrIymqbj4+PZ8q+//lqlUs2YMeP27dv88RBeTsJ1CsPp5UsvvTRlyhSpVLpw4cKzZ8/y36+nfxfim2++cXrOvrbPKiwsXLRoUZ+3ZjabSV6Joqi5c+dyJ1PPnz9/3759fbYAQw/v8KFvVqvVYDDo9frGxsbbt2+zW8+4pdFoEhIShnkCHgDAL7BJHIxWzF2BDgQARpXc3FyLxXL16tWbN29KpVK9Xk/K33zzzdjY2Kqqqhs3bsTGxrKTnjyN+CPHDQ0NlZWVZFYpKScNuv4Ey87Ozs/Pt1gstbW18+fPZ1MepM6KFStSUlK0Wu1jjz3GH7+n9i9evDhnzpy0tDSKolJTU2fMmEE2xCR12tra6urqNm3a9Ic//IE/HjYqb378MgwzZ86ciooK8rKiouKhhx5iL8zLy6uqquro6MjJyVm+fDn//Xr6dyHKy8urqqq4z9nX9lmnTp269957uSUhISEkIcVNXbkOmGVNnTrV77s3gH8wAL9kNps7Ozt1Op1Wq71161Z1dfWNX6qtrQ10jAAAw0JHR8eNGze0Wm2gA/GBUChcu3ZtoKMYFOHh4QKBINBRBMbatWsLCgoC1bvTuk6ESqVCPMPTJ5988vjjjwc6CvBo4sSJ//jHP/p9uVqtrqmp8WM83iOr6RsMBoZhYmJinP4PxsTEMAwTHR3d1tbmeq1arW5vbyfHer0+OjqaPUX9MpXj0zFLqVRyg4mKiuLW7+7u9v42Pb2DTk9PP3bsGMMwR44cWbVqFbc+ubXu7u6wsLA+4/HJV199tWDBAnK8YMGCU6dOkeMbN24sXbqUrGObkpLi9Hxc79fTvwupb7Va2eP+tc8KDw/3dPb27dtisdipI9eXnZ2dcrncU/tpaWklJSWezsKgwlpLY53dbrdYLGazmf3quscKySJLJJKgoCDyNSChAgAMNyEhISqVCj8VYYxzWtcp4IZbPABjkFarJQdkK1W2nGecL9PXOJ1+bARpsVgkEglFUcnJyTxDXWQyma8tO7VPUdT27dtXrly5ZMmSt99++9ixY27rs7sV8cfjvUWLFr399tvnz5+nKMpkMrG7eWZkZKxataq4uFipVLa2tmo0Gu5VrvfLP/7adZMlX9tn8fwrjx8/nmdfFLvdzq7k2+e3CgQEJsSNUc3NzXV1dTdv3rx582Z9fb1Op+vs7DSZTA6HgySSyPZtGo1mwoQJEydOHD9+fHR0tEKhwA5uAAAsiUQil8uDg4MDHQgAAMAIsHLlyvz8fIqidDpdaWnp6tWrSfmaNWsKCwvJ2Id9+/Y9/fTT7CVisbi0tLSxsfGVV17xpgtS32q1lpeXL1iwgBSmpqYWFRXV19f3Iz/lTfsURU2dOvWhhx5atmzZ7NmzJ02axL3k22+/tVgs5eXlbOqHPx4v11oi3nrrrS1btmzZsuWtt95iC7Va7YwZM8LDwysrKz/44IM+G/H07+KJr+2zJkyYwF1cJSUlZcuWLbW1tRRFlZaWknUGKIoKCQlhJ/pdvnw5PDycfVD19fVYw3t4QmppjDKZTCaTyW63UxQlFoulUqlCoYiOjh4/fnxSUtKECRM0Go1SqZTJZGwmHgAAAAAAwHtOE1Tz8/M7OjpUKtX9999/4sSJ3bt3k/J33nlHp9PFx8fHx8e3tbW988477CUlJSWrVq1atmzZ888/T/1ykwHXr6R+ZmamQqEoKioqLi4mhS+//LJOp0tJSVEqlYsXL96xYwcpZ691Wpabh9v2ic2bN587d27Lli1Ol8TExCQlJe3Zs+e9997jj4ew2+3eD8yZP3++w+FgGObRRx9lC/ft27du3TqlUpmTk7NmzRrK5Vk53a+nfxdPz9nX9lmLFi26fv06+7K0tPT27dvJyck0TWdmZpaUlJDyQ4cOPfzwwzRNR0VFPfHEE59//jmbdbp+/frixYu9fDgwlGgMJxt9ent7W1pahEJhXFycpzpkjiuZ5ob92gAAxg6RSPT000/v378/0IH4n1wuNxgM5FOTsebZZ59NTk7OysoKdCAwAhw6dOjIkSPHjx8PdCDg3qRJk44cOTJt2rT+XR4dHX3hwoWkpCT/RuUNhmEEAoHBYJBKpUPf+3BQUFBw8+bNPXv2cAudpgSOcTdu3Hj//ff37t3b7xZefPHFV1991dPApSVLljzzzDMZGRn9bh/6DTObRiSbzSYQCDylhAQCgcVi4U8YhYWFDU5oAAAAAAAAYws7SIebWmJH8SC7REyePHncuHEDaUGpVGJC3PCE1NJwxzCM1Wq1WCwWi4U9cDgcUVFRnv5bSiSS2NhYTGQDAAAAJ/56hzPS3ynxxE/eCg7w7kb68wEAX7n9L4+fA662bds2kMv//Oc/+ysS8C+kloYXh8NhuYskkshej07VaJrmGfBP03RoaOggRwoAAADDl0ajaWxsdC331/ucgbcTFhbW3d3tl/pGo9HXv3x44mcYxsslV/rXvhNfnwMADDa1Wt3S0uJUqFKpsPskAA8sshMwDMNYLJaenp729vaWlpb6+vpbt27V1tbW1dU1Nze3t7cbDAaLxUImLQcFBYWFhbFbtiUlJUVERAT6DgAAAGCYampqciopKytzXVeVlBQUFMTFxUkkktLSUlJuMpk2bNigVqs1Gs2BAwcmT57M344npaWlEomEpunw8PB58+ax7SiVSoPB4Hap15deemnKlClSqXThwoVnz57lr6/T6WbOnCmVStVqdVZWltFo7DMkt/H39PSsXbtWJpM9+OCDV69edbrEp92afHrOPM8BAAKlubmZcYG8EgA/jFoKGKPRyN15kSUSiSQSiVgsltwlEuGfCQAAAAYkLS3NdTwOKWloaKisrPz6668zMzMtFgtFUbm5uRaL5erVqzKZ7OTJk3q9nr8dT9asWbN06dLPPvvMYrGcOnVq/fr1pFyv13uaMpaXl1dQUGC1Ws+dO7d8+XIyosdT/ezs7Pz8/Llz55rN5tOnT2dnZ/e5Oqzb+Ddt2qTRaPR6fVdXV2FhodMlPg3R8uk58zwHAACAEQQ5i8HS1dVlMpnCw8ODg4PdVhCLxQKBgKSQuF+xXxsAwAjCMIzJZLJareHh4YGOBYCKjY1lP7gi2Y2YmBitVst/VV5eHkVR6enpVquVlHz66afXrl1TKpUURT311FNPPfVU/+I5fPjwk08+KRaLIyMjo6KivvjiC/761dXVGzdurKioMJvN06dPNxgM/PU///zzgwcPsi+joqL6t/HQ4cOHa2pqJBJJZGTk+vXrc3NzuWcvX77cjzZduT5nAACA0QGppf7j/8jOaDR2d3eLxWJPqSWJRBKQbUEBAMC/6uvrKYoKDQ3FIFMIODaLNMCxMDabzS/xLFu2jEz/1+v1n3zyyaJFi9rb212rWSwWsv1IRkbGqlWriouLlUpla2urRqNx2yxbPzk5+dSpU34Jldu4fxv0qWtswwIAACMRBsh4hWEYs9lsMBja29ubm5vZdZF4LpHJZEqlMiQkZMiCBACAoUfTdEhISGhoKKa0wGiycuXK/Px8iqJ0Ol1paenq1av7105UVNSlS5cEAkF8fPzUqVN7enrYU2KxuLS01Gq1lpeXL1iwgBRqtdoZM2aEh4dXVlZ+8MEH3Kbc1k9NTS0qKqqvr3c4HP2LkFi1atW7775rtVobGhp27tzpdNantZZ85fa+AAC4BmM5tjfffNO1C5qmx40bV1lZSQrPnTu3evXq9PR0mqa568S5Xg6Az1edkdW1rXeRY0+f3dlsNk+fUctkMplMNpiRAgDAsBAXFxfoEACcqVQqpxL2bQk5IMlQckyGOHGP8/Pzs7OzSSNpaWm7d+/mb8eThISEH3744cknn6yvrxeLxSUlJeypkpKSzMxMiUSyePHi4uJiUrhv375169a1tLQ8/PDD7733Xl5eHjv8ym39l19+edeuXSkpKe3t7bNnz37kkUdycnL4n4zb+Hfv3v3CCy8oFIqkpKSPP/74/fff5w77stvt3q9X4NNz9nRfAKOGp90qB49/d5McJvyycyVXdXW16xhS15/n69evv3jxokKhoCiqoqJi0aJF7Dzl9vb2mzdvJiYm+jEqGNHG+qgls9nc3d2t1+vZsUg1NTV37txpbGxsbW3t7Ozs7e0leSWhUBgcHEy2aYuOjo6Pj09KSsLcBwAAABiGXDczctrtyKnQ6VgqlX744YctLS0tLS0HDhzgTkxz244nly5dWr9+fV1dHfnoLj09nT2Vnp5usVgMBsOxY8cmTZrEFv78889Go7GsrGzq1KncLtzWFwqFmzdvvnXrVkdHx1dffdVnXslT/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/jOBhEuwRvT7eeEk55z7nOcc3pgn5944O9u49mVGaQkAgAaUlJRUVFS0bdvW29vb0bkAAIAXlrOzs16vr6mpkSSp3gE1NTVqtVqSpJqamrq9SkpLdUVFRW3ZssWiaFJQUPCf//wnJSVFo9HIjX5+fqtXr544caLC5SjMzXbaCjMxD9KnT5/c3NykpCSj0fjBBx/06dPn9OnTDU5kIklSbW3tokWLVq1aZdH1xhtvpKWltWrVStGCXzLcEAcAQAO4IQ4AADwD7u7uQoiqqiprA0wPRWrTps3TmtHPz2/RokV1D+N07tx569at5eXl+fn527dvnz9/fkhIyJ07dyIjI3///fenNbsSdmQyY8YMIURiYqLpbjjTW4Xc3NyEEN9//31ERMTx48crKipKSko2bdrk4eFx8uRJ87NdMMepJQAAGlBZWVlcXNyyZcv27ds7OhcAAPDC6tu375kzZ1JTU4cNG1bvgNTU1BEjRvTt2/fUqVN1e5XfEFdTU1NYWLh8+fKtW7f6+Pj89ddfvr6+tnMzGAxLly5duXKlxe+vKWT3qSWFmZgHqaysbN++vU6nE0K4ubndu3evdevWCicKCQm5evWqu7v7rVu3PDw85PZ9+/aNHTu2Y8eON2/eVJjnS4VTSwAANMB0KJ1TSwAA4F81dOhQIcSmTZusDTB1mYY1hbOzc2ho6C+//DJixIiSkpKlS5c2eImTk9MXX3whhLh48WITZ2+iBjNp06bNpEmTjEaj0WiMjIw01ZUU6t69uxAiNDTUvK4khBg4cKAQ4v79+/bn/UKjtAQAQAO4IQ4AADwDcXFxzs7Ou3bt2rZtW93erVu37t69W61Wx8XFPZXpVCrVjz/+KEnSli1bLl++3OB408+0PQ8PG2owE/kmuEbdDSeEeOedd4QQV65cMd17KMvKyhJCcIDdGkpLAAA0gNISAAB4Bjp27LhixQohxLRp02bNmnXmzJnHjx/rdLrc3NyPP/54+vTpQoiVK1d26NDhac0YGhoaGxur1+vNDy6Fh4cvXbr0yJEjt2/ffvLkSXV1dWFh4dq1a8eNGyeEGDlypDxSpVLVfTp4vY32UZ6JhYEDB5pOLQ0YMKBRM06ePDkoKKiqqmr06NF//PFHZWXlw4cPExMTp06dKoSIjo5u4opeVDxrCQCAhtXU1LRo0cLJia9kAADAv2v58uUJCQkGg8Gi3cnJadmyZfHx8dYuVP6sJXNFRUXBwcHV1dWnT5/u3bu3sP5bckKILl26HD16tF27djZiKm9U2GV3JsonMpeXl/f2229bnFoSQgwaNOjgwYOm53zDAqUlAAAAAACeIxcvXlyzZk1GRsbdu3eNRqOfn9+QIUPmzp0bHh5u4yr7SktCiCVLlnz77bdDhw5NS0sTQvz9998pKSlZWVkXL14sLi42Go1eXl7h4eHjx4+fOXOmq6ur7ZhPsbTUxEyUT2Thzp07y5cvP3ToUFFRkZubW9euXadMmTJr1izTSXbURWkJAAAAAAAAduJgPwAAAAAAAOxEaQkAAAAAAAB2orQEAAAAAAAAO1FaAgAAAAAAgJ0oLQEAAAAAAMBOlJYAAAAAAABgJ8nRCQAA0AzU1NRoNBonJycPDw9H5wIAAAA8Rzi1BABAw2pra0tLS8vLyx2dCAAAAPB8obQEAEDDJElyd3dv3bq1oxMBAAAvLJVKZfrXGiGEwWDYvHnzgAEDfH191Wp1p06dpk+fnp2dLUcYPXp0vcFHjx5tiiA7cuTImDFjfHx8nJ2d27VrN3HixPT09Kbkn5KS0qFDB/NsHaWJszdqGyEoLQEAoIQkSe3atfPy8nJ0IgAA4AVnNFP37dy5c3fv3r1q1aorV65otdrU1NS+fft+9tln8uXnzp3Lz8+3iJmfn3/u3DnzloSEhPj4+Li4uMuXL1dVVe3Zs6e2tnbYsGFNyXzhwoW//vqrnOoz82/UehRu40uiwR1WPeM/OQAAAAAAqEulsvyEXrelVatWN2/etPZ1l0ql+vnnnzMzM3fu3GneHhkZOWTIkE8++cQULTU1dfHixTk5OW5ububDvvnmm4SEBLvzb9GihV6vf/aHeuruUtMDKtnGl0eDO8ypJQAAAAAAmof27dv/+eefNgbMnDkzLy/vn3/+kVsKCgrOnj07c+ZMueWnn35KSEiwqCsJIeS60oYNG4KDg9VqdXBw8KZNm+QBKpUqKSmpZ8+erq6uvr6+MTExpaWlcpfBYHBycpJv65Ov2rhxY0BAgFqtDgkJ2bBhg9xVtwhl3pWUlNSvX79WrVq1aNHC1Hj37t05c+a4u7sHBAQsXry4urpa1LmLsG5kO9aicButpdRgcGtX2dgrIcTevXt79Ojh4uLSqVOnxMREi4X06dPnlVdeadWq1bBhwy5cuHDo0KGIiIiWLVt6e3tHR0ebz247Tt2c691hS0YAAAAAAOBodT+h121JT0/39fWNiIj48ssvt27deuPGjbrjExMTp02bJjdOnTp18+bN5tG8vb2Li4utpZGcnOzn55eRkVFVVZWRkeHn57d37145flhYWEZGhkajuXv3bnR0dFRUVL3Zyq/37dvXqVOnzMxMjUaTmZnp7+8vd9lYrxAiNDQ0IyPj0aNHcq+/v//mzZs1Gk1hYeF77723ZMmSBuPYtxaF22g7JRsbZe0qG3t14sQJDw+PpKSkysrKU6dOBQYGHjx4UJ6rc+fO6enpGo3m3r1706ZN8/T0DAsLS0tLk1uio6OVxLG9ITZQWgIAAAAAwPGUlJaMRuOjR48OHDiQkJAwceJET0/P4cOH37t3z3y8Xq8PCwsrLCw0Go2FhYVhYWF6vd48miRJNTU11tJ488039+zZI79NTk6OiIiQ4589e1buevDggZeXV73Zyq8HDBiwb98+uX3v3r0KS0tZWVnWMjQajWVlZYGBgQ3GsW8tCrfRdko2NsraVTb2aujQobt27ZK7Tp482bt3b3mu3Nxcuau4uFgIkZeXZ94iz247ju0NsYFnLQEAAAAA4HhKnrVkobq6ev78+Q8ePEhJSTEfn5SUdOLEibVr186ePXvgwIFRUVHmvT4+PpcuXfL29q43pqen57Vr19q2bWt6W15eHhQUVFZWZopQW1vr5PT/j9Yxz7De156entevX/fw8JCjeXp6mrpsrFelUul0OldXV7mrrKzsq6++OnDgQFFR0ZMnT8T/Hu1kO459a1G4jbZTshbcxlU29srHx+fhw4fma7Q9l7XZGxvH2l/KAs9aAgAAAACgWXJ1dV25cuXRo0ct2t9///3Tp0/n5eXl5uZOnjzZordfv35ZWVn2zWheeni6DAaD+VvzupIQYurUqXq9/vDhwxUVFUajUavV1tbWNnHGBtdiexttp2QtuH0L0Wq1Go3G/KCQqR5kbS5rszc2jkKUlgAAAAAAaB7mzZtnUYkoKipyd3e3GObk5BQfHz98+PD4+Pi69YI5c+YsW7ZMp9NZtC9btkwI0aVLF/PC0/Hjx8PCwuxOuGvXridOnJDfZmdny6+9vLxMd2+Z5Ofn24iTlZW1cuXK0NBQU8kpIyND7pIkyVp1polrsb2NNlKybyE29qpXr155eXnKM7fGvjg2dvj/2L5fDgAAyAwGQ21traOzAAAAL6a6n9DrbenRo8eePXsqKioqKyszMjJef/31FStWWBtvLVp8fHyvXr32799fUVGh0+lycnLGjRtnGpCcnNyxY8djx45pNJpjx4517NjR/NHXNmLW+3rfvn0BAQFZWVlarTYrKysgIEDuioqKio6Ovnv3rlarPXr0qKnoY22it956Kz4+vrS0tLy8fOfOnb6+vvKYwMDAw4cPm/8nTe6yby0Kt9FGSjaC27jKxl6lp6f37t37+PHjGo1Gq9Wmp6ePGjWqwbnqttgXp+4OW4601gEAAMxptdrLly/fvHnT0YkAAIAXk5IaQXZ29ocffujv7y9Jkru7e//+/U0/W2ZtvI1oBw8eHDlypJeXlyRJvr6+EyZMSE9PN3WtW7cuKChIkqSgoKCNGzcqzNDa6/Xr1/v7+zs7OwcHB69evVqtVpvaHz58GBMT4+Pjo1aru3fvvn37dhulmcLCwjFjxrRp08bFxaVbt25btmyRx/z2228BAQEtWrSo93I71qJwG22kZCO4jats7JXRaMzMzBw8eHDLli3d3NwGDx4s/7EaVVqyL07dHbbAY7wBAFDkyZMnt27dkiTJ9A0SAAAAGisnJyc2NvbSpUuOTqQZaEZ7xbOWAABQxPRFTdMfGAkAAPBSiYmJuXDhwuPHj0+dOhUXFxcbG+vojJ5fzXSvJEcnAABA8yCfATYYDP/eb6MAAAC8YIYOHRoVFXX9+nV/f/+PPvpo/vz5js7o+dVM94ob4gAAUOratWsGg8Hf31+tVjs6FwAAAOC5wJeuAAAoxT1xAAAAgAVKSwAAKEVpCQAAALBAaQkAAKUoLQEAAAAWKC0BAKCUJEmC0hIAAABghtISAABKcWoJAAA8Mzdv3rx9+7bptVarvXHjhun1kydPSktLhRCPHj26c+fOnTt37t+/b36h+eDS0tKCggLzXqPReO3atWvXrtUdDNhHcnQCAAA0G5SWAADAs7F3797z58+XlZUFBARMmjRpwYIF3bp1c3FxGTt27HfffVdSUpKSknLp0qXDhw/rdLozZ86kpqaaLrx37548eNCgQcuXL+/fv//q1avXr19vGnD+/Pm0tLTi4mJJkubOnSsPXrhwoeOWi+ZNZTQaHZ0DAADNg0ajuX//vpubm5+fn6NzAQAAL76qqqrZs2f3798/PDx88ODBEyZMSE5OFkKMHz8+JSXFNGbbtm2SJEVFRZnerlmzRh48Y8aMq1evTpky5dNPP92xY4cc1mAw3Lp16+uvv+7Vq5dFZMAO3BAHAIBSnFoCAADPjNFoXLx48aJFi0pKSnx8fKwN27Nnz7vvvnv9+vXc3FydTmc+uGfPnjk5OfPmzRs5cqQ8wHTJkiVLRo0aZTsyoBClJQAAlKK0BAAAnpnPP/88MjKye/fur732WlFRkRBCpVJZjLl69aqfn5+rq2tRUVFBQUF1dbX54MTExAULFmzfvj05OVkeIISYOHHijh07tm3bZiMyoBw3xAEAoJRery8sLBRChISEODoXAADwItu4ceO6desiIiJCQkJiYmLi4uJeffXVbt26jR8/PiEh4eDBg7NmzVqyZEl8fHxkZGSPHj3kC8vKyuTB4eHhq1atCg0NffTo0Q8//GAasH///uzs7PLy8qCgoBkzZsiDY2NjHbRWNHuUlgAAUMpoNF69elUIERgYaDrBBAAA8AwYjcbq6mo3N7fGDtbr9Tqdzt3d3XyARqNRq9UuLi6NjQzUi1+IAwBAKZVK5eTkZDAYamtrKS0BAIBnRqVSKa/+mA+WJMmiriSEMG/h1UjwAAAAgklEQVRpVGSgXjxrCQCARpAkSfC4JQAAAOB/KC0BANAIPMkbAAAAMEdpCQCARjCVlvR6vaMTAQAAAJ4LlJYAAGgESZKcnZ35gV4AAADAhF+IAwAAAAAAgJ04tQQAAAAAAAA7UVoCAAAAAACAnSgtAQAAAAAAwE6UlgAAAAAAAGCn/wJp4Rtall8BmQAAAABJRU5ErkJggg==</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/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">IyAtLQojIE9UT0JPIGlzIGEgd2ViLWJhc2VkIHRpY2tldGluZyBzeXN0ZW0gZm9yIHNlcnZpY2Ugb3JnYW5pc2F0aW9ucy4KIyAtLQojIENvcHlyaWdodCAoQykgMjAwMS0yMDIwIE9UUlMgQUcsIGh0dHBzOi8vb3Rycy5jb20vCiMgQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwojIC0tCiMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKIyB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZQojIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCiMgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MKIyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQojIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiBJZiBub3QsIHNlZSA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgojIC0tCgp1c2UgdjUuMjQ7CnVzZSBzdHJpY3Q7CnVzZSB3YXJuaW5nczsKdXNlIHV0Zjg7CgojIGNvcmUgbW9kdWxlcwoKIyBDUEFOIG1vZHVsZXMKdXNlIFRlc3QyOjpWMDsKdXNlIExpc3Q6OkFsbFV0aWxzIHF3KG1heCBtaW4gdHJ1ZSk7CgojIE9UT0JPIG1vZHVsZXMKdXNlIEtlcm5lbDo6U3lzdGVtOjpVbml0VGVzdDo6UmVnaXN0ZXJPTTsgICAgIyBTZXQgdXAgJEtlcm5lbDo6T00KCiMgU2FuaXR5IGNoZWNrIHdoZXRoZXIgSW1wb3J0RXhwb3J0IGlzIGF2YWlsYWJsZS4KIyBUaGlzIHNob3VsZCBzdWNjZWVkIHNpbmNlIEltcG9ydEV4cG9ydCBoYXMgYmVlbiBpbnRlZ3JhdGVkIGludG8gT1RPQk8gY29yZQp7CiAgICAjIGdldCBJbXBvcnRFeHBvcnQgbW9kdWxlIGRpcmVjdG9yeQogICAgbXkgJEltcG9ydEV4cG9ydE1vZHVsZSA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6Q29uZmlnJyktPkdldCgnSG9tZScpIC4gJy9LZXJuZWwvU3lzdGVtL0ltcG9ydEV4cG9ydC5wbSc7CiAgICBvayggLWYgJEltcG9ydEV4cG9ydE1vZHVsZSwgJ0ltcG9ydEV4cG9ydC5wbSBleGlzdHMnICk7Cn0KCiMgZ2V0IG5lZWRlZCBvYmplY3RzCm15ICRHZW5lcmFsQ2F0YWxvZ09iamVjdCA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpHZW5lcmFsQ2F0YWxvZycpOwpteSAkSW1wb3J0RXhwb3J0T2JqZWN0ICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6SW1wb3J0RXhwb3J0Jyk7Cm15ICRPYmplY3RCYWNrZW5kT2JqZWN0ICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJbXBvcnRFeHBvcnQ6Ok9iamVjdEJhY2tlbmQ6OklUU01Db25maWdJdGVtJyk7Cm15ICRDb25maWdJdGVtT2JqZWN0ICAgICA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbScpOwpteSAkQ29uZmlnT2JqZWN0ICAgICAgICAgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OkNvbmZpZycpOwoKIyBnZXQgaGVscGVyIG9iamVjdAokS2VybmVsOjpPTS0+T2JqZWN0UGFyYW1BZGQoCiAgICAnS2VybmVsOjpTeXN0ZW06OlVuaXRUZXN0OjpIZWxwZXInID0+IHsKICAgICAgICBSZXN0b3JlRGF0YWJhc2UgPT4gMSwKICAgIH0sCik7Cm15ICRIZWxwZXIgPSAkS2VybmVsOjpPTS0+R2V0KCdLZXJuZWw6OlN5c3RlbTo6VW5pdFRlc3Q6OkhlbHBlcicpOwoKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIwojIG1ha2UgcHJlcGFyYXRpb25zCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMKCiMgZGVmaW5lIG5lZWRlZCB2YXJpYWJsZQpteSAkUmFuZG9tSUQgICAgID0gJEhlbHBlci0+R2V0UmFuZG9tSUQ7Cm15ICRUZXN0SURTdWZmaXggPSAiVW5pdFRlc3QkUmFuZG9tSUQiOwpkaWFnICJUZXN0SURTdWZmaXg6ICckVGVzdElEU3VmZml4JyI7CgojIGNyZWF0ZSB0ZXN0IHVzZXIKbXkgKCB1bmRlZiwgJFRlc3RVc2VySUQgKSA9ICRIZWxwZXItPlRlc3RVc2VyQ3JlYXRlKAogICAgR3JvdXBzID0+IFsgJ3VzZXJzJywgJ2l0c20tY29uZmlnaXRlbScgXSwKKTsKCl9Mb2FkUmVhZHlUb0ltcG9ydENsYXNzZXMoKTsKCiMgZ2V0IHRoZSBjb25maWcgaXRlbSBjbGFzc2VzIGFzIG5hbWUgMiBpZCBsaXN0Cm15ICRDSUNsYXNzTGlzdFJlZiA9ICRHZW5lcmFsQ2F0YWxvZ09iamVjdC0+SXRlbUxpc3QoCiAgICBDbGFzcyA9PiAnSVRTTTo6Q29uZmlnSXRlbTo6Q2xhc3MnLAopOwpteSAlQ0lDbGFzc05hbWUySUQgPSByZXZlcnNlICRDSUNsYXNzTGlzdFJlZi0+JSo7CgojIGFkZCBJbXBvcnRFeHBvcnQgdGVtcGxhdGUKbXkgJFRlbXBsYXRlSUQgPSAkSW1wb3J0RXhwb3J0T2JqZWN0LT5UZW1wbGF0ZUFkZCgKICAgIE9iamVjdCAgPT4gJ0lUU01Db25maWdJdGVtJywKICAgIEZvcm1hdCAgPT4gJ0NTVicsCiAgICBOYW1lICAgID0+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+IHsKICAgICAgICAgICAgICAgIE5hbWUgICAgICAgICAgICAgICAgICAgICAgICAgPT4gJ1Rlc3RTdWJzaWRpYXJ5JywKICAgICAgICAgICAgICAgIERlcGxTdGF0ZSAgICAgICAgICAgICAgICAgICAgPT4gJ1Byb2R1Y3Rpb24nLAogICAgICAgICAgICAgICAgSW5jaVN0YXRlICAgICAgICAgICAgICAgICAgICA9PiAnT3BlcmF0aW9uYWwnLAogICAgICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Mb2NhdGlvbi1DaXR5JyA9PiAnSGFtYnVyZycsCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgfSwKKTsKCiMgcnVuIGdlbmVyYWwgSW1wb3J0RGF0YVRlc3RzIHRlc3RzCm15ICRJbXBvcnRUZXN0Q291bnQgPSAxOwpmb3IgbXkgJFRlc3QgKEBJbXBvcnREYXRhVGVzdHMpIHsKCiAgICBzdWJ0ZXN0ICJJbXBvcnREYXRhOiAkVGVzdC0+e05hbWV9IiA9PiBzdWIgewoKICAgICAgICAjIGNoZWNrIFNvdXJjZUltcG9ydERhdGEgYXR0cmlidXRlCiAgICAgICAgaWYgKCAhJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfSB8fCByZWYgJFRlc3QtPntTb3VyY2VJbXBvcnREYXRhfSBuZSAnSEFTSCcgKSB7CgogICAgICAgICAgICBmYWlsKCJTb3VyY2VJbXBvcnREYXRhIG5vdCBmb3VuZCBmb3IgdGhpcyB0ZXN0LiIpOwoKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIG9iamVjdCBkYXRhCiAgICAgICAgaWYgKAogICAgICAgICAgICAkVGVzdC0+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+e1N1Y2Nlc3N9LCAiQ2xhc3NlcyBoYXZlIGJlZW4gaW1wb3J0ZWQiICk7CgogICAgcmV0dXJuOwp9Cgpkb25lX3Rlc3Rpbmc7Cg==</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+VHJ1ZSgKICAgICAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoQ2xhc3NJRCIsICdjc3MnICksCiAgICAgICAgICAgICJDbGFzcyBzZWxlY3QgYm94IC0gZm91bmQiLAogICAgICAgICk7CgogICAgICAgICMgQmUgc3VyZSBtb2Rlcm5pemVkIGZpZWxkIGhhcyBsb2FkZWQuCiAgICAgICAgc2xlZXAgMTsKCiAgICAgICAgIyBTZWxlY3QgJ0NvbXB1dGVyJyBjbGFzcy4KICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAiXCQoJyNTZWFyY2hDbGFzc0lEJykudmFsKCckQ29uZmlnSXRlbUNsYXNzSURzWzBdJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiCiAgICAgICAgKTsKCiAgICAgICAgIyBCZSBzdXJlIGFsbCBmaWVsZHMgYXJlIGxvYWRlZC4KICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gJ3JldHVybiB0eXBlb2YoJCkgPT09ICJmdW5jdGlvbiIgJiYgJCgiI1NlYXJjaEZvcm1TdWJtaXQiKS5sZW5ndGg7JywKICAgICAgICApOwoKICAgICAgICAjIENoZWNrIENvbmZpZ0l0ZW0gc2VhcmNoIHBhZ2UuCiAgICAgICAgZm9yIG15ICRJRCAoCiAgICAgICAgICAgIHF3KFNlYXJjaENsYXNzSUQgU2VhcmNoUHJvZmlsZSBTZWFyY2hQcm9maWxlTmV3IEF0dHJpYnV0ZSBQcmV2aW91c1ZlcnNpb25TZWFyY2ggUmVzdWx0Rm9ybSBTZWFyY2hGb3JtU3VibWl0KQogICAgICAgICAgICApCiAgICAgICAgewogICAgICAgICAgICBzbGVlcCAxOwogICAgICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjJElEJykubGVuZ3RoIiApOwogICAgICAgICAgICAkU2VsZi0+VHJ1ZSgKICAgICAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjJElEJykubGVuZ3RoOyIpLAogICAgICAgICAgICAgICAgIkVsZW1lbnQgaXMgZm91bmQgLSAkSUQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBDaGVjayBpZiBJVFNNQ2hhbmdlIFNlYXJjaCBmb3JtIGNvbnRhaW4gRXhjZWwgb3V0cHV0IG9wdGlvbiwgc2VlIGJ1ZyMxMjc2OS4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoCiAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjUmVzdWx0Rm9ybSBvcHRpb246Y29udGFpbnMoXCJFeGNlbFwiKScpLmxlbmd0aCIKICAgICAgICAgICAgKSwKICAgICAgICAgICAgJzEnLAogICAgICAgICAgICAnSVRTTUNvbmZpZ0l0ZW0gU2VhcmNoIGNvbnRhaW4gRXhjZWwgb3V0cHV0JywKICAgICAgICApOwoKICAgICAgICAjIHNldCB0aGUgZGVmYXVsdCBzb3J0IGJ5IG51bWJlciBkZXNjCiAgICAgICAgJEhlbHBlci0+Q29uZmlnU2V0dGluZ0NoYW5nZSgKICAgICAgICAgICAgVmFsaWQgPT4gMSwKICAgICAgICAgICAgS2V5ICAgPT4gJ0lUU01Db25maWdJdGVtOjpGcm9udGVuZDo6QWdlbnRJVFNNQ29uZmlnSXRlbVNlYXJjaCMjI1NvcnRCeTo6RGVmYXVsdCcsCiAgICAgICAgICAgIFZhbHVlID0+ICdOdW1iZXInLAogICAgICAgICk7CgogICAgICAgICMgU2VhcmNoIENvbmZpZ0l0ZW1zIGJ5IHRlc3QgQ29uZmlnSXRlbSBudW1iZXIgYW5kIG5hbWVzLgogICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoIlwkKCcjQXR0cmlidXRlJykudmFsKCdOYW1lJykudHJpZ2dlcigncmVkcmF3LklucHV0RmllbGQnKS50cmlnZ2VyKCdjaGFuZ2UnKTsiKTsKICAgICAgICAkU2VsZW5pdW0tPldhaXRGb3IoCiAgICAgICAgICAgIEphdmFTY3JpcHQgPT4gInJldHVybiB0eXBlb2YoXCQpID09PSAnZnVuY3Rpb24nICYmIFwkKCcjU2VhcmNoSW5zZXJ0IGlucHV0W25hbWU9XCJOYW1lXCJdJykubGVuZ3RoIgogICAgICAgICk7CgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCIvL2lucHV0W1xAbmFtZT0nTnVtYmVyJ10iKS0+c2VuZF9rZXlzKCcqJyk7CiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoIi8vaW5wdXRbXEBuYW1lPSdOYW1lJ10iKS0+c2VuZF9rZXlzKCAnKicgLiAkUmFuZG9tSUQgKTsKCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIjU2VhcmNoRm9ybVN1Ym1pdCIsICdjc3MnICktPmNsaWNrKCk7CiAgICAgICAgJFNlbGVuaXVtLT5XYWl0Rm9yKAogICAgICAgICAgICBKYXZhU2NyaXB0ID0+CiAgICAgICAgICAgICAgICAicmV0dXJuIHR5cGVvZihcJCkgPT09ICdmdW5jdGlvbicgJiYgIVwkKCdEaWFsb2cuTW9kYWwnKS5sZW5ndGggJiYgXCQoJyNPdmVydmlld0JvZHkgLlRhYmxlU21hbGwnKS5sZW5ndGgiCiAgICAgICAgKTsKCiAgICAgICAgIyBDaGVjayBmb3IgZXhwZWN0ZWQgcmVzdWx0LgogICAgICAgIGZvciBteSAkQ2hlY2tDb25maWdJdGVtIChAQ29uZmlnSXRlbU51bWJlcnMpIHsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KAogICAgICAgICAgICAgICAgICAgICJyZXR1cm4gXCQoJyNPdmVydmlld0JvZHkgLlRhYmxlU21hbGwgdGQ6Y29udGFpbnMoJENoZWNrQ29uZmlnSXRlbSknKS5sZW5ndGgiCiAgICAgICAgICAgICAgICApLAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW0gJENoZWNrQ29uZmlnSXRlbSBudW1iZXIgaXMgZm91bmQiLAogICAgICAgICAgICApOwogICAgICAgIH0KCiAgICAgICAgIyBWZXJpZnkgc29ydGluZyBpbiB0YWJsZSwgYnkgZGVmYXVsdCBzb3J0aW5nIGlzIGRvbmUgYnkgQ29uZmlnSXRlbU51bWJlciAtIHNvcnQgZGVzY2VuZGluZy4KICAgICAgICAjIExvd2VyIElEIHdpbGwgb24gdGhlIGJvdHRvbiBvZiB0YWJsZS4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMCknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzFdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzFdIGlzIG9uIHRvcCBvZiB0YWJsZSBzb3J0IGJ5IE51bWJlciBhc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDEpJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1swXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1swXSBpcyBvbiBib3R0b20gb2YgdGFibGUgc29ydCBieSBOdW1iZXIgYXNjZW5kaW5nIgogICAgICAgICk7CgogICAgICAgICMgQ2xpY2sgdG8gc29ydCBieSBOYW1lLgogICAgICAgICRTZWxlbml1bS0+ZmluZF9lbGVtZW50KCAiLk5hbWUiLCAnY3NzJyApLT5WZXJpZmllZENsaWNrKCk7CgogICAgICAgICMgQ2hlY2sgZm9yIGV4cGVjdGVkIHJlc3VsdC4KICAgICAgICBmb3IgbXkgJENoZWNrQ29uZmlnSXRlbSAoQENvbmZpZ0l0ZW1OdW1iZXJzKSB7CiAgICAgICAgICAgICRTZWxmLT5UcnVlKAogICAgICAgICAgICAgICAgJFNlbGVuaXVtLT5leGVjdXRlX3NjcmlwdCgKICAgICAgICAgICAgICAgICAgICAicmV0dXJuIFwkKCcjT3ZlcnZpZXdCb2R5IC5UYWJsZVNtYWxsIHRkOmNvbnRhaW5zKCRDaGVja0NvbmZpZ0l0ZW0pJykubGVuZ3RoIgogICAgICAgICAgICAgICAgKSwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtICRDaGVja0NvbmZpZ0l0ZW0gbnVtYmVyIGlzIGZvdW5kIiwKICAgICAgICAgICAgKTsKICAgICAgICB9CgogICAgICAgICMgU29ydCBpcyBieSBOYW1lIGRlc2NlbmRpbmcuCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDApJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1sxXSBpcyBvbiB0b3Agb2YgdGFibGUgc29ydCBieSBOYW1lIGRlc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDEpJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1swXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1swXSBpcyBvbiBib3R0b20gb2YgdGFibGUgc29ydCBieSBOYW1lIGRlc2NlbmRpbmciCiAgICAgICAgKTsKCiAgICAgICAgIyBDbGljayB0byBzb3J0IGJ5IE5hbWUgYWdhaW4uCiAgICAgICAgJFNlbGVuaXVtLT5maW5kX2VsZW1lbnQoICIuTmFtZSIsICdjc3MnICktPlZlcmlmaWVkQ2xpY2soKTsKCiAgICAgICAgIyBWZXJpZnkgb3JkZXIgaXMgY2hhbmdlZCwgc29ydCBieSBOYW1lIGFzY2VuZGluZy4KICAgICAgICAkU2VsZi0+SXMoCiAgICAgICAgICAgICRTZWxlbml1bS0+ZXhlY3V0ZV9zY3JpcHQoInJldHVybiBcJCgndGJvZHkgdHI6ZXEoMCknKS5hdHRyKCdpZCcpIiksCiAgICAgICAgICAgICdDb25maWdJdGVtSURfJyAuICRDb25maWdJdGVtSURzWzBdLAogICAgICAgICAgICAiQ29uZmlnSXRlbUlEICRDb25maWdJdGVtSURzWzBdIGlzIG9uIHRvcCBvZiB0YWJsZSBzb3J0IGJ5IE5hbWUgYXNjZW5kaW5nIgogICAgICAgICk7CiAgICAgICAgJFNlbGYtPklzKAogICAgICAgICAgICAkU2VsZW5pdW0tPmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gXCQoJ3Rib2R5IHRyOmVxKDEpJykuYXR0cignaWQnKSIpLAogICAgICAgICAgICAnQ29uZmlnSXRlbUlEXycgLiAkQ29uZmlnSXRlbUlEc1sxXSwKICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEc1sxXSBpcyBvbiBib3R0b20gb2YgdGFibGUgc29ydCBieSBOYW1lIGFzY2VuZGluZyIKICAgICAgICApOwoKICAgICAgICAjIENyZWF0ZSBDb25maWdJdGVtIG51bWJlcnMgYW5kIGFkZCB0aGUgbmV3IENvbmZpZ0l0ZW1zLgogICAgICAgIG15ICVEeW5hbWljRmllbGQxID0gKAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0NvbXB1dGVyLU5JQycgPT4gWwogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICdDb21wdXRlci1OSUNTdWJQcmltYXJ5QXR0cmlidXRlJyA9PiAnVGVzdCBuZXR3b3JrIGFkYXB0ZXInLAogICAgICAgICAgICAgICAgICAgICdDb21wdXRlci1OSUNJUEFkZHJlc3MnICAgICAgICAgICA9PiBbCiAgICAgICAgICAgICAgICAgICAgICAgICcxNzIuMC4wLjAnCiAgICAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAgICAnQ29tcHV0ZXItTklDSVBvdmVyREhDUCcgPT4gWwogICAgICAgICAgICAgICAgICAgICAgICAzMgogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgXSwKICAgICAgICAgICAgJ0R5bmFtaWNGaWVsZF9Db21wdXRlci1XYXJyYW50eUV4cGlyYXRpb25EYXRlJyA9PiAnMjAxNy0xMC0xMCAwMDowMDowMCcKICAgICAgICApOwogICAgICAgIG15ICVEeW5hbWljRmllbGQyID0gKAogICAgICAgICAgICAnRHluYW1pY0ZpZWxkX0NvbXB1dGVyLVdhcnJhbnR5RXhwaXJhdGlvbkRhdGUnID0+ICcyMDE3LTExLTExIDAwOjAwOjAwJwogICAgICAgICk7CgogICAgICAgIEBDb25maWdJdGVtTnVtYmVycyA9ICgpOwogICAgICAgICRDb3VudCAgICAgICAgICAgICA9IDE7CiAgICAgICAgZm9yICggMSAuLiAzNSApIHsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1OdW1iZXIgPSAkQ29uZmlnSXRlbU9iamVjdC0+Q29uZmlnSXRlbU51bWJlckNyZWF0ZSgKICAgICAgICAgICAgICAgIFR5cGUgICAgPT4gJ0tlcm5lbDo6U3lzdGVtOjpJVFNNQ29uZmlnSXRlbTo6TnVtYmVyOjpBdXRvSW5jcmVtZW50JywKICAgICAgICAgICAgICAgIENsYXNzSUQgPT4gJENvbmZpZ0l0ZW1DbGFzc0lEc1swXSwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbU51bWJlciwKICAgICAgICAgICAgICAgICJDb25maWdJdGVtICRDb25maWdJdGVtTnVtYmVyIG51bWJlciBpcyBjcmVhdGVkIgogICAgICAgICAgICApOwogICAgICAgICAgICBwdXNoIEBDb25maWdJdGVtTnVtYmVycywgJENvbmZpZ0l0ZW1OdW1iZXI7CiAgICAgICAgICAgIG15ICVEeW5hbWljRmllbGQgPSAoICRDb3VudCA8PSAzMCApID8gJUR5bmFtaWNGaWVsZDEgOiAlRHluYW1pY0ZpZWxkMjsKICAgICAgICAgICAgbXkgJENvbmZpZ0l0ZW1JRCA9ICRDb25maWdJdGVtT2JqZWN0LT5Db25maWdJdGVtQWRkKAogICAgICAgICAgICAgICAgTnVtYmVyICAgICAgPT4gJENvbmZpZ0l0ZW1OdW1iZXIsCiAgICAgICAgICAgICAgICBDbGFzc0lEICAgICA9PiAkQ29uZmlnSXRlbUNsYXNzSURzWzBdLAogICAgICAgICAgICAgICAgTmFtZSAgICAgICAgPT4gJENvdW50IC4gJFJhbmRvbUlELAogICAgICAgICAgICAgICAgRGVwbFN0YXRlSUQgPT4gJFByb2R1Y3Rpb25EZXBsU3RhdGVJRCwKICAgICAgICAgICAgICAgIEluY2lTdGF0ZUlEID0+ICRJbmNpU3RhdGVJRC0+e0l0ZW1JRH0sCiAgICAgICAgICAgICAgICBVc2VySUQgICAgICA9PiAxLAogICAgICAgICAgICAgICAgJUR5bmFtaWNGaWVsZCwKICAgICAgICAgICAgKTsKICAgICAgICAgICAgJFNlbGYtPlRydWUoCiAgICAgICAgICAgICAgICAkQ29uZmlnSXRlbUlELAogICAgICAgICAgICAgICAgIkNvbmZpZ0l0ZW1JRCAkQ29uZmlnSXRlbUlEIGlzIGNyZWF0ZWQiCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHB1c2ggQENvbmZpZ0l0ZW1JRHMsICRDb25maWdJdGVtSUQ7CiAgICAgICAgICAgICRDb3VudCsrOwogICAgICAgIH0KCiAgICAgICAgIyBzZXQgdGhlIGR5bmFtaWMgZmllbGRzIGFzIHNlYXJjaGFibGUKICAgICAgICBteSAlU2VhcmNoYWJsZUZpZWxkc1N5c0NvbmZpZyA9ICRLZXJuZWw6Ok9NLT5HZXQoJ0tlcm5lbDo6U3lzdGVtOjpTeXNDb25maWcnKS0+U2V0dGluZ0dldCgKICAgICAgICAgICAgTmFtZSA9PiAnSVRTTUNvbmZpZ0l0ZW06OkZyb250ZW5kOjpBZ2VudElUU01Db25maWdJdGVtU2VhcmNoIyMjRHluYW1pY0ZpZWxkJywKICAgICAgICApOwogICAgICAgICRIZWxwZXItPkNvbmZpZ1NldHRpbmdDaGFuZ2UoCiAgICAgICAgICAgIFZhbGlkID0+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/ICcxJyA6ICcwJzsKCiAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgICAgICAgICBUaXRsZTogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoIk92ZXJ2aWV3IGFuZCBDb25maXJtYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICBIVE1MOiBIVE1MU3RyaW5nLAogICAgICAgICAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICAgICAgICAgIENsb3NlT25DbGlja091dHNpZGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIENsb3NlT25Fc2NhcGU6IGZhbHNlLAogICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMjAlJywKICAgICAgICAgICAgICAgICAgICBQb3NpdGlvbkxlZnQ6ICdDZW50ZXInLAogICAgICAgICAgICAgICAgICAgIEFsbG93QXV0b0dyb3c6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgQnV0dG9uczogWwogICAgICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMYWJlbDogQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0NvbmZpcm0nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGU6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsYXNzOiAnQ29uZmlybSBDYWxsRm9yQWN0aW9uJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZ1bmN0aW9uOiBmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIERpYWxvZ1RlbXBsYXRlID0gQ29yZS5UZW1wbGF0ZS5SZW5kZXIoJ0RpYWxvZy9XYWl0aW5nJywgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXh0OiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgiSW1wb3J0aW5nIGNsYXNzZXMvcm9sZXMgYW5kIHRoZWlyIHJlbGF0ZWQgZmllbGRzIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLlVJLkRpYWxvZy5TaG93RGlhbG9nKHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSFRNTDogRGlhbG9nVGVtcGxhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRpdGxlOiAiIiwgICAvLyBOb3QgYXBwbGljYWJsZSBpZiBoZWFkZXIgaXMgaGlkZGVuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGFsOiB0cnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9zZU9uQ2xpY2tPdXRzaWRlOiBmYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xvc2VPbkVzY2FwZTogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBvc2l0aW9uVG9wOiAnMjAlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUG9zaXRpb25MZWZ0OiAnQ2VudGVyJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWxsb3dBdXRvR3JvdzogZmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpZGVIZWFkZXI6IHRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhpZGVGb290ZXI6IHRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkFKQVguRnVuY3Rpb25DYWxsKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb3JlLkNvbmZpZy5HZXQoJ0NHSUhhbmRsZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQWN0aW9uPScgKyAnQWRtaW5JVFNNQ29uZmlnSXRlbScgKyAnO1N1YmFjdGlvbj1DbGFzc0ltcG9ydDtFeGFtcGxlQ2xhc3M9JyArIEltcG9ydEl0ZW0gKyAnO1VwZGF0ZUV4aXN0aW5nRW50aXRpZXM9JyArIFVwZGF0ZUV4aXN0aW5nRW50aXRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChSZXNwb25zZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFSZXNwb25zZSB8fCAhUmVzcG9uc2UuU3VjY2VzcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuVUkuRGlhbG9nLlNob3dBbGVydCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5MYW5ndWFnZS5UcmFuc2xhdGUoJ0FuIGVycm9yIG9jY3VycmVkIGR1cmluZyBjbGFzcyBpbXBvcnQuJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvcmUuTGFuZ3VhZ2UuVHJhbnNsYXRlKCBSZXNwb25zZS5FcnJvck1lc3NhZ2UgfHwgJ0NsYXNzIGltcG9ydCBmYWlsZWQuJyApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29yZS5VSS5EaWFsb2cuQ2xvc2VEaWFsb2coJCgnLkRpYWxvZzp2aXNpYmxlJykpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIExhYmVsOiBDb3JlLkxhbmd1YWdlLlRyYW5zbGF0ZSgnRGlzbWlzcycpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZTogJ0Nsb3NlJywKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9LAogICAgICAgICk7CiAgICB9KTsKCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWRtaW4uSVRTTUNvbmZpZ0l0ZW0gfHwge30pKTsK</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">Ly8gLS0KLy8gT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgovLyAtLQovLyBDb3B5cmlnaHQgKEMpIDIwMDEtMjAyMCBPVFJTIEFHLCBodHRwczovL290cnMuY29tLwovLyBDb3B5cmlnaHQgKEMpIDIwMTktMjAyNSBSb3RoZXIgT1NTIEdtYkgsIGh0dHBzOi8vb3RvYm8uaW8vCi8vIC0tCi8vIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyCi8vIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlCi8vIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi8vIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAovLyBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUwovLyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLy8gYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi8vIC0tCgoidXNlIHN0cmljdCI7Cgp2YXIgSVRTTSA9IElUU00gfHwge307CklUU00uQWdlbnQgPSBJVFNNLkFnZW50IHx8IHt9OwpJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gPSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0gfHwge307CgovKioKICogQG5hbWVzcGFjZSBJVFNNLkFnZW50LkNvbmZpZ0l0ZW0uRWRpdAogKiBAbWVtYmVyb2YgSVRTTS5BZ2VudAogKiBAYXV0aG9yIFJvdGhlciBPU1MgR21iSAogKiBAZGVzY3JpcHRpb24KICogICAgICBUaGlzIG5hbWVzcGFjZSBjb250YWlucyB0aGUgc3BlY2lhbCBtb2R1bGUgZnVuY3Rpb25zIGZvciB0aGUgY29uZmlnIGl0ZW0gZWRpdC4KICovCklUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0ID0gKGZ1bmN0aW9uIChUYXJnZXROUykgewoKICAgIC8qCiAgICAqIEBuYW1lIEluaXQKICAgICogQG1lbWJlcm9mIElUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0CiAgICAqIEBmdW5jdGlvbgogICAgKiBAZGVzY3JpcHRpb24KICAgICogICAgICBUaGlzIGZ1bmN0aW9uIGluaXRpYWxpemVzIHRoZSBmb3JtIHN1Ym1pdHRpb24uCiAgICAqLwogICAgVGFyZ2V0TlMuSW5pdCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAkKCcjQ2FuY2VsQnV0dG9uJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKCkgewogICAgICAgICAgICBpZiAoQ29yZS5VSS5Qb3B1cC5DdXJyZW50SXNQb3B1cFdpbmRvdygpKSB7CiAgICAgICAgICAgICAgICBDb3JlLlVJLlBvcHVwLkNsb3NlUG9wdXAoKTsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBIaWRlU2hvd0NvbXBsZXRlUGFnZVNlY3Rpb24oICQoJyNDbGFzc0l0ZW0gPiAuQ29udGVudCA+IGZpZWxkc2V0JykgKTsKICAgICAgICBDb3JlLkFwcC5TdWJzY3JpYmUoJ0V2ZW50LkFKQVguRm9ybVVwZGF0ZS5DYWxsYmFjaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBIaWRlU2hvd0NvbXBsZXRlUGFnZVNlY3Rpb24oICQoJyNDbGFzc0l0ZW0gPiAuQ29udGVudCA+IGZpZWxkc2V0JykgKQogICAgICAgIH0pOwoKICAgICAgICBPcGVuUmVsZXZhbnRQYWdlcygpOwogICAgICAgICQoJ2Zvcm0nKS5vbignc3VibWl0JywgT3BlblJlbGV2YW50UGFnZXMpOwogICAgfTsKCiAgICAvKioKICAgICAqIEBmdW5jdGlvbgogICAgICogQGRlc2NyaXB0aW9uCiAgICAgKiAgICAgIE9wZW5zIHRoZSBkZXRhaWxzIG9mIGFsbCBwYWdlcyB0aGF0IGNvbnRhaW4gaW52YWxpZCBmb3JtIGlucHV0IGZpZWxkcyBvciBjb250YWluIGEgY3VycmVudGx5IGZvY3VzZWQgZWxlbWVudC4KICAgICAqLwogICAgZnVuY3Rpb24gT3BlblJlbGV2YW50UGFnZXMoKSB7CiAgICAgICAgbGV0ICRSZWxldmFudERldGFpbHNPcGVuZWQgPSBmYWxzZTsKICAgICAgICAkKCdkZXRhaWxzJykuZWFjaChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLmZpbmQoJy5FcnJvcicpLmxlbmd0aCA+IDApIHsKICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignb3BlbicsIHRydWUpOwogICAgICAgICAgICAgICAgJFJlbGV2YW50RGV0YWlsc09wZW5lZCA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSBpZiAoJCh0aGlzKS5maW5kKCc6Zm9jdXMnKS5sZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoJ29wZW4nLCB0cnVlKTsKICAgICAgICAgICAgICAgICRSZWxldmFudERldGFpbHNPcGVuZWQgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgaWYgKCEkUmVsZXZhbnREZXRhaWxzT3BlbmVkKSB7CiAgICAgICAgICAgICQoJ2RldGFpbHM6Zmlyc3Qtb2YtdHlwZScpLmF0dHIoJ29wZW4nLCB0cnVlKTsKICAgICAgICB9CiAgICB9CgogICAgLyoqCiAgICAgKiBAZnVuY3Rpb24KICAgICAqIEBkZXNjcmlwdGlvbgogICAgICogICAgICBIaWRlU2hvdyBhIHNlY3Rpb24gb3IgcGFnZSBoZWFkZXIgaWYgdGhlIGNvbXBsZXRlIGNvbnRlbnQgaXMgQUNMSGlkZGVuCiAgICAgKi8KICAgIGZ1bmN0aW9uIEhpZGVTaG93Q29tcGxldGVQYWdlU2VjdGlvbiggJEVsZW1lbnQsIElzUGFnZSApIHsKICAgICAgICBpZiAoICFJc1BhZ2UgKSB7CiAgICAgICAgICAgICRFbGVtZW50LmNoaWxkcmVuKCJkZXRhaWxzLlBhZ2VDb250ZW50IikuZWFjaCggZnVuY3Rpb24oKSB7CiAgICAgICAgICAgICAgICBIaWRlU2hvd0NvbXBsZXRlUGFnZVNlY3Rpb24oICQodGhpcyksIHRydWUgKQogICAgICAgICAgICB9KTsKICAgICAgICB9CgogICAgICAgIGxldCBIaWRlUGFnZSA9IElzUGFnZSAmJiAkRWxlbWVudC5jaGlsZHJlbigiLlJvd19TZWN0aW9uSGVhZGVyIikubGVuZ3RoID4gMDsKCiAgICAgICAgJEVsZW1lbnQuY2hpbGRyZW4oIi5Sb3dfU2VjdGlvbkhlYWRlciIpLmVhY2goIGZ1bmN0aW9uKCkgewogICAgICAgICAgICBsZXQgJFNlY3Rpb25Sb3dzID0gJCh0aGlzKS5uZXh0VW50aWwoIi5Sb3dfU2VjdGlvbkhlYWRlciIpLAogICAgICAgICAgICAgICAgVmlzaWJsZVJvd3MgID0gJFNlY3Rpb25Sb3dzLmZpbHRlcigiOm5vdCgub29vQUNMSGlkZGVuKSIpLmxlbmd0aCA+IDA7CgogICAgICAgICAgICBpZiAoICQodGhpcykuaGFzQ2xhc3MoIm9vb0FDTEhpZGRlbiIpICkgewogICAgICAgICAgICAgICAgaWYgKCBWaXNpYmxlUm93cyApIHsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCJvb29BQ0xIaWRkZW4iKTsKICAgICAgICAgICAgICAgICAgICBIaWRlUGFnZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGlmICggIVZpc2libGVSb3dzICkgewogICAgICAgICAgICAgICAgICAgICQodGhpcykuYWRkQ2xhc3MoIm9vb0FDTEhpZGRlbiIpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgSGlkZVBhZ2UgPSBmYWxzZTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0pOwoKICAgICAgICBpZiAoIElzUGFnZSApIHsKICAgICAgICAgICAgaWYgKCAkRWxlbWVudC5oYXNDbGFzcygib29vQUNMSGlkZGVuIikgKSB7CiAgICAgICAgICAgICAgICBpZiAoICFIaWRlUGFnZSApIHsKICAgICAgICAgICAgICAgICAgICAkRWxlbWVudC5yZW1vdmVDbGFzcygib29vQUNMSGlkZGVuIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoIEhpZGVQYWdlICkgewogICAgICAgICAgICAgICAgICAgICRFbGVtZW50LmFkZENsYXNzKCJvb29BQ0xIaWRkZW4iKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBDb3JlLkluaXQuUmVnaXN0ZXJOYW1lc3BhY2UoVGFyZ2V0TlMsICdBUFBfTU9EVUxFJyk7CgogICAgcmV0dXJuIFRhcmdldE5TOwp9KElUU00uQWdlbnQuQ29uZmlnSXRlbS5FZGl0IHx8IHt9KSk7Cg==</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">LyogT1RPQk8gaXMgYSB3ZWItYmFzZWQgdGlja2V0aW5nIHN5c3RlbSBmb3Igc2VydmljZSBvcmdhbmlzYXRpb25zLgoKQ29weXJpZ2h0IChDKSAyMDAxLTIwMjAgT1RSUyBBRywgaHR0cHM6Ly9vdHJzLmNvbS8KQ29weXJpZ2h0IChDKSAyMDE5LTIwMjUgUm90aGVyIE9TUyBHbWJILCBodHRwczovL290b2JvLmlvLwoKVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQgdW5kZXIKdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUKRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dCBXSVRIT1VUCkFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTCkZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgpZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQphbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHBzOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKi8KCkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzY3cHgpIHsKCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nOiAwcHggMTZweCAyNHB4IDE2cHg7CiAgICAgICAgYm9yZGVyLXJhZGl1czogMjBweCAyMHB4IDBweCAwcHg7CiAgICAgICAgYm9yZGVyLWJvdHRvbTogMC42cHggc29saWQgI2U1ZTVlYjsKICAgICAgICBoZWlnaHQ6IDEyMXB4OwogICAgICAgIG92ZXJmbG93OiBoaWRkZW47CiAgICB9CgogICAgI29vb01haW5Cb3ggewogICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmN2Y3Zjk7CiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7CiAgICAgICAgbWluLWhlaWdodDogY2FsYyggMTAwdmggLSAyNjVweCApOwogICAgfQoKfQoKQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3NjhweCkgewogICAgCiAgICAjb29vSGVhZGVyIHsKICAgICAgICBwYWRkaW5nLXRvcDogMjJweDsKICAgICAgICBwYWRkaW5nLWJvdHRvbTogMjJweDsKICAgICAgICBoZWlnaHQ6IDEwMXB4OwogICAgICAgIHBvc2l0aW9uOiBzdGlja3k7CiAgICAgICAgdG9wOiAwOwogICAgICAgIGJvcmRlci1ib3R0b206IDEuMnB4IHNvbGlkICNlNWU1ZWI7CiAgICAgICAgei1pbmRleDogMTIwMDsKCi13ZWJraXQtdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgIC1tb3otdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICAgLW8tdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICAgICAgdHJhbnNpdGlvbjogaGVpZ2h0IDAuMXMgZWFzZSwgcGFkZGluZy10b3AgMC4xcyBlYXNlLCBwYWRkaW5nLWJvdHRvbSAwLjFzIGVhc2U7CiAgICB9Cgp9Cgojb29vSGVhZGVyIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7CiAgICBkaXNwbGF5OiBncmlkOwogICAgZ3JpZC10ZW1wbGF0ZS1yb3dzOiBtaW5tYXgoNDhweCwgMWZyKSBhdXRvOwogICAgYWxpZ24taXRlbXM6IGNlbnRlcjsKfQoKI0NJSW5mb0JhciB7CiAgICBoZWlnaHQ6IDIycHg7CiAgICBtYXJnaW46IDI2cHggMCA1cHggMDsKfQoKI0NJSW5mb0JhciBwLAojQ0lJbmZvQmFyIGRpdiwKI0NJSW5mb0JhciBsYWJlbCB7CiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICBmb250LXNpemU6IDEycHg7Cn0KCiNDSUluZm9CYXIgbGFiZWwgewogICAgcGFkZGluZzogMnB4IDA7Cn0KCiNDSUluZm9CYXIgcCB7CiAgICBtYXJnaW4tcmlnaHQ6IDE2cHg7CiAgICBwYWRkaW5nOiAycHggOHB4OwogICAgYm9yZGVyLXJhZGl1czogMTBweDsKfQoKCi5ncmVlbmxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjYzRjZGZhOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5T0spOwp9CgoueWVsbG93bGVkIHsKICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmZjY2M7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1jb2xOb3RpZnlXYXJuKTsKfQoKLnJlZGxlZCB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjliY2IyOwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sTm90aWZ5RXJyKTsKfQoKI29vb0N1c3RvbWVyTm90aWZpY2F0aW9ucyB7CiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZjdmN2Y5OwogICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tY29sQkdMaWdodCk7Cn0KCiNBY3Rpb25Sb3cgewogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMWZyIGF1dG8gYXV0bzsKICAgIG1hcmdpbi10b3A6IDE2cHg7CiAgICBwYWRkaW5nLWxlZnQ6IDI0cHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAyNHB4Owp9CgojUGFnZVNlbGVjdGlvbiA+IHAgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwp9CgojUGFnZVNlbGVjdGlvbiA+IGEgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgbWFyZ2luLXJpZ2h0OiAxNnB4Owp9CgojUGFnZVNlbGVjdGlvbiBidXR0b24uUGFnZVNlbGVjdGlvbkJ1dHRvbiB7CiAgICB3aWR0aDogYXV0bzsKICAgIG1heC13aWR0aDogMjQwcHg7CiAgICBwYWRkaW5nOiAwcHggMTZweDsKICAgIGhlaWdodDogMzJweDsKfQoKI1BhZ2VTZWxlY3Rpb24gYnV0dG9uLlBhZ2VTZWxlY3Rpb25CdXR0b24uU2VsZWN0ZWQgewogICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDA5OTsKICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWNvbE1haW5Ib3Zlcik7Cn0KCiNBdHRhY2htZW50Q29udGFpbmVyIHsKICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgIHBhZGRpbmctdG9wOiA3cHg7Cn0KCiNBdHRhY2htZW50cyA+IGkgewogICAgcG9zaXRpb246IHJlbGF0aXZlOwogICAgdG9wOiAxcHg7CiAgICBwYWRkaW5nLXJpZ2h0OiAycHg7Cn0KCiNBdHRhY2htZW50Qm94IHsKICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKICAgIHotaW5kZXg6IDIwMDsKICAgIGJhY2tncm91bmQ6ICNmZmY7CiAgICBib3JkZXItcmFkaXVzOiAyMHB4OwogICAgcGFkZGluZzogMTZweCAyNHB4OwogICAgYm94LXNoYWRvdzogMCAxcHggNHB4IDAgcmdiYSg0LCAwLCA3MSwgMC4xNik7CiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggMCB2YXIoLS1jb2xTaGFkb3dEYXJrKTsKICAgIG1hcmdpbi10b3A6IDJweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgewogICAgd2lkdGg6IDIyMHB4OwogICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKICAgIHBhZGRpbmctbGVmdDogMjRweDsKICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uIHsKICAgIHdpZHRoOiAyMjBweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgPiAuRmllbGQgewogICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgaGVpZ2h0OiAzMnB4OwogICAgbWFyZ2luLXRvcDogLTFweDsKICAgIHdpZHRoOiAxMDAlOwp9CgojVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciA+IGxhYmVsIHsKICAgIGxlZnQ6IGNhbGMoIC0xMDAlICsgMTZweCApOwogICAgZm9udC1zaXplOiAxNHB4OwogICAgdG9wOiAxcHg7Cn0KCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gLkZpZWxkOmhvdmVyIH4gbGFiZWwsCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gLkZpZWxkLm9vb1NlbGVjdGVkIH4gbGFiZWwsCiNWZXJzaW9uU2VsZWN0aW9uQ29udGFpbmVyID4gbGFiZWwub29vRm9jdXMgewogICAgZm9udC1zaXplOiAxMHB4OwogICAgdG9wOiAtMTdweDsKfQoKI1ZlcnNpb25TZWxlY3Rpb25Db250YWluZXIgaW5wdXQgewogICAgYm9yZGVyOiBzb2xpZCAxcHggIzdmODA5ZDsKICAgIGJvcmRlcjogc29saWQgMXB4IHZhcigtLWNvbFRleHRMaWdodCk7CiAgICBiYWNrZ3JvdW5kOiAjZmZmOwp9CgojVmVyc2lvblNlbGVjdGlvbkNvbnRhaW5lciAuSW5wdXRGaWVsZF9TZWxlY3Rpb24gewogICAgdG9wOiAxcHg7CiAgICBwYWRkaW5nOiAwOwogICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsKfQoKZGl2LklucHV0RmllbGRfTGlzdENvbnRhaW5lciB7CiAgICByaWdodDogNHB4OwogICAgbWF4LXdpZHRoOiBtYXgtY29udGVudDsKICAgIG1hcmdpbi10b3A6IC0yMHB4Owp9CgpkaXYuSW5wdXRGaWVsZF9UcmVlQ29udGFpbmVyIHsKICAgIG1hcmdpbi10b3A6IDE2cHggIWltcG9ydGFudDsKICAgIG1hcmdpbi1ib3R0b206IDE2cHggIWltcG9ydGFudDsKICAgIG1heC13aWR0aDogbWF4LWNvbnRlbnQgIWltcG9ydGFudDsKICAgIG1heC1oZWlnaHQ6IG1heC1jb250ZW50ICFpbXBvcnRhbnQ7Cn0KCi5qc3RyZWUtYW5jaG9yIHsKICAgIG1hcmdpbjogOHB4IDBweCA4cHggMjRweCAhaW1wb3J0YW50OwogICAgcGFkZGluZy1yaWdodDogMjRweDsKICAgIGZvbnQtc2l6ZTogMTJweCAhaW1wb3J0YW50Owp9CgouanN0cmVlLW5vZGUgewogICAgbWluLWhlaWdodDogMzJweDsKfQoKLmpzdHJlZS1ub2RlID4gLmpzdHJlZS13aG9sZXJvdyB7CiAgICBoZWlnaHQ6IDMycHggIWltcG9ydGFudDsKfQoKLm9vb0Nsb3NlIHsKICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKfQoKLm9vb0NvbnRlbnRHcmlkIHsKICAgIGRpc3BsYXk6IGdyaWQ7CiAgICBtYXJnaW4tdG9wOiAxNnB4OwogICAgZ3JpZC1yb3ctZ2FwOiAxNnB4OwogICAgZ3JpZC1jb2x1bW4tZ2FwOiAxNnB4Owp9Cgoub29vQ29udGVudENlbGwgewogICAgYmFja2dyb3VuZDogI2ZmZjsKICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7CiAgICBwYWRkaW5nOiAxNnB4IDI0cHg7Cn0KCi5vb29Db250ZW50Q2VsbCBoMiB7CiAgICBtYXJnaW4tYm90dG9tOiAxMnB4Owp9CgouRmllbGREaXNwbGF5Um93IHsKICAgIGRpc3BsYXk6IGdyaWQ7Cn0KCi5GaWVsZERpc3BsYXlSb3c6bm90KDpmaXJzdC1jaGlsZCkgewogICAgbWFyZ2luLXRvcDogMTJweDsKfQoKLkZpZWxkRGlzcGxheVJvdyBsYWJlbCwKLkZpZWxkRGlzcGxheVJvdyBwIHsKICAgIG1hcmdpbi10b3A6IDRweDsKfQoKLkZpZWxkRGlzcGxheVJvdyBwLAouRmllbGREaXNwbGF5Um93IGxhYmVsIHsKICAgIHBhZGRpbmctbGVmdDogOHB4OwogICAgcGFkZGluZy1yaWdodDogOHB4OwogICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKICAgIGxpbmUtaGVpZ2h0OiAxLjVlbTsKfQoKLm9vb0NvbnRlbnRHcmlkIGxhYmVsIHsKICAgIGNvbG9yOiAjOTI5MjkyOwogICAgdGV4dC1zaGFkb3c6IDAgMXB4IDAgI0ZBRkFGQTsKICAgIGZvbnQtc2l6ZTogMTRweDsKfQoKLkR5bmFtaWNGaWVsZFNldExhYmVsIHsKICAgIHBhZGRpbmctdG9wOiAxNnB4Owp9CgouU2V0RGlzcGxheVZhbHVlIHsKICAgIG1hcmdpbi10b3A6IDhweDsKICAgIG1hcmdpbi1ib3R0b206IDhweDsKICAgIG1hcmdpbi1sZWZ0OiAyNHB4OwogICAgZGlzcGxheTogZ3JpZDsKICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogY2FsYyggNTAlIC0gMTJweCApIGNhbGMoIDUwJSArIDEycHggKTsKfQoKLlNldERpc3BsYXlWYWx1ZSBkaXYuQ2xlYXIgewogICAgZGlzcGxheTogbm9uZTsKfQoKLkR5bmFtaWNGaWVsZFJpY2hUZXh0TGluayB7CiAgICBkaXNwbGF5OiBub25lOwp9CgouRHluYW1pY0ZpZWxkUmljaFRleHRDb250ZW50LkhpZGRlbiB7CiAgICBkaXNwbGF5OiBibG9jazsKfQoKLk92ZXJsYXlEeW5hbWljRmllbGRSaWNoVGV4dGlGcmFtZSB7CiAgICBoZWlnaHQ6IGF1dG87CiAgICBtYXgtaGVpZ2h0OiA1MDBweDsKICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2NHB4KTsKICAgIHBhZGRpbmc6IDAgMzJweDsKfQo=</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+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQXBwbGlhbmNlLUFwcGxpYW5jZVR5cGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIENvbnRhaW5lciBNYW5hZ2VtZW50OiBDb250YWluZXIgTWFuYWdlbWVudAogICAgICAgICAgRE5TLVNlcnZlcjogRE5TLVNlcnZlcgogICAgICAgICAgRmlyZXdhbGw6IEZpcmV3YWxsCiAgICAgICAgICBJZGVudGl0eSBhbmQgQWNjZXNzIE1hbmFnZW1lbnQgKElBTSk6IElkZW50aXR5IGFuZCBBY2Nlc3MgTWFuYWdlbWVudCAoSUFNKQogICAgICAgICAgT1RPQk86IE9UT0JPCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBob25lIC8gVm9JUDogUGhvbmUgLyBWb0lQCiAgICAgICAgICBWUE46IFZQTgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEFwcGxpYW5jZSBUeXBlCiAgICAgIE5hbWU6IElUU01BcHBsaWFuY2UtQXBwbGlhbmNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBBcHBsaWFuY2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQXBwbGlhbmNlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IEFwcGxpYW5jZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTG9jYXRpb24KICAgIE5hbWU6IEJ1aWxkaW5nCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgU3Vic2lkaWFyeVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZQogICAgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkCiAgICBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIgogICAgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb25cclxuICAgIFxyXG5TZWN0aW9uczpcclxuICBTdWJzaWRpYXJ5OlxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIEhlYWRlcjogU3Vic2lkaWFyeVxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1N1YnNpZGlhcnlcclxuCiAgICBcIEFkZHJlc3M6XHJcbiAgICBUeXBlOiBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeVxyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzc1xyXG4gICAgRmllbGRMaXN0UHJlOlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1N1YnNpZGlhcnkiCiAgRHluYW1pY0ZpZWxkczoKICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeToKICAgICAgQ0lDbGFzczogQnVpbGRpbmcKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogMAogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFN1YnNpZGlhcnkKICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gQ29udHJhY3QKICAgIE5hbWU6IENlcnRpZmljYXRlCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1TcGFuOgogICAgMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBDZXJ0aWZpY2F0ZVxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU01DZXJ0aWZpY2F0ZS1DcmVhdGlvbkRhdGU6CiAgICAgIENJQ2xhc3M6IENlcnRpZmljYXRlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAwCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcwJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IENyZWF0aW9uIERhdGUKICAgICAgTmFtZTogSVRTTUNlcnRpZmljYXRlLUNyZWF0aW9uRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNlcnRpZmljYXRlLUV4cGlyeURhdGU6CiAgICAgIENJQ2xhc3M6IENlcnRpZmljYXRlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAwCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IEV4cGlyeSBEYXRlCiAgICAgIE5hbWU6IElUU01DZXJ0aWZpY2F0ZS1FeHBpcnlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQ2VydGlmaWNhdGUtVHlwZToKICAgICAgQ0lDbGFzczogQ2VydGlmaWNhdGUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBDbGllbnQgQ2VydGlmaWNhdGVzOiBDbGllbnQgQ2VydGlmaWNhdGVzCiAgICAgICAgICBDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzOiBDb2RlIFNpZ25pbmcgQ2VydGlmaWNhdGVzCiAgICAgICAgICBEb2N1bWVudCBTaWduaW5nIENlcnRpZmljYXRlczogRG9jdW1lbnQgU2lnbmluZyBDZXJ0aWZpY2F0ZXMKICAgICAgICAgIEVtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcyk6IEVtYWlsIENlcnRpZmljYXRlcyAoUy9NSU1FIENlcnRpZmljYXRlcykKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU1NML1RMUyBDZXJ0aWZpY2F0ZXM6IFNTTC9UTFMgQ2VydGlmaWNhdGVzCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNQ2VydGlmaWNhdGUtVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogQ2xpZW50CiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwKICAgIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIFJvd1NwYW46CiAgICAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4gIC0gTmFtZTogSGFyZHdhcmVcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZQogICAgUGFydGl0aW9uOjpTdG9yYWdlIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IFNvZnR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ2xpZW50IFNvZnR3YXJlOjpDbGllbnQgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDoKICAgIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyCiAgICAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOgogICAgMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yawogICAgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDbGllbnQKICAgIFNvZnR3YXJlOjpDbGllbnQgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogNlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjoKICAgIDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpcgogICAgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZQogICAgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUKICAgIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMKICAgIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00KICAgIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuCiAgICBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBDbGllbnRcclxuICBJVFNNIE1vZGVsOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkCiAgICBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00KICAgIE9wZXJhdGluZyBTeXN0ZW1cclxuICBJVFNNIENsaWVudCBTb2Z0d2FyZTpcclxuICAgIE5hbWU6IElUU00gQ2xpZW50IFNvZnR3YXJlCiAgICBcIFxyXG4gIElUU00gQ1BVOlxyXG4gICAgTmFtZTogSVRTTSBDUFVcclxuICBJVFNNIE1lbW9yeTpcclxuICAgIE5hbWU6IElUU00gTWVtb3J5XHJcbgogICAgXCBJVFNNIEdyYXBoaWNzIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOgogICAgSVRTTSBTdG9yYWdlXHJcbiAgSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIE5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KICAgIFwgICBcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIExpY2Vuc2VcclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuCiAgICBcIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZToKICAgIENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENQVS1DUFVDbGFzczoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIENQVXMKICAgICAgTmFtZTogQ1BVLU51bWJlck9mQ1BVCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtUGh5c2ljYWxDb3JlczoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVGhyZWFkcwogICAgICBOYW1lOiBDUFUtVGhyZWFkcwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIE9wZXJhdGluZyBTeXN0ZW0KICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogT3BlcmF0aW5nIFN5c3RlbQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvT1MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01DbGllbnQtQ2xpZW50Q2F0ZWdvcnk6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERlc2t0b3A6IERlc2t0b3AKICAgICAgICAgIE5vdGVib29rOiBOb3RlYm9vawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaGluQ2xpZW50OiBUaGluIENsaWVudAogICAgICAgICAgVmlydHVhbENsaWVudDogVmlydHVhbCBDbGllbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbGllbnQgY2F0ZWdvcnkKICAgICAgTmFtZTogSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1GaXJtd2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBGaXJtd2FyZQogICAgICBOYW1lOiBJVFNNQ2xpZW50LUZpcm13YXJlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENsaWVudCBTb2Z0d2FyZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBDbGllbnQgU29mdHdhcmUKICAgICAgTmFtZTogSVRTTUNsaWVudFNvZnR3YXJlLVJlZmVyZW5jZVRvQ2xpZW50U29mdHdhcmUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBncmFwaGljcyBjYXJkcwogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLUdyYXBoaWNzQ2FyZFZlbmRvcjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU1EUmFkZW9uSEQ2NzUwOiBBTUQgUmFkZW9uIEhEIDY3NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjc3MDogQU1EIFJhZGVvbiBIRCA2NzcwCiAgICAgICAgICBBTURSYWRlb25IRDY3OTA6IEFNRCBSYWRlb24gSEQgNjc5MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODUwOiBBTUQgUmFkZW9uIEhEIDY4NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjg3MDogQU1EIFJhZGVvbiBIRCA2ODcwCiAgICAgICAgICBBTURSYWRlb25IRDY5NTA6IEFNRCBSYWRlb24gSEQgNjk1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTcwOiBBTUQgUmFkZW9uIEhEIDY5NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk5MDogQU1EIFJhZGVvbiBIRCA2OTkwCiAgICAgICAgICBBTURSYWRlb25IRDc3NTA6IEFNRCBSYWRlb24gSEQgNzc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzcwOiBBTUQgUmFkZW9uIEhEIDc3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzc5MDogQU1EIFJhZGVvbiBIRCA3NzkwCiAgICAgICAgICBBTURSYWRlb25IRDc4NTA6IEFNRCBSYWRlb24gSEQgNzg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3ODcwOiBBTUQgUmFkZW9uIEhEIDc4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzk1MDogQU1EIFJhZGVvbiBIRCA3OTUwCiAgICAgICAgICBBTURSYWRlb25IRDc5NzA6IEFNRCBSYWRlb24gSEQgNzk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTkwOiBBTUQgUmFkZW9uIEhEIDc5OTAKICAgICAgICAgIEFNRFJhZGVvblByb0R1bzogQU1EIFJhZGVvbiBQcm8gRHVvCiAgICAgICAgICBBTURSYWRlb25Qcm9TU0c6IEFNRCBSYWRlb24gUHJvIFNTRwogICAgICAgICAgQU1EUmFkZW9uUHJvV1gyMTAwOiBBTUQgUmFkZW9uIFBybyBXWCAyMTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDMxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDMxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNDEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNDEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g1MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA1MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDcxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDcxMDAKICAgICAgICAgIEFNRFJhZGVvblI1MjEwOiBBTUQgUmFkZW9uIFI1IDIxMAogICAgICAgICAgQU1EUmFkZW9uUjUyMjA6IEFNRCBSYWRlb24gUjUgMjIwCiAgICAgICAgICBBTURSYWRlb25SNTIzMDogQU1EIFJhZGVvbiBSNSAyMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzIwOiBBTUQgUmFkZW9uIFI1IDMyMAogICAgICAgICAgQU1EUmFkZW9uUjUzMzA6IEFNRCBSYWRlb24gUjUgMzMwCiAgICAgICAgICBBTURSYWRlb25SNTM0MDogQU1EIFJhZGVvbiBSNSAzNDAKICAgICAgICAgIEFNRFJhZGVvblI3MjQwOiBBTUQgUmFkZW9uIFI3IDI0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNTA6IEFNRCBSYWRlb24gUjcgMjUwCiAgICAgICAgICBBTURSYWRlb25SNzI1MFg6IEFNRCBSYWRlb24gUjcgMjUwWAogICAgICAgICAgQU1EUmFkZW9uUjcyNjBYOiBBTUQgUmFkZW9uIFI3IDI2MFgKICAgICAgICAgIEFNRFJhZGVvblI3MzQwOiBBTUQgUmFkZW9uIFI3IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjczNTA6IEFNRCBSYWRlb24gUjcgMzUwCiAgICAgICAgICBBTURSYWRlb25SNzM2MDogQU1EIFJhZGVvbiBSNyAzNjAKICAgICAgICAgIEFNRFJhZGVvblI3MzcwOiBBTUQgUmFkZW9uIFI3IDM3MAogICAgICAgICAgQU1EUmFkZW9uUjkyODU6IEFNRCBSYWRlb24gUjkgMjg1CiAgICAgICAgICBBTURSYWRlb25SOTI5MDogQU1EIFJhZGVvbiBSOSAyOTAKICAgICAgICAgIEFNRFJhZGVvblI5MjkwWDogQU1EIFJhZGVvbiBSOSAyOTBYCiAgICAgICAgICBBTURSYWRlb25SOTI5NVgyOiBBTUQgUmFkZW9uIFI5IDI5NVgyCiAgICAgICAgICBBTURSYWRlb25SOTM4MDogQU1EIFJhZGVvbiBSOSAzODAKICAgICAgICAgIEFNRFJhZGVvblI5MzgwWDogQU1EIFJhZGVvbiBSOSAzODBYCiAgICAgICAgICBBTURSYWRlb25SOTM5MDogQU1EIFJhZGVvbiBSOSAzOTAKICAgICAgICAgIEFNRFJhZGVvblI5MzkwWDogQU1EIFJhZGVvbiBSOSAzOTBYCiAgICAgICAgICBBTURSYWRlb25SOUZ1cnlYOiBBTUQgUmFkZW9uIFI5IEZ1cnkgWAogICAgICAgICAgQU1EUmFkZW9uUjlOYW5vOiBBTUQgUmFkZW9uIFI5IE5hbm8KICAgICAgICAgIEFNRFJhZGVvblJYNTQwMFhUOiBBTUQgUmFkZW9uIFJYIDU0MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMDogQU1EIFJhZGVvbiBSWCA1NTAwCiAgICAgICAgICBBTURSYWRlb25SWDU1MDBYVDogQU1EIFJhZGVvbiBSWCA1NTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU2MDA6IEFNRCBSYWRlb24gUlggNTYwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NjAwWFQ6IEFNRCBSYWRlb24gUlggNTYwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NzA6IEFNRCBSYWRlb24gUlggNTcwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDA6IEFNRCBSYWRlb24gUlggNTcwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NzAwWFQ6IEFNRCBSYWRlb24gUlggNTcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1ODA6IEFNRCBSYWRlb24gUlggNTgwCiAgICAgICAgICBBTURSYWRlb25SWDU5MDogQU1EIFJhZGVvbiBSWCA1OTAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMDogQU1EIFJhZGVvbiBSWCA2NjAwCiAgICAgICAgICBBTURSYWRlb25SWDY2MDBYVDogQU1EIFJhZGVvbiBSWCA2NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY3MDA6IEFNRCBSYWRlb24gUlggNjcwMAogICAgICAgICAgQU1EUmFkZW9uUlg2NzAwWFQ6IEFNRCBSYWRlb24gUlggNjcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2ODAwWFQ6IEFNRCBSYWRlb24gUlggNjgwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2OTAwWFQ6IEFNRCBSYWRlb24gUlggNjkwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNTY6IEFNRCBSYWRlb24gUlggVmVnYSA1NgogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNjQ6IEFNRCBSYWRlb24gUlggVmVnYSA2NAogICAgICAgICAgTlZJRElBR2VGb3JjZTIxMDogTlZJRElBIEdlRm9yY2UgMjEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1QxMDMwOiBOVklESUEgR2VGb3JjZSBHVCAxMDMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MTA6IE5WSURJQSBHZUZvcmNlIEdUIDUxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTIwOiBOVklESUEgR2VGb3JjZSBHVCA1MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUzMDogTlZJRElBIEdlRm9yY2UgR1QgNTMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1NDU6IE5WSURJQSBHZUZvcmNlIEdUIDU0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjEwOiBOVklESUEgR2VGb3JjZSBHVCA2MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYyMDogTlZJRElBIEdlRm9yY2UgR1QgNjIwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MzA6IE5WSURJQSBHZUZvcmNlIEdUIDYzMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjQwOiBOVklESUEgR2VGb3JjZSBHVCA2NDAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDcxMDogTlZJRElBIEdlRm9yY2UgR1QgNzEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q3MzA6IE5WSURJQSBHZUZvcmNlIEdUIDczMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA3MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDgwOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDEwODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjUwOiBOVklESUEgR2VGb3JjZSBHVFggMTY1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTY2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc0NTogTlZJRElBIEdlRm9yY2UgR1RYIDc0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MDogTlZJRElBIEdlRm9yY2UgR1RYIDc1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwOiBOVklESUEgR2VGb3JjZSBHVFggNzYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NzA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODA6IE5WSURJQSBHZUZvcmNlIEdUWCA3ODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk1MDogTlZJRElBIEdlRm9yY2UgR1RYIDk1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk2MDogTlZJRElBIEdlRm9yY2UgR1RYIDk2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk3MDogTlZJRElBIEdlRm9yY2UgR1RYIDk3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MDogTlZJRElBIEdlRm9yY2UgR1RYIDk4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggOTgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgxNTA6IE5WSURJQSBHZUZvcmNlIE1YMTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgzNTA6IE5WSURJQSBHZUZvcmNlIE1YMzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVg0NTA6IE5WSURJQSBHZUZvcmNlIE1YNDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA2MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMjA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMjA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNTA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNjBUaTogTlZJRElBIEdlRm9yY2UgUlRYIDMwNjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMzA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA5MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwOTAKICAgICAgICAgIE5WSURJQU5WUzMwMDogTlZJRElBIE5WUyAzMDAKICAgICAgICAgIE5WSURJQU5WUzMxMDogTlZJRElBIE5WUyAzMTAKICAgICAgICAgIE5WSURJQU5WUzUxMDogTlZJRElBIE5WUyA1MTAKICAgICAgICAgIE5WSURJQVF1YWRybzIwMDA6IE5WSURJQSBRdWFkcm8gMjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvNjAwOiBOVklESUEgUXVhZHJvIDYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzEyMDA6IE5WSURJQSBRdWFkcm8gSzEyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0syMjAwOiBOVklESUEgUXVhZHJvIEsyMjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDAwMDogTlZJRElBIFF1YWRybyBLNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzQyMDogTlZJRElBIFF1YWRybyBLNDIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwMDogTlZJRElBIFF1YWRybyBLNDIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzUyMDA6IE5WSURJQSBRdWFkcm8gSzUyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s2MDA6IE5WSURJQSBRdWFkcm8gSzYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYxME06IE5WSURJQSBRdWFkcm8gSzYxME0KICAgICAgICAgIE5WSURJQVF1YWRyb0s2MjA6IE5WSURJQSBRdWFkcm8gSzYyMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYyME06IE5WSURJQSBRdWFkcm8gSzYyME0KICAgICAgICAgIE5WSURJQVF1YWRyb00xMDAwTTogTlZJRElBIFF1YWRybyBNMTAwME0KICAgICAgICAgIE5WSURJQVF1YWRyb00yMDAwOiBOVklESUEgUXVhZHJvIE0yMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNDAwMDogTlZJRElBIFF1YWRybyBNNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTUwMDA6IE5WSURJQSBRdWFkcm8gTTUwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDAwOiBOVklESUEgUXVhZHJvIE02MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNjAwTTogTlZJRElBIFF1YWRybyBNNjAwTQogICAgICAgICAgTlZJRElBUXVhZHJvUDEwMDA6IE5WSURJQSBRdWFkcm8gUDEwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1AyMDAwOiBOVklESUEgUXVhZHJvIFAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNDAwOiBOVklESUEgUXVhZHJvIFA0MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDAwOiBOVklESUEgUXVhZHJvIFA0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNTAwMDogTlZJRElBIFF1YWRybyBQNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYwMDogTlZJRElBIFF1YWRybyBQNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwMDogTlZJRElBIFF1YWRybyBQNjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYyMDogTlZJRElBIFF1YWRybyBQNjIwCiAgICAgICAgICBOVklESUFUZXNsYUs4MDogTlZJRElBIFRlc2xhIEs4MAogICAgICAgICAgTlZJRElBVGVzbGFQMTAwOiBOVklESUEgVGVzbGEgUDEwMAogICAgICAgICAgTlZJRElBVGVzbGFUNDogTlZJRElBIFRlc2xhIFQ0CiAgICAgICAgICBOVklESUFUZXNsYVYxMDA6IE5WSURJQSBUZXNsYSBWMTAwCiAgICAgICAgICBOVklESUFUaXRhblJUWDogTlZJRElBIFRpdGFuIFJUWAogICAgICAgICAgTlZJRElBVGl0YW5WOiBOVklESUEgVGl0YW4gVgogICAgICAgICAgTlZJRElBVGl0YW5YUGFzY2FsOiBOVklESUEgVGl0YW4gWCAoUGFzY2FsKQogICAgICAgICAgTlZJRElBVGl0YW5YcDogTlZJRElBIFRpdGFuIFhwCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBHcmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEdERFI1OiBHRERSNQogICAgICAgICAgR0REUjVYOiBHRERSNVgKICAgICAgICAgIEdERFI2OiBHRERSNgogICAgICAgICAgR0REUjZYOiBHRERSNlgKICAgICAgICAgIEhCTTI6IEhCTTIKICAgICAgICAgIEhCTTJFOiBIQk0yRQogICAgICAgICAgSEJNSGlnaEJhbmR3aWR0aE1lbW9yeTogSEJNIChIaWdoIEJhbmR3aWR0aCBNZW1vcnkpCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNZW1vcnkgVHlwZQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtT3V0cHV0czoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRFZJOiBEVkkKICAgICAgICAgIERpc3BsYXlQb3J0OiBEaXNwbGF5UG9ydAogICAgICAgICAgSERNSTogSERNSQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBWR0E6IFZHQQogICAgICAgICAgVmlydHVhbExpbms6IFZpcnR1YWxMaW5rCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogT3V0cHV0cwogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEwMjQnOiAxMDI0IEdCCiAgICAgICAgICAnMTInOiAxMiBHQgogICAgICAgICAgJzEyOCc6IDEyOCBHQgogICAgICAgICAgJzE2JzogMTYgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQ4JzogNDggR0IKICAgICAgICAgICc1MTInOiA1MTIgR0IKICAgICAgICAgICc2NCc6IDY0IEdCCiAgICAgICAgICAnOCc6IDggR0IKICAgICAgICAgICc5Nic6IDk2IEdCCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDYXBhY2l0eSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ2xvY2tSYXRlOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAwJzogJzEwMCcKICAgICAgICAgICcxMzMnOiAnMTMzJwogICAgICAgICAgJzE2Nic6ICcxNjYnCiAgICAgICAgICAnMjAwJzogJzIwMCcKICAgICAgICAgICcyMzMnOiAnMjMzJwogICAgICAgICAgJzI2Nic6ICcyNjYnCiAgICAgICAgICAnMzAwJzogJzMwMCcKICAgICAgICAgICczMzMnOiAnMzMzJwogICAgICAgICAgJzM2Nic6ICczNjYnCiAgICAgICAgICAnNDAwJzogJzQwMCcKICAgICAgICAgICc0NTAnOiAnNDUwJwogICAgICAgICAgJzUwMCc6ICc1MDAnCiAgICAgICAgICAnNTI1JzogJzUyNScKICAgICAgICAgICc2MDAnOiAnNjAwJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tyYXRlCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ2xvY2tSYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnQKICAgICAgICBFeHByZXNzaW9uOiAiWyUgQ291bnQgPSBcIkR5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50XCIgJV1bJSBDYXBhY2l0eSA9CiAgICAgICAgICBcIkR5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5XCIgJV1cclxuWyUgVG90YWwgPSBEYXRhLiRDb3VudCAqIERhdGEuJENhcGFjaXR5CiAgICAgICAgICAlXVxyXG5bJSBUb3RhbCAlXSBHQiIKICAgICAgICBJbnRlcnByZXRlcjogfgogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgUmVhZG9ubHk6ICcxJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSZXF1aXJlZEFyZ3M6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uRGVsZXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBSQU0gKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVRvdGFsUkFNR0IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU01NZW1vcnktVHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRERSOiBERFIKICAgICAgICAgIEREUjI6IEREUjIKICAgICAgICAgIEREUjM6IEREUjMKICAgICAgICAgIEREUjQ6IEREUjQKICAgICAgICAgIEREUjU6IEREUjUKICAgICAgICAgIFNEUkFNOiBTRFJBTQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2UtU3RvcmFnZToKICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEhEREhhcmREaXNrRHJpdmU6IEhERCAoSGFyZCBEaXNrIERyaXZlKQogICAgICAgICAgICAgICAgTlZNZVNTRE5vblZvbGF0aWxlTWVtb3J5RXhwcmVzc1NvbGlkU3RhdGVEcml2ZTogTlZNZSBTU0QgKE5vbi1Wb2xhdGlsZQogICAgICAgICAgICAgICAgICBNZW1vcnkgRXhwcmVzcyBTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU1NEU29saWRTdGF0ZURyaXZlOiBTU0QgKFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgU1NIRFNvbGlkU3RhdGVIeWJyaWREcml2ZTogU1NIRCAoU29saWQgU3RhdGUgSHlicmlkIERyaXZlKQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgVHlwZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgQURBVEE6IEFEQVRBCiAgICAgICAgICAgICAgICBBREFUQVRlY2hub2xvZ3k6IEFEQVRBIFRlY2hub2xvZ3kKICAgICAgICAgICAgICAgIEFwYWNlcjogQXBhY2VyCiAgICAgICAgICAgICAgICBCdWZmYWxvOiBCdWZmYWxvCiAgICAgICAgICAgICAgICBDb3JzYWlyOiBDb3JzYWlyCiAgICAgICAgICAgICAgICBDcnVjaWFsTWljcm9uOiBDcnVjaWFsIChNaWNyb24pCiAgICAgICAgICAgICAgICBHVGVjaG5vbG9neVdlc3Rlcm5EaWdpdGFsOiBHLVRlY2hub2xvZ3kgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhHU1RXZXN0ZXJuRGlnaXRhbDogSEdTVCAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSGl0YWNoaTogSGl0YWNoaQogICAgICAgICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICAgICAgICBLaW5nc3RvbjogS2luZ3N0b24KICAgICAgICAgICAgICAgIEtpbmdzdG9uRGlnaXRhbDogS2luZ3N0b24gRGlnaXRhbAogICAgICAgICAgICAgICAgTGFDaWVTZWFnYXRlOiBMYUNpZSAoU2VhZ2F0ZSkKICAgICAgICAgICAgICAgIExleGFyOiBMZXhhcgogICAgICAgICAgICAgICAgTWF4dG9yOiBNYXh0b3IKICAgICAgICAgICAgICAgIE9DWlRvc2hpYmE6IE9DWiAoVG9zaGliYSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgUE5ZOiBQTlkKICAgICAgICAgICAgICAgIFBsZXh0b3I6IFBsZXh0b3IKICAgICAgICAgICAgICAgIFNLaHluaXg6IFNLIGh5bml4CiAgICAgICAgICAgICAgICBTYW1zdW5nOiBTYW1zdW5nCiAgICAgICAgICAgICAgICBTYW1zdW5nU2VtaWNvbmR1Y3RvcjogU2Ftc3VuZyBTZW1pY29uZHVjdG9yCiAgICAgICAgICAgICAgICBTYW5EaXNrV2VzdGVybkRpZ2l0YWw6IFNhbkRpc2sgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIFNlYWdhdGU6IFNlYWdhdGUKICAgICAgICAgICAgICAgIFNpbGljb25Qb3dlcjogU2lsaWNvbiBQb3dlcgogICAgICAgICAgICAgICAgU29ueTogU29ueQogICAgICAgICAgICAgICAgU3VwZXJUYWxlbnQ6IFN1cGVyIFRhbGVudAogICAgICAgICAgICAgICAgVGVhbUdyb3VwOiBUZWFtIEdyb3VwCiAgICAgICAgICAgICAgICBUb3NoaWJhOiBUb3NoaWJhCiAgICAgICAgICAgICAgICBUcmFuc2NlbmQ6IFRyYW5zY2VuZAogICAgICAgICAgICAgICAgV2VzdGVybkRpZ2l0YWw6IFdlc3Rlcm4gRGlnaXRhbAogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1vZGVsCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UKICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU3RvcmFnZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBGcmVlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50CiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gVXNlZCBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBNb3VudCBQb2ludAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZSBQYXJ0aXRpb24KICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBDbGllbnQKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogQ2xpZW50ICh2aXJ0dWFsKQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsCiAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDoKICAgIDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOgogICAgMlxyXG5cclxuICAtIE5hbWU6IEhhcmR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbiAgLSBOYW1lOiBTb2Z0d2FyZVxyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZwogICAgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENsaWVudCBTb2Z0d2FyZTo6Q2xpZW50IFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcbiAgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gQ2xpZW50IFNvZnR3YXJlOjpDbGllbnQgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBMaWNlbnNlOjpMaWNlbnNlXHJcbiAgICAgICAgUm93U3RhcnQ6IDZcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDdcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbgogICAgXCAgICAgICBSb3dTcGFuOiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4KICAgIFwgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjCiAgICBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuCiAgICBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBDbGllbnRcclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4KICAgIFwgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkIGluOlxyXG4gICAgTmFtZTogQ01EQgogICAgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00gT3BlcmF0aW5nIFN5c3RlbVxyXG4KICAgIFwgSVRTTSBDbGllbnQgU29mdHdhcmU6XHJcbiAgICBOYW1lOiBJVFNNIENsaWVudCBTb2Z0d2FyZSAgXHJcbiAgSVRTTSBDUFU6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ1BVXHJcbiAgSVRTTSBNZW1vcnk6XHJcbiAgICBOYW1lOiBJVFNNIE1lbW9yeVxyXG4gIElUU00gR3JhcGhpY3MKICAgIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2VcclxuCiAgICBcIElUU00gU3RvcmFnZSBQYXJ0aXRpb246XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uICAgIFxyXG4gIElUU00gTmV0d29yawogICAgSW5mbzpcclxuICAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbgogICAgXCBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6CiAgICBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDUFUtQ1BVQ2xhc3M6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEZXNrdG9wOiBEZXNrdG9wCiAgICAgICAgICBMYXB0b3A6IExhcHRvcAogICAgICAgICAgTW9iaWxlRW1iZWRkZWQ6IE1vYmlsZS9FbWJlZGRlZAogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBTZXJ2ZXI6IFNlcnZlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENQVSBDbGFzcwogICAgICBOYW1lOiBDUFUtQ1BVQ2xhc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1DbG9ja3NwZWVkOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBDUFVzCiAgICAgIE5hbWU6IENQVS1OdW1iZXJPZkNQVQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVBoeXNpY2FsQ29yZXM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUGh5c2ljYWwgQ29yZXMKICAgICAgTmFtZTogQ1BVLVBoeXNpY2FsQ29yZXMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1Tb2NrZXRUeXBlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFRocmVhZHMKICAgICAgTmFtZTogQ1BVLVRocmVhZHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBPcGVyYXRpbmcgU3lzdGVtCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb09TCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIERlc2t0b3A6IERlc2t0b3AKICAgICAgICAgIE5vdGVib29rOiBOb3RlYm9vawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaGluQ2xpZW50OiBUaGluIENsaWVudAogICAgICAgICAgVmlydHVhbENsaWVudDogVmlydHVhbCBDbGllbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbGllbnQgY2F0ZWdvcnkKICAgICAgTmFtZTogSVRTTUNsaWVudC1DbGllbnRDYXRlZ29yeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudC1GaXJtd2FyZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRmlybXdhcmUKICAgICAgTmFtZTogSVRTTUNsaWVudC1GaXJtd2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUNsaWVudFNvZnR3YXJlLVJlZmVyZW5jZVRvQ2xpZW50U29mdHdhcmU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQ2xpZW50IFNvZnR3YXJlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IENsaWVudCBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZS1TdG9yYWdlOgogICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBIRERIYXJkRGlza0RyaXZlOiBIREQgKEhhcmQgRGlzayBEcml2ZSkKICAgICAgICAgICAgICAgIE5WTWVTU0ROb25Wb2xhdGlsZU1lbW9yeUV4cHJlc3NTb2xpZFN0YXRlRHJpdmU6IE5WTWUgU1NEIChOb24tVm9sYXRpbGUKICAgICAgICAgICAgICAgICAgTWVtb3J5IEV4cHJlc3MgU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFNTRFNvbGlkU3RhdGVEcml2ZTogU1NEIChTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIFNTSERTb2xpZFN0YXRlSHlicmlkRHJpdmU6IFNTSEQgKFNvbGlkIFN0YXRlIEh5YnJpZCBEcml2ZSkKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFR5cGUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgQURBVEE6IEFEQVRBCiAgICAgICAgICAgICAgICBBREFUQVRlY2hub2xvZ3k6IEFEQVRBIFRlY2hub2xvZ3kKICAgICAgICAgICAgICAgIEFwYWNlcjogQXBhY2VyCiAgICAgICAgICAgICAgICBCdWZmYWxvOiBCdWZmYWxvCiAgICAgICAgICAgICAgICBDb3JzYWlyOiBDb3JzYWlyCiAgICAgICAgICAgICAgICBDcnVjaWFsTWljcm9uOiBDcnVjaWFsIChNaWNyb24pCiAgICAgICAgICAgICAgICBHVGVjaG5vbG9neVdlc3Rlcm5EaWdpdGFsOiBHLVRlY2hub2xvZ3kgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhHU1RXZXN0ZXJuRGlnaXRhbDogSEdTVCAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSGl0YWNoaTogSGl0YWNoaQogICAgICAgICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICAgICAgICBLaW5nc3RvbjogS2luZ3N0b24KICAgICAgICAgICAgICAgIEtpbmdzdG9uRGlnaXRhbDogS2luZ3N0b24gRGlnaXRhbAogICAgICAgICAgICAgICAgTGFDaWVTZWFnYXRlOiBMYUNpZSAoU2VhZ2F0ZSkKICAgICAgICAgICAgICAgIExleGFyOiBMZXhhcgogICAgICAgICAgICAgICAgTWF4dG9yOiBNYXh0b3IKICAgICAgICAgICAgICAgIE9DWlRvc2hpYmE6IE9DWiAoVG9zaGliYSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgUE5ZOiBQTlkKICAgICAgICAgICAgICAgIFBsZXh0b3I6IFBsZXh0b3IKICAgICAgICAgICAgICAgIFNLaHluaXg6IFNLIGh5bml4CiAgICAgICAgICAgICAgICBTYW1zdW5nOiBTYW1zdW5nCiAgICAgICAgICAgICAgICBTYW1zdW5nU2VtaWNvbmR1Y3RvcjogU2Ftc3VuZyBTZW1pY29uZHVjdG9yCiAgICAgICAgICAgICAgICBTYW5EaXNrV2VzdGVybkRpZ2l0YWw6IFNhbkRpc2sgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIFNlYWdhdGU6IFNlYWdhdGUKICAgICAgICAgICAgICAgIFNpbGljb25Qb3dlcjogU2lsaWNvbiBQb3dlcgogICAgICAgICAgICAgICAgU29ueTogU29ueQogICAgICAgICAgICAgICAgU3VwZXJUYWxlbnQ6IFN1cGVyIFRhbGVudAogICAgICAgICAgICAgICAgVGVhbUdyb3VwOiBUZWFtIEdyb3VwCiAgICAgICAgICAgICAgICBUb3NoaWJhOiBUb3NoaWJhCiAgICAgICAgICAgICAgICBUcmFuc2NlbmQ6IFRyYW5zY2VuZAogICAgICAgICAgICAgICAgV2VzdGVybkRpZ2l0YWw6IFdlc3Rlcm4gRGlnaXRhbAogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNb2RlbAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBTZXJpYWxOdW1iZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZQogICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TdG9yYWdlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb246CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBDbGllbnQgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBGcmVlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIFVzZWQgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogQ2xpZW50ICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE1vdW50IFBvaW50CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlIFBhcnRpdGlvbgogICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IENsaWVudCAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBDbGllbnQgU29mdHdhcmUKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIExpY2Vuc2U6OkxpY2Vuc2VcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUKICAgIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zCiAgICBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5CiAgICBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoCiAgICBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZwogICAgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMKICAgIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00KICAgIExpY2Vuc2VcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuCiAgICBcICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IENsaWVudCBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDbGllbnQgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbGllbnQgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IENsaWVudCBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogQ2xpZW50IFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBDbHVzdGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZAogICAgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zCiAgICBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5CiAgICBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoCiAgICBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZwogICAgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMKICAgIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTQogICAgR0YgQ2x1c3RlclxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1SZWZlcmVuY2VUb1NlcnZlcjoKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlcgogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ2x1c3RlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBDbHVzdGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENsdXN0ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQWNjb3VudGluZzpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIEFjY291bnRpbmcgSW5mb3JtYXRpb25cclxuICAgIC0gREY6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlclxyXG4gICAgLSBERjoKICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2VcclxuICAgIC0gREY6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZVxyXG4gICAgLSBERjoKICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZVxyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctQ29zdFVuaXRcclxuICAgIC0gREY6CiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlclxyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlclxyXG4gICAgLQogICAgREY6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0c1xyXG4gICAgLSBERjogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHNcclxuCiAgICBcICAgLSBERjogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50IgogIFJvbGVOYW1lOiBDTURCIEFjY291bnRpbmcKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEJhY2tsaW5rczpcclxuICAgIFR5cGU6IENvbmZpZ0l0ZW1MaW5rc1xyXG4gICAgSGVhZGVyOgogICAgQmFja2xpbmtzXHJcbiAgICBMaW5rZWRBczogU291cmNlIgogIFJvbGVOYW1lOiBDTURCIEJhY2tsaW5rcwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgRGVzY3JpcHRpb246XHJcbiAgICBUeXBlOiBEZXNjcmlwdGlvblxyXG4gICAgSGVhZGVyOgogICAgRGVzY3JpcHRpb24iCiAgUm9sZU5hbWU6IENNREIgRGVzY3JpcHRpb24KLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFN1YnNpZGlhcnk6XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIEhlYWRlcjoKICAgIFN1YnNpZGlhcnlcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9TdWJzaWRpYXJ5XHJcbiAgQWRkcmVzczpcclxuICAgIFR5cGU6CiAgICBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeVxyXG4gICAgU2VjdGlvbk5hbWU6CiAgICBBZGRyZXNzXHJcbiAgICBGaWVsZExpc3RQcmU6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvU3Vic2lkaWFyeSIKICBSb2xlTmFtZTogQ01EQiBHRiBCdWlsZGluZwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTG9jYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIEhlYWRlcjoKICAgIExvY2F0aW9uXHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb25cclxuICBBZGRyZXNzOlxyXG4gICAgVHlwZToKICAgIFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvblxyXG4gICAgU2VjdGlvbk5hbWU6CiAgICBBZGRyZXNzIgogIFJvbGVOYW1lOiBDTURCIExvY2F0ZWQgaW4KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBDb250cmFjdAogICAgTmFtZTogQ29udHJhY3QKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbiAgLQogICAgTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczoKICAgIFxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbgogICAgXCAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIENvbnRyYWN0XHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQgogICAgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250cmFjdC1QZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcwJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IENvbnRyYWN0IHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IENvbnRyYWN0LVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRyYWN0LVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcwJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IENvbnRyYWN0IHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBDb250cmFjdC1QZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udHJhY3QtVHlwZToKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnQ29uc3VsdGluZyBBZ3JlZW1lbnQ6JzogQ29uc3VsdGluZyBBZ3JlZW1lbnQKICAgICAgICAgIEVtcGxveW1lbnQgQ29udHJhY3Q6IEVtcGxveW1lbnQgQ29udHJhY3QKICAgICAgICAgIEZyYW5jaGlzZSBBZ3JlZW1lbnQ6IEZyYW5jaGlzZSBBZ3JlZW1lbnQKICAgICAgICAgIExlYXNlIEFncmVlbWVudDogTGVhc2UgQWdyZWVtZW50CiAgICAgICAgICBMaWNlbnNlIEFncmVlbWVudDogTGljZW5zZSBBZ3JlZW1lbnQKICAgICAgICAgIExvYW4gQWdyZWVtZW50OiBMb2FuIEFncmVlbWVudAogICAgICAgICAgTm9uLURpc2Nsb3N1cmUgQWdyZWVtZW50IChOREEpOiBOb24tRGlzY2xvc3VyZSBBZ3JlZW1lbnQgKE5EQSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFydG5lcnNoaXAgQWdyZWVtZW50OiBQYXJ0bmVyc2hpcCBBZ3JlZW1lbnQKICAgICAgICAgIFNhbGVzIENvbnRyYWN0OiBTYWxlcyBDb250cmFjdAogICAgICAgICAgU2VydmljZSBBZ3JlZW1lbnQ6IFNlcnZpY2UgQWdyZWVtZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ29udHJhY3QgVHlwZQogICAgICBOYW1lOiBDb250cmFjdC1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBDb250cmFjdAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogQ29udHJhY3QKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IENvbnRyYWN0CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBMb2NhdGlvbgogICAgTmFtZTogQ291bnRyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBEYXRhYmFzZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsCiAgICBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBTZXJ2ZXI6OlNlcnZlclxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBMaWNlbnNlOjpMaWNlbnNlXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlCiAgICB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucwogICAgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseQogICAgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2ggY2xhc3Mgd2l0aAogICAgY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbiByZWZlcnJpbmcKICAgIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzCiAgICBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00KICAgIEdGIERhdGFiYXNlXHJcbiAgSVRTTSBTZXJ2ZXI6XHJcbiAgICBOYW1lOiBJVFNNIFNlcnZlclxyXG4gIElUU00gTGljZW5zZTpcclxuCiAgICBcICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIKICAgIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50CiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgQ291bnQKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogRGF0YWJhc2UKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tUmVmZXJlbmNlVG9MaWNlbnNlOgogICAgICBDSUNsYXNzOiBEYXRhYmFzZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9TZXJ2ZXI6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlcgogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Tb2Z0d2FyZS1EYXRhYmFzZVR5cGU6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQ2hyb21hIERCOiBDaHJvbWEgREIKICAgICAgICAgIEVsYXN0aWNzZWFyY2g6IEVsYXN0aWNzZWFyY2gKICAgICAgICAgIElCTSBEYjI6IElCTSBEYjIKICAgICAgICAgIE1hcmlhREI6IE1hcmlhREIKICAgICAgICAgIE1pY3Jvc29mdCBTUUwgU2VydmVyOiBNaWNyb3NvZnQgU1FMIFNlcnZlcgogICAgICAgICAgTW9uZ29EQjogTW9uZ29EQgogICAgICAgICAgTXlTUUw6IE15U1FMCiAgICAgICAgICBPcmFjbGUgRGF0YWJhc2U6IE9yYWNsZSBEYXRhYmFzZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQb3N0Z3JlU1FMOiBQb3N0Z3JlU1FMCiAgICAgICAgICBSZWRpczogUmVkaXMKICAgICAgICAgIFNRTGl0ZTogU1FMaXRlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogRGF0YWJhc2UKICAgICAgTmFtZTogSVRTTVNvZnR3YXJlLURhdGFiYXNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNvZnR3YXJlLURhdGVFbmRPZlN1cHBvcnQ6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxMCcKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IEVuZCBvZiBzdXBwb3J0CiAgICAgIE5hbWU6IElUU01Tb2Z0d2FyZS1EYXRlRW5kT2ZTdXBwb3J0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU29mdHdhcmUtRGF0ZVJlbGVhc2U6CiAgICAgIENJQ2xhc3M6IERhdGFiYXNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiByZWxlYXNlCiAgICAgIE5hbWU6IElUU01Tb2Z0d2FyZS1EYXRlUmVsZWFzZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIEluZnJhc3RydWN0dXJlCiAgICAtIE5ldHdvcmsgSW5mcmFzdHJ1Y3R1cmUKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBEZXZpY2UgKHVuaWRlbnRpZmllZCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgICBWZXJzaW9uVHJpZ2dlcjoKICAgIC0gRGVmaW5pdGlvblVwZGF0ZQogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzCiAgICBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwKICAgIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UKICAgIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoCiAgICBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24KICAgIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUKICAgIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZToKICAgIElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IERldmljZSAodW5pZGVudGlmaWVkKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IERldmljZSAodW5pZGVudGlmaWVkKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogRGV2aWNlICh1bmlkZW50aWZpZWQpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogRGV2aWNlICh1bmlkZW50aWZpZWQpCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IERpc3BsYXkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5zOiAyXHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuCiAgICBcIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbAogICAgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzCiAgICBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgRGlzcGxheVxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbgogICAgXCBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCCiAgICBMb2NhdGVkIGluXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbgogICAgXCAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktUG93ZXJEZWxpdmVyeToKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIE5vOiBObwogICAgICAgICAgWWVzOiBZZXMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQb3dlciBEZWxpdmVyeQogICAgICBOYW1lOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1SZXNvbHV0aW9uOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMksgKDIwNDggeCAxMDgwKTogMksgKDIwNDggeCAxMDgwKQogICAgICAgICAgJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JzogJzRLIFVsdHJhIEhEICgzODQwIHggMjE2MCk6JwogICAgICAgICAgNUsgKDUxMjAgeCAyODgwKTogNUsgKDUxMjAgeCAyODgwKQogICAgICAgICAgOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKTogOEsgVWx0cmEgSEQgKDc2ODAgeCA0MzIwKQogICAgICAgICAgRnVsbCBIRCAoMTkyMCB4IDEwODApOiBGdWxsIEhEICgxOTIwIHggMTA4MCkKICAgICAgICAgIEhEICgxMjgwIHggNzIwKTogSEQgKDEyODAgeCA3MjApCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFF1YWQgSEQgKDI1NjAgeCAxNDQwKTogUXVhZCBIRCAoMjU2MCB4IDE0NDApCiAgICAgICAgICBVV1FIRCAoMzQ0MCB4IDE0NDApOiBVV1FIRCAoMzQ0MCB4IDE0NDApCiAgICAgICAgICBXVVhHQSAoMTkyMCB4IDEyMDApOiBXVVhHQSAoMTkyMCB4IDEyMDApCiAgICAgICAgICBXWEdBICgxMzY2IHggNzY4KTogV1hHQSAoMTM2NiB4IDc2OCkKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNb25pdG9yIFJlc29sdXRpb24KICAgICAgTmFtZTogSVRTTURpc3BsYXktUmVzb2x1dGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTURpc3BsYXktU2l6ZUluY2g6CiAgICAgIENJQ2xhc3M6IERpc3BsYXkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMjcnOiAyNyIKICAgICAgICAgICczMic6IDMyIgogICAgICAgICAgJzM0JzogMzQiCiAgICAgICAgICAnMzUnOiAzNSIKICAgICAgICAgICc0MCc6IDQwIgogICAgICAgICAgJzQzJzogNDMiCiAgICAgICAgICAnNDknOiA0OSIKICAgICAgICAgICc1NSc6IDU1IgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTW9uaXRvciBTaXplCiAgICAgIE5hbWU6IElUU01EaXNwbGF5LVNpemVJbmNoCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1UeXBlOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgTENEIE1vbml0b3IgKExpcXVpZCBDcnlzdGFsIERpc3BsYXkpOiBMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSkKICAgICAgICAgIExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSk6IExFRCBNb25pdG9yIChMaWdodCBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodCBFbWl0dGluZyBEaW9kZSk6IE9MRUQgTW9uaXRvciAoT3JnYW5pYyBMaWdodAogICAgICAgICAgICBFbWl0dGluZyBEaW9kZSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgVG91Y2hzY3JlZW4gTW9uaXRvcjogVG91Y2hzY3JlZW4gTW9uaXRvcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTURpc3BsYXktVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBEaXNwbGF5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogRGlzcGxheQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gQ29udHJhY3QKICAgIE5hbWU6IEZpbGVzCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvbiIKLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBJUCBOZXR3b3JrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgSVAgTmV0d29ya1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIElUU01JUE5ldHdvcmstQWRkcmVzc0FsbG9jYXRpb246CiAgICAgIENJQ2xhc3M6IElQIE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgIE5hbWU6IElUU01JUE5ldHdvcmstQWRkcmVzc0FsbG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstQ0lEUjoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ0lEUgogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUNJRFIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstSVBQcm90b2NvbDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUlQUHJvdG9jb2wKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01JUE5ldHdvcmstSVBSYW5nZUVuZDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogRW5kIElQIEFkZHJlc3MKICAgICAgTmFtZTogSVRTTUlQTmV0d29yay1JUFJhbmdlRW5kCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNSVBOZXR3b3JrLUlQUmFuZ2VTdGFydDoKICAgICAgQ0lDbGFzczogSVAgTmV0d29yawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU3RhcnQgSVAgQWRkcmVzcwogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLUlQUmFuZ2VTdGFydAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUlQTmV0d29yay1OZXR3b3JrTGF5ZXI6CiAgICAgIENJQ2xhc3M6IElQIE5ldHdvcmsKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInOiAnTGF5ZXIgMTogUGh5c2ljYWwgTGF5ZXInCiAgICAgICAgICAnTGF5ZXIgMjogRGF0YSBMaW5rIExheWVyJzogJ0xheWVyIDI6IERhdGEgTGluayBMYXllcicKICAgICAgICAgICdMYXllciAzOiBOZXR3b3JrIExheWVyJzogJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXInCiAgICAgICAgICAnTGF5ZXIgMzogTmV0d29yayBMYXllciAoU3VwZXJuZXQpJzogJ0xheWVyIDM6IE5ldHdvcmsgTGF5ZXIgKFN1cGVybmV0KScKICAgICAgICAgICdMYXllciA0OiBUcmFuc3BvcnQgTGF5ZXInOiAnTGF5ZXIgNDogVHJhbnNwb3J0IExheWVyJwogICAgICAgICAgJ0xheWVyIDU6IFNlc3Npb24gTGF5ZXInOiAnTGF5ZXIgNTogU2Vzc2lvbiBMYXllcicKICAgICAgICAgICdMYXllciA2OiBQcmVzZW50YXRpb24gTGF5ZXInOiAnTGF5ZXIgNjogUHJlc2VudGF0aW9uIExheWVyJwogICAgICAgICAgJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJzogJ0xheWVyIDc6IEFwcGxpY2F0aW9uIExheWVyJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTmV0d29yayBMYXllcgogICAgICBOYW1lOiBJVFNNSVBOZXR3b3JrLU5ldHdvcmtMYXllcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ2xpZW50IFNvZnR3YXJlOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgQ2xpZW50IFNvZnR3YXJlXHJcbiAgICAtIERGOiBJVFNNQ2xpZW50U29mdHdhcmUtUmVmZXJlbmNlVG9DbGllbnRTb2Z0d2FyZSIKICBSb2xlTmFtZTogSVRTTSBDbGllbnQgU29mdHdhcmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIENvbnRhY3Q6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IENvbnRhY3RcclxuCiAgICBcICAgLSBERjogQ29udGFjdC1EaXN0cmlidXRvclxyXG4gICAgLSBERjogQ29udGFjdC1Vc2VyXHJcbiAgICAtIERGOiBDb250YWN0LUFkbWluaXN0cmF0b3IiCiAgUm9sZU5hbWU6IElUU00gQ29udGFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ29udHJhY3Q6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IENvbnRyYWN0XHJcbgogICAgXCAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdFxyXG4gICAgLSBERjogSVRTTS1MZW5zVG9Db250cmFjdFR5cGVcclxuICAgICAgUmVhZG9ubHk6CiAgICAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kRnJvbVxyXG4gICAgICBSZWFkb25seTogMVxyXG4gICAgLSBERjoKICAgIElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RVbnRpbFxyXG4gICAgICBSZWFkb25seTogMSIKICBSb2xlTmFtZTogSVRTTSBDb250cmFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgQ1BVOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBIZWFkZXI6IENQVVxyXG4KICAgIFwgICAgIC0gREY6IENQVS1DUFVDbGFzc1xyXG4gICAgICAtIERGOiBDUFUtTnVtYmVyT2ZDUFVcclxuICAgICAgLSBERjogQ1BVLVBoeXNpY2FsQ29yZXNcclxuCiAgICBcICAgICAtIERGOiBDUFUtVGhyZWFkc1xyXG4gICAgICAtIERGOiBDUFUtQ2xvY2tzcGVlZFxyXG4gICAgICAtIERGOiBDUFUtU29ja2V0VHlwZSIKICBSb2xlTmFtZTogSVRTTSBDUFUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEZvcm0gRmFjdG9yOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgRm9ybSBGYWN0b3JcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVR5cGVcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0c1xyXG4KICAgIFwgICAtIERGOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGhcclxuICAgIC0gREY6IElUU01Gb3JtRmFjdG9yLVdlaWdodCIKICBSb2xlTmFtZTogSVRTTSBGb3JtIEZhY3RvcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNQXBwbGlhbmNlLUFwcGxpYW5jZVR5cGUiCiAgUm9sZU5hbWU6IElUU00gR0YgQXBwbGlhbmNlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01DZXJ0aWZpY2F0ZS1UeXBlXHJcbiAgICAgIC0gREY6CiAgICBJVFNNQ2VydGlmaWNhdGUtQ3JlYXRpb25EYXRlXHJcbiAgICAgIC0gREY6IElUU01DZXJ0aWZpY2F0ZS1FeHBpcnlEYXRlIgogIFJvbGVOYW1lOiBJVFNNIEdGIENlcnRpZmljYXRlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01DbGllbnQtQ2xpZW50Q2F0ZWdvcnlcclxuICAgICAgLQogICAgREY6IElUU01DbGllbnQtRmlybXdhcmUiCiAgUm9sZU5hbWU6IElUU00gR0YgQ2xpZW50Ci0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBTdW1tYXJ5XHJcbiAgICAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIiCiAgUm9sZU5hbWU6IElUU00gR0YgQ2x1c3RlcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBDb250cmFjdC1UeXBlXHJcbiAgICAgIC0gREY6IENvbnRyYWN0LVBlcmlvZEZyb21cclxuCiAgICBcICAgICAtIERGOiBDb250cmFjdC1QZXJpb2RVbnRpbCIKICBSb2xlTmFtZTogSVRTTSBHRiBDb250cmFjdAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNU29mdHdhcmUtRGF0YWJhc2VUeXBlXHJcbiAgICAgIC0KICAgIERGOiBJVFNNU29mdHdhcmUtRGF0ZVJlbGVhc2VcclxuICAgICAgLSBERjogSVRTTVNvZnR3YXJlLURhdGVFbmRPZlN1cHBvcnQiCiAgUm9sZU5hbWU6IElUU00gR0YgRGF0YWJhc2UKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTURpc3BsYXktU2l6ZUluY2hcclxuICAgICAgLSBERjoKICAgIElUU01EaXNwbGF5LVR5cGVcclxuICAgICAgLSBERjogSVRTTURpc3BsYXktUmVzb2x1dGlvblxyXG4gICAgICAtIERGOiBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5IgogIFJvbGVOYW1lOiBJVFNNIEdGIERpc3BsYXkKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTUlQTmV0d29yay1OZXR3b3JrTGF5ZXJcclxuICAgICAgLQogICAgREY6IElUU01JUE5ldHdvcmstSVBQcm90b2NvbFxyXG4gICAgICAtIERGOiBJVFNNSVBOZXR3b3JrLUFkZHJlc3NBbGxvY2F0aW9uXHJcbgogICAgXCAgICAgLSBERjogSVRTTUlQTmV0d29yay1JUFJhbmdlU3RhcnRcclxuICAgICAgLSBERjogSVRTTUlQTmV0d29yay1JUFJhbmdlRW5kXHJcbgogICAgXCAgICAgLSBERjogSVRTTUlQTmV0d29yay1DSURSIgogIFJvbGVOYW1lOiBJVFNNIEdGIElQIE5ldHdvcmsKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIEdlbmVyYWwgSW5mb3JtYXRpb246XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtCiAgICBIZWFkZXI6IEdlbmVyYWwgSW5mb3JtYXRpb25cclxuICAgICAgLSBERjogSVRTTUxpY2Vuc2UtTGljZW5zZVR5cGVcclxuICAgICAgLQogICAgREY6IElUU01MaWNlbnNlLUxpY2Vuc2VLZXlcclxuICAgICAgLSBERjogSVRTTUxpY2Vuc2UtTGljZW5zZUNvdW50XHJcbiAgICAgIC0KICAgIERGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbVxyXG4gICAgICAtIERGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwiCiAgUm9sZU5hbWU6IElUU00gR0YgTGljZW5zZQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNT3RoZXJBY2Nlc3Nvcmllcy1UeXBlIgogIFJvbGVOYW1lOiBJVFNNIEdGIE90aGVyIEFjY2Vzc29yaWVzCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01QaG9uZS1UeXBlXHJcbiAgICAgIC0gREY6IElUU01QaG9uZS1OdW1iZXIiCiAgUm9sZU5hbWU6IElUU00gR0YgUGhvbmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFJhY2s6XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb1Jvb21cclxuCiAgICBcIEFkZHJlc3M6XHJcbiAgICBUeXBlOiBSZWZlcmVuY2VkU2VjdGlvblxyXG4gICAgUmVmZXJlbmNlRmllbGQ6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbVxyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzcyIKICBSb2xlTmFtZTogSVRTTSBHRiBSYWNrCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHZW5lcmFsIEluZm9ybWF0aW9uOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLQogICAgSGVhZGVyOiBHZW5lcmFsIEluZm9ybWF0aW9uXHJcbiAgICAgIC0gREY6IElUU01TSU0tQ2FyZG51bWJlclxyXG4gICAgICAtIERGOiBJVFNNU0lNLVBJTlxyXG4KICAgIFwgICAgIC0gREY6IElUU01TSU0tUElOMlxyXG4gICAgICAtIERGOiBJVFNNU0lNLVBVS1xyXG4gICAgICAtIERGOiBJVFNNU0lNLVBVSzJcclxuCiAgICBcICAgICAtIERGOiBJVFNNU0lNLU1vYmlsZU51bWJlclxyXG4gICAgICAtIERGOiBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3RcclxuICAgICAgLQogICAgREY6IElUU01TSU0tVHlwZSIKICBSb2xlTmFtZTogSVRTTSBHRiBTSU0gQ2FyZAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgR2VuZXJhbCBJbmZvcm1hdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIEhlYWRlcjogR2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAtIERGOiBJVFNNVVBTLU1heGltdW1Mb2FkQ2FwYWNpdHlcclxuICAgICAgLQogICAgREY6IElUU01VUFMtQmF0dGVyeVR5cGVcclxuICAgICAgLSBERjogSVRTTVVQUy1CYXR0ZXJ5Q2FwYWNpdHkiCiAgUm9sZU5hbWU6IElUU00gR0YgVVBTCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBHcmFwaGljcyBDYXJkOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgR3JhcGhpY3MgQ2FyZHNcclxuICAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yXHJcbiAgICAtIERGOiBJVFNNR3JhcGhpY3NDYXJkLUNvdW50XHJcbgogICAgXCAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVxyXG4gICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCXHJcbgogICAgXCAgICAgUmVhZG9ubHk6IDFcclxuICAgIC0gREY6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZVxyXG4gICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2VcclxuCiAgICBcICAgLSBERjogSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzIgogIFJvbGVOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmQKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIExpY2Vuc2U6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IExpY2Vuc2VcclxuCiAgICBcICAgLSBERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2VcclxuICAgIC0gREY6IElUU00tTGVuc1RvTGljZW5zZVR5cGVcclxuICAgICAgUmVhZG9ubHk6CiAgICAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudFxyXG4gICAgICBSZWFkb25seTogMVxyXG4gICAgLSBERjogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbVxyXG4KICAgIFwgICAgIFJlYWRvbmx5OiAxXHJcbiAgICAtIERGOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbFxyXG4gICAgICBSZWFkb25seToKICAgIDEiCiAgUm9sZU5hbWU6IElUU00gTGljZW5zZQotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTWVtb3J5OlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOiBNZW1vcnlcclxuCiAgICBcICAgLSBERjogSVRTTU1lbW9yeS1Db3VudFxyXG4gICAgLSBERjogSVRTTU1lbW9yeS1DYXBhY2l0eVxyXG4gICAgLSBERjogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCXHJcbgogICAgXCAgICAgUmVhZG9ubHk6IDFcclxuICAgIC0gREY6IElUU01NZW1vcnktQ2xvY2tSYXRlXHJcbiAgICAtIERGOiBJVFNNTWVtb3J5LVR5cGUiCiAgUm9sZU5hbWU6IElUU00gTWVtb3J5Ci0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBNb2RlbDpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjogSGFyZHdhcmUKICAgIE1vZGVsXHJcbiAgICAtIERGOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyXHJcbiAgICAtIERGOiBJVFNNTW9kZWwtTW9kZWxcclxuICAgIC0KICAgIERGOiBJVFNNTW9kZWwtU2VydmljZVRhZ1xyXG4gICAgLSBERjogSVRTTU1vZGVsLVNlcmlhbE51bWJlclxyXG4gICAgLSBERjogSVRTTU1vZGVsLU1vZGVsTm90ZSIKICBSb2xlTmFtZTogSVRTTSBNb2RlbAotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgTmV0d29yayBJbmZvOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgTmV0d29ya1xyXG4gICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvIgogIFJvbGVOYW1lOiBJVFNNIE5ldHdvcmsgSW5mbwotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIE9wZXJhdGluZyBTeXN0ZW1cclxuICAgIC0gREY6IElUU00tUmVmZXJlbmNlVG9PUyIKICBSb2xlTmFtZTogSVRTTSBPcGVyYXRpbmcgU3lzdGVtCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBTZXJ2ZXI6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IFNlcnZlclxyXG4KICAgIFwgICAtIERGOiBJVFNNLVJlZmVyZW5jZVRvU2VydmVyIgogIFJvbGVOYW1lOiBJVFNNIFNlcnZlcgotIERlZmluaXRpb246ICItLS1cclxuU2VjdGlvbnM6XHJcbiAgU2VydmVyIFNvZnR3YXJlOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOgogICAgU2VydmVyIFNvZnR3YXJlXHJcbiAgICAtIERGOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZSIKICBSb2xlTmFtZTogSVRTTSBTZXJ2ZXIgU29mdHdhcmUKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFNJTSBDYXJkOlxyXG4gICAgQ29udGVudDpcclxuICAgIC0gSGVhZGVyOiBTSU0KICAgIENhcmRcclxuICAgIC0gREY6IElUU01TSU0tUmVmZXJlbmNldG9TSU1DYXJkXHJcbiAgICAtIERGOiBJVFNNU0lNLUxlbnN0b1NJTUlNb2JpbGVOdW1iZXIiCiAgUm9sZU5hbWU6IElUU00gU0lNIENhcmQKLSBEZWZpbml0aW9uOiAiLS0tXHJcblNlY3Rpb25zOlxyXG4gIFN0b3JhZ2U6XHJcbiAgICBDb250ZW50OlxyXG4gICAgLSBIZWFkZXI6IFN0b3JhZ2VcclxuCiAgICBcICAgLSBERjogSVRTTVN0b3JhZ2UtU3RvcmFnZSIKICBSb2xlTmFtZTogSVRTTSBTdG9yYWdlCi0gRGVmaW5pdGlvbjogIi0tLVxyXG5TZWN0aW9uczpcclxuICBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAtIEhlYWRlcjoKICAgIFN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24iCiAgUm9sZU5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBDb250cmFjdAogICAgTmFtZTogTGljZW5zZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtCiAgICBOYW1lOiBBY2NvdW50aW5nXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIKICAgIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgTGljZW5zZVxyXG4gIENNREIgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogTGljZW5zZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3VudCBvZiBsaWNlbnNlcwogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01MaWNlbnNlLUxpY2Vuc2VLZXk6CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTGljZW5zZSBLZXkKICAgICAgTmFtZTogSVRTTUxpY2Vuc2UtTGljZW5zZUtleQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb206CiAgICAgIENJQ2xhc3M6IExpY2Vuc2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6IDAKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAwCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMTAnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBMaWNlbnNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQUdQTEFmZmVyb0dlbmVyYWxQdWJsaWNMaWNlbnNlOiBBR1BMIChBZmZlcm8gR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkKICAgICAgICAgIEFwYWNoZUxpY2Vuc2U6IEFwYWNoZSBMaWNlbnNlCiAgICAgICAgICBCU0RMaWNlbnNlQmVya2VsZXlTb2Z0d2FyZURpc3RyaWJ1dGlvbkxpY2Vuc2U6IEJTRCBMaWNlbnNlIChCZXJrZWxleSBTb2Z0d2FyZQogICAgICAgICAgICBEaXN0cmlidXRpb24gTGljZW5zZSkKICAgICAgICAgIENDMENyZWF0aXZlQ29tbW9uc1plcm86IENDMCAoQ3JlYXRpdmUgQ29tbW9ucyBaZXJvKQogICAgICAgICAgQ3JlYXRpdmVDb21tb25zOiBDcmVhdGl2ZSBDb21tb25zCiAgICAgICAgICBFUExFY2xpcHNlUHVibGljTGljZW5zZTogRVBMIChFY2xpcHNlIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgRnJlZXdhcmU6IEZyZWV3YXJlCiAgICAgICAgICBHUExHZW5lcmFsUHVibGljTGljZW5zZTogR1BMIChHZW5lcmFsIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgTEdQTExlc3NlckdlbmVyYWxQdWJsaWNMaWNlbnNlOiBMR1BMIChMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSkKICAgICAgICAgIE1JVExpY2Vuc2U6IE1JVCBMaWNlbnNlCiAgICAgICAgICBNUExNb3ppbGxhUHVibGljTGljZW5zZTogTVBMIChNb3ppbGxhIFB1YmxpYyBMaWNlbnNlKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQZXJwZXR1YWxsaWNlbnNlczogUGVycGV0dWFsIGxpY2Vuc2VzCiAgICAgICAgICBQdWJsaWNEb21haW46IFB1YmxpYyBEb21haW4KICAgICAgICAgIFNlYXRsaWNlbnNlczogU2VhdCBsaWNlbnNlcwogICAgICAgICAgU2hhcmV3YXJlOiBTaGFyZXdhcmUKICAgICAgICAgIFN1YnNjcmlwdGlvbmJhc2VkbGljZW5zZXM6IFN1YnNjcmlwdGlvbi1iYXNlZCBsaWNlbnNlcwogICAgICAgICAgVm9sdW1lbGljZW5zZXM6IFZvbHVtZSBsaWNlbnNlcwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogTW9iaWxlIERldmljZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDNcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTSU0gQ2FyZDo6U0lNCiAgICBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlCiAgICBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQKICAgIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiCiAgICBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywKICAgIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZQogICAgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MKICAgIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOiBJVFNNIE1vZGVsXHJcbiAgSVRTTSBTSU0gQ2FyZDpcclxuCiAgICBcICAgTmFtZTogSVRTTSBTSU0gQ2FyZFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIKICAgIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIKICAgIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBNb2JpbGUgRGV2aWNlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IE1vYmlsZSBEZXZpY2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tTGVuc3RvU0lNSU1vYmlsZU51bWJlcjoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01TSU0tTW9iaWxlTnVtYmVyCiAgICAgICAgUmVmZXJlbmNlREY6IElUU01TSU0tUmVmZXJlbmNldG9TSU1DYXJkCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTVNJTS1SZWZlcmVuY2V0b1NJTUNhcmQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IE1vYmlsZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTVNJTS1MZW5zdG9TSU1JTW9iaWxlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLVJlZmVyZW5jZXRvU0lNQ2FyZDoKICAgICAgQ0lDbGFzczogTW9iaWxlIERldmljZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTSU0gQ2FyZAogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBTSU0gQ2FyZAogICAgICBOYW1lOiBJVFNNU0lNLVJlZmVyZW5jZXRvU0lNQ2FyZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFNvZnR3YXJlCiAgICBOYW1lOiBPcGVyYXRpbmcgU3lzdGVtCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46CiAgICAyXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbgogICAgXCBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6CiAgICBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogT3BlcmF0aW5nIFN5c3RlbQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBPdGhlciBBY2Nlc3NvcmllcwogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBHZW5lcmFsIEZpZWxkczo6R2VuZXJhbCBJbmZvcm1hdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgXHJcbgogICAgXCAtIE5hbWU6IExvY2F0ZWQgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBHZW5lcmFsCiAgICBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIE90aGVyIEFjY2Vzc29yaWVzXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZToKICAgIENNREIgQWNjb3VudGluZ1xyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZAogICAgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbgogICAgXCBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBPdGhlciBBY2Nlc3NvcmllcwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU90aGVyQWNjZXNzb3JpZXMtVHlwZToKICAgICAgQ0lDbGFzczogT3RoZXIgQWNjZXNzb3JpZXMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBDYXJkIFJlYWRlcjogQ2FyZCBSZWFkZXIKICAgICAgICAgIEV4dGVybmFsIEhhcmQgRHJpdmU6IEV4dGVybmFsIEhhcmQgRHJpdmUKICAgICAgICAgIEhlYWRzZXQ6IEhlYWRzZXQKICAgICAgICAgIEtleWJvYXJkOiBLZXlib2FyZAogICAgICAgICAgTW91c2U6IE1vdXNlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFNwZWFrZXJzOiBTcGVha2VycwogICAgICAgICAgVVNCIEh1YjogVVNCIEh1YgogICAgICAgICAgVlIgSGVhZHNldDogVlIgSGVhZHNldAogICAgICAgICAgV2ViY2FtOiBXZWJjYW0KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IElUU01PdGhlckFjY2Vzc29yaWVzLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IE90aGVyIEFjY2Vzc29yaWVzCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IFBob25lCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogM1xyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwKICAgIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuCiAgICBcIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbAogICAgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzCiAgICBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIEdlbmVyYWwKICAgIEZpZWxkczpcclxuICAgIE5hbWU6IElUU00gR0YgUGhvbmVcclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4KICAgIFwgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOgogICAgSVRTTSBOZXR3b3JrIEluZm9cclxuICBDTURCIExvY2F0ZWQgaW46XHJcbiAgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBDTURCCiAgICBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQaG9uZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUGhvbmUKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01QaG9uZS1OdW1iZXI6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQaG9uZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTVBob25lLU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVBob25lLVR5cGU6CiAgICAgIENJQ2xhc3M6IFBob25lCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQW5hbG9nIFBob25lOiBBbmFsb2cgUGhvbmUKICAgICAgICAgIENvbmZlcmVuY2UgUGhvbmU6IENvbmZlcmVuY2UgUGhvbmUKICAgICAgICAgIENvcmRsZXNzIFBob25lIChERUNUIFBob25lKTogQ29yZGxlc3MgUGhvbmUgKERFQ1QgUGhvbmUpCiAgICAgICAgICBMYW5kbGluZSBQaG9uZTogTGFuZGxpbmUgUGhvbmUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2F0ZWxsaXRlIFBob25lOiBTYXRlbGxpdGUgUGhvbmUKICAgICAgICAgIFZvSVAgUGhvbmU6IFZvSVAgUGhvbmUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBQaG9uZSBUeXBlCiAgICAgIE5hbWU6IElUU01QaG9uZS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBQaG9uZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gV29ya3BsYWNlCiAgICBOYW1lOiBQcmludGVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsKICAgIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZQogICAgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28KICAgIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQKICAgIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMKICAgIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoCiAgICB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZQogICAgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4KICAgIFwgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJpbnRlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcmludGVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFByaW50ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogUHJvamVjdG9yCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsKICAgIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIKICAgIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZQogICAgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28KICAgIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQKICAgIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMKICAgIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoCiAgICB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZQogICAgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbgogICAgXCAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4KICAgIFwgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIENNREIgQWNjb3VudGluZzpcclxuCiAgICBcICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4KICAgIFwgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFByb2plY3RvcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBQcm9qZWN0b3IKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogUHJvamVjdG9yCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgLSBMb2NhdGlvbgogICAgLSBOZXR3b3JrIEluZnJhc3RydWN0dXJlCiAgICBOYW1lOiBSYWNrCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgUm9vbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyICAgICAgICBcclxuCiAgICBcICAgICAtIFNlY3Rpb246IEFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00KICAgIEZvcm0gRmFjdG9yOlxyXG4gICAgTmFtZTogSVRTTSBGb3JtIEZhY3RvclxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb25cclxuXHJcblNlY3Rpb25zOlxyXG4KICAgIFwgUm9vbTpcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbVxyXG4gIEFkZHJlc3M6XHJcbgogICAgXCAgIFR5cGU6IFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tXHJcbgogICAgXCAgIFNlY3Rpb25OYW1lOiBBZGRyZXNzXHJcbiAgICBGaWVsZExpc3RQcmU6XHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbSIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoOgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogUmFjawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknCiAgICAgICAgICAnMTAnOiAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJwogICAgICAgICAgJzEyJzogJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknCiAgICAgICAgICAnMTUnOiAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKScKICAgICAgICAgICcxOCc6ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknCiAgICAgICAgICAnMic6ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknCiAgICAgICAgICAnMjAnOiAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJwogICAgICAgICAgJzIyJzogJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKScKICAgICAgICAgICcyNCc6ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKScKICAgICAgICAgICcyNyc6ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKScKICAgICAgICAgICczJzogJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJwogICAgICAgICAgJzMwJzogJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknCiAgICAgICAgICAnMzMnOiAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknCiAgICAgICAgICAnMzYnOiAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknCiAgICAgICAgICAnMzknOiAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknCiAgICAgICAgICAnNCc6ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKScKICAgICAgICAgICc0Mic6ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJwogICAgICAgICAgJzQ1JzogJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJwogICAgICAgICAgJzQ4JzogJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJwogICAgICAgICAgJzUnOiAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknCiAgICAgICAgICAnNic6ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKScKICAgICAgICAgICc3JzogJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKScKICAgICAgICAgICc4JzogJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKScKICAgICAgICAgICc5JzogJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgVW5pdHMgKFUpCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItVHlwZToKICAgICAgQ0lDbGFzczogUmFjawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE5LWluY2ggUmFjazogMTktaW5jaCBSYWNrCiAgICAgICAgICAyMS1pbmNoIFJhY2s6IDIxLWluY2ggUmFjawogICAgICAgICAgMjMtaW5jaCBSYWNrOiAyMy1pbmNoIFJhY2sKICAgICAgICAgIEN1c3RvbSBSYWNrOiBDdXN0b20gUmFjawogICAgICAgICAgRVRTSSBSYWNrOiBFVFNJIFJhY2sKICAgICAgICAgIE1pbmktUmFjazogTWluaS1SYWNrCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRvd2VyOiBUb3dlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEZvcm0gRmFjdG9yCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVdlaWdodDoKICAgICAgQ0lDbGFzczogUmFjawogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Sb29tOgogICAgICBDSUNsYXNzOiBSYWNrCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFJvb20KICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBSb29tCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvUm9vbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIExvY2F0aW9uCiAgICBOYW1lOiBSb29tCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOgogICAgQnVpbGRpbmdcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIEFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOgogICAgM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIgQmFja2xpbmtzOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uXHJcblxyXG5TZWN0aW9uczpcclxuCiAgICBcIEJ1aWxkaW5nOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBERjogTG9jYXRpb24tUmVmZXJlbmNlVG9CdWlsZGluZ1xyXG4gIEFkZHJlc3M6XHJcbgogICAgXCAgIFR5cGU6IFJlZmVyZW5jZWRTZWN0aW9uXHJcbiAgICBSZWZlcmVuY2VGaWVsZDogTG9jYXRpb24tUmVmZXJlbmNlVG9CdWlsZGluZ1xyXG4KICAgIFwgICBTZWN0aW9uTmFtZTogQWRkcmVzc1xyXG4gICAgRmllbGRMaXN0UHJlOlxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nIgogIER5bmFtaWNGaWVsZHM6CiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nOgogICAgICBDSUNsYXNzOiBSb29tCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBCdWlsZGluZwogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0J1aWxkaW5nCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTmV0d29yayBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogUm91dGVyIChGaXJld2FsbCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBSb3dTcGFuOgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsKICAgIEluZm9cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBBY2NvdW50aW5nXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkCiAgICBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbAogICAgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzCiAgICBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00KICAgIE1vZGVsOlxyXG4gICAgTmFtZTogSVRTTSBNb2RlbFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4KICAgIFwgQ01EQiBMb2NhdGVkIGluOlxyXG4gICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOgogICAgSVRTTSBOZXR3b3JrIEluZm9cclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCCiAgICBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCCiAgICBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1hbnVmYWN0dXJlcjoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgQ29sczogJzU3JwogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUm93czogJycKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHRBcmVhCiAgICAgIExhYmVsOiBNb2RlbCBEZXNjcmlwdGlvbgogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWxOb3RlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyOgogICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgREhDUDogREhDUAogICAgICAgICAgICAgICAgREhDUCBSZXNlcnZlZDogREhDUCBSZXNlcnZlZAogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTdGF0aWM6IFN0YXRpYwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFkZHJlc3MgQWxsb2NhdGlvbgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgICAgLSBTd2l0Y2gKICAgICAgICAgICAgICAtIFdMQU4gYWNjZXNzIHBvaW50CiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IENvbm5lY3RlZFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgT2JqZWN0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogRlFETgogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IEFjdGl2ZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogTmV0d29yayBJbmZvcm1hdGlvbgogICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm8KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFJvdXRlciAoRmlyZXdhbGwpCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU2VydmVyCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZwogICAgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcblxyXG4KICAgIFwgLSBOYW1lOiBIYXJkd2FyZVxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuXHJcbiAgLSBOYW1lOiBTb2Z0d2FyZVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZyBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyIFNvZnR3YXJlOjpTZXJ2ZXIgU29mdHdhcmVcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrIEluZm9cclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuICAtIE5hbWU6IEFjY291bnRpbmdcclxuCiAgICBcICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgICAgXHJcbiAgLSBOYW1lOiBMb2NhdGVkCiAgICBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4KICAgIFwgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG5cclxuCiAgICBcIC0gTmFtZTogRGV0YWlsc1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTQogICAgTW9kZWw6Ok1vZGVsXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIENvbnRhY3Q6OkNvbnRhY3RcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE9wZXJhdGluZwogICAgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXIgU29mdHdhcmU6OlNlcnZlciBTb2Z0d2FyZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjo6U3RvcmFnZQogICAgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDVcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzCiAgICBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwKICAgIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UKICAgIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoCiAgICBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24KICAgIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUKICAgIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6CiAgICBJVFNNIE1vZGVsXHJcbiAgSVRTTSBDb250YWN0OlxyXG4gICAgTmFtZTogSVRTTSBDb250YWN0XHJcbiAgQ01EQiBMb2NhdGVkIGluOlxyXG4KICAgIFwgICBOYW1lOiBDTURCIExvY2F0ZWQgaW5cclxuICBJVFNNIE9wZXJhdGluZyBTeXN0ZW06XHJcbiAgICBOYW1lOiBJVFNNIE9wZXJhdGluZwogICAgU3lzdGVtXHJcbiAgSVRTTSBTZXJ2ZXIgU29mdHdhcmU6XHJcbiAgICBOYW1lOiBJVFNNIFNlcnZlciBTb2Z0d2FyZSAgXHJcbiAgSVRTTQogICAgQ1BVOlxyXG4gICAgTmFtZTogSVRTTSBDUFVcclxuICBJVFNNIE1lbW9yeTpcclxuICAgIE5hbWU6IElUU00gTWVtb3J5XHJcbiAgSVRTTQogICAgR3JhcGhpY3MgQ2FyZDpcclxuICAgIE5hbWU6IElUU00gR3JhcGhpY3MgQ2FyZFxyXG4gIElUU00gU3RvcmFnZTpcclxuICAgIE5hbWU6CiAgICBJVFNNIFN0b3JhZ2VcclxuICBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOlxyXG4gICAgTmFtZTogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbgogICAgXCAgIFxyXG4gIElUU00gRm9ybSBGYWN0b3I6XHJcbiAgICBOYW1lOiBJVFNNIEZvcm0gRmFjdG9yXHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbgogICAgXCAgIE5hbWU6IElUU00gTmV0d29yayBJbmZvXHJcbiAgSVRTTSBMaWNlbnNlOlxyXG4gICAgTmFtZTogSVRTTSBMaWNlbnNlXHJcbiAgQ01EQgogICAgQWNjb3VudGluZzpcclxuICAgIE5hbWU6IENNREIgQWNjb3VudGluZ1xyXG4gIENNREIgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQgogICAgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENQVS1DUFVDbGFzczoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIENQVXMKICAgICAgTmFtZTogQ1BVLU51bWJlck9mQ1BVCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtUGh5c2ljYWxDb3JlczoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVGhyZWFkcwogICAgICBOYW1lOiBDUFUtVGhyZWFkcwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tTGVuc1RvTGljZW5zZUNvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZFVudGlsCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIHVudGlsCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIE9wZXJhdGluZyBTeXN0ZW0KICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogT3BlcmF0aW5nIFN5c3RlbQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvT1MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tEZXB0aDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMVU6IDEuNzUgaW5jaGVzICg0LjQ1IGNtKScKICAgICAgICAgICcxMCc6ICcxMFU6IDE3LjUgaW5jaGVzICg0NC40NSBjbSknCiAgICAgICAgICAnMTInOiAnMTJVOiAyMSBpbmNoZXMgKDUzLjM0IGNtKScKICAgICAgICAgICcxNSc6ICcxNVU6IDI2LjI1IGluY2hlcyAoNjYuNjggY20pJwogICAgICAgICAgJzE4JzogJzE4VTogMzEuNSBpbmNoZXMgKDgwLjAxIGNtKScKICAgICAgICAgICcyJzogJzJVOiAzLjUgaW5jaGVzICg4Ljg5IGNtKScKICAgICAgICAgICcyMCc6ICcyMFU6IDM1IGluY2hlcyAoODguOSBjbSknCiAgICAgICAgICAnMjInOiAnMjJVOiAzOC41IGluY2hlcyAoOTcuNzkgY20pJwogICAgICAgICAgJzI0JzogJzI0VTogNDIgaW5jaGVzICgxMDYuNjggY20pJwogICAgICAgICAgJzI3JzogJzI3VTogNDcuMjUgaW5jaGVzICgxMjAuMDIgY20pJwogICAgICAgICAgJzMnOiAnM1U6IDUuMjUgaW5jaGVzICgxMy4zNCBjbSknCiAgICAgICAgICAnMzAnOiAnMzBVOiA1Mi41IGluY2hlcyAoMTMzLjM1IGNtKScKICAgICAgICAgICczMyc6ICczM1U6IDU3Ljc1IGluY2hlcyAoMTQ2LjY4IGNtKScKICAgICAgICAgICczNic6ICczNlU6IDYzIGluY2hlcyAoMTYwLjAyIGNtKScKICAgICAgICAgICczOSc6ICczOVU6IDY4LjI1IGluY2hlcyAoMTczLjM1IGNtKScKICAgICAgICAgICc0JzogJzRVOiA3IGluY2hlcyAoMTcuNzggY20pJwogICAgICAgICAgJzQyJzogJzQyVTogNzMuNSBpbmNoZXMgKDE4Ni42OSBjbSknCiAgICAgICAgICAnNDUnOiAnNDVVOiA3OC43NSBpbmNoZXMgKDIwMC4wMiBjbSknCiAgICAgICAgICAnNDgnOiAnNDhVOiA4NCBpbmNoZXMgKDIxMy4zNiBjbSknCiAgICAgICAgICAnNSc6ICc1VTogOC43NSBpbmNoZXMgKDIyLjIzIGNtKScKICAgICAgICAgICc2JzogJzZVOiAxMC41IGluY2hlcyAoMjYuNjcgY20pJwogICAgICAgICAgJzcnOiAnN1U6IDEyLjI1IGluY2hlcyAoMzEuMTIgY20pJwogICAgICAgICAgJzgnOiAnOFU6IDE0IGluY2hlcyAoMzUuNTYgY20pJwogICAgICAgICAgJzknOiAnOVU6IDE1Ljc1IGluY2hlcyAoNDAuMDEgY20pJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBVbml0cyAoVSkKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItUmFja1VuaXRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAxOS1pbmNoIFJhY2s6IDE5LWluY2ggUmFjawogICAgICAgICAgMjEtaW5jaCBSYWNrOiAyMS1pbmNoIFJhY2sKICAgICAgICAgIDIzLWluY2ggUmFjazogMjMtaW5jaCBSYWNrCiAgICAgICAgICBDdXN0b20gUmFjazogQ3VzdG9tIFJhY2sKICAgICAgICAgIEVUU0kgUmFjazogRVRTSSBSYWNrCiAgICAgICAgICBNaW5pLVJhY2s6IE1pbmktUmFjawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3dlcjogVG93ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBGb3JtIEZhY3RvcgogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1XZWlnaHQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFHUDogQUdQCiAgICAgICAgICBFSVNBOiBFSVNBCiAgICAgICAgICBGaXJlV2lyZUlFRUUxMzk0OiBGaXJlV2lyZSAoSUVFRSAxMzk0KQogICAgICAgICAgSVNBOiBJU0EKICAgICAgICAgIExQQ0xvd1BpbkNvdW50OiBMUEMgKExvdyBQaW4gQ291bnQpCiAgICAgICAgICBNQ0FNaWNyb0NoYW5uZWxBcmNoaXRlY3R1cmU6IE1DQSAoTWljcm8gQ2hhbm5lbCBBcmNoaXRlY3R1cmUpCiAgICAgICAgICBOdUJ1czogTnVCdXMKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUENJOiBQQ0kKICAgICAgICAgIFBDSUV4cHJlc3NQQ0llOiBQQ0kgRXhwcmVzcyAoUENJZSkKICAgICAgICAgIFBDSVg6IFBDSS1YCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBVU0JVbml2ZXJzYWxTZXJpYWxCdXM6IFVTQiAoVW5pdmVyc2FsIFNlcmlhbCBCdXMpCiAgICAgICAgICBWRVNBTG9jYWxCdXNWTEI6IFZFU0EgTG9jYWwgQnVzIChWTEIpCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQnVzIEludGVyZmFjZQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLUJ1c0ludGVyZmFjZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Db3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAxIEdCCiAgICAgICAgICAnMTEnOiAxMSBHQgogICAgICAgICAgJzEyOCc6IDEyOCBHQgogICAgICAgICAgJzE2JzogMTYgR0IKICAgICAgICAgICcyJzogMiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNCc6IDQgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDYXBhY2l0eSBwZXIgZ3JhcGhpY3MgY2FyZAogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgR0REUjU6IEdERFI1CiAgICAgICAgICBHRERSNVg6IEdERFI1WAogICAgICAgICAgR0REUjY6IEdERFI2CiAgICAgICAgICBHRERSNlg6IEdERFI2WAogICAgICAgICAgSEJNMjogSEJNMgogICAgICAgICAgSEJNMkU6IEhCTTJFCiAgICAgICAgICBIQk1IaWdoQmFuZHdpZHRoTWVtb3J5OiBIQk0gKEhpZ2ggQmFuZHdpZHRoIE1lbW9yeSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1lbW9yeSBUeXBlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudFwiICVdWyUgQ2FwYWNpdHkKICAgICAgICAgID0gXCJEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplXCIgJV1cclxuWyUgVG90YWwgPSBEYXRhLiRDb3VudAogICAgICAgICAgKiBEYXRhLiRDYXBhY2l0eSAlXVxyXG5bJSBUb3RhbCAlXSBHQiIKICAgICAgICBJbnRlcnByZXRlcjogfgogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgUmVhZG9ubHk6ICcxJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSZXF1aXJlZEFyZ3M6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gTmFtZVVwZGF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25DcmVhdGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIEdyYXBoaWNzIGNhcmQgUkFNIChHQikKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LUNhcGFjaXR5OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAyNCc6IDEwMjQgR0IKICAgICAgICAgICcxMic6IDEyIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgJzk2JzogOTYgR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1DbG9ja1JhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgUkFNIG1vZHVsZXMKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnRcIiAlXVslIENhcGFjaXR5ID0KICAgICAgICAgIFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHlcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50ICogRGF0YS4kQ2FwYWNpdHkKICAgICAgICAgICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25EZWxldGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlciBTb2Z0d2FyZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyIFNvZnR3YXJlCiAgICAgIE5hbWU6IElUU01TZXJ2ZXJTb2Z0d2FyZS1SZWZlcmVuY2VUb1NlcnZlclNvZnR3YXJlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZS1TdG9yYWdlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBBREFUQTogQURBVEEKICAgICAgICAgICAgICAgIEFEQVRBVGVjaG5vbG9neTogQURBVEEgVGVjaG5vbG9neQogICAgICAgICAgICAgICAgQXBhY2VyOiBBcGFjZXIKICAgICAgICAgICAgICAgIEJ1ZmZhbG86IEJ1ZmZhbG8KICAgICAgICAgICAgICAgIENvcnNhaXI6IENvcnNhaXIKICAgICAgICAgICAgICAgIENydWNpYWxNaWNyb246IENydWNpYWwgKE1pY3JvbikKICAgICAgICAgICAgICAgIEdUZWNobm9sb2d5V2VzdGVybkRpZ2l0YWw6IEctVGVjaG5vbG9neSAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSEdTVFdlc3Rlcm5EaWdpdGFsOiBIR1NUIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIaXRhY2hpOiBIaXRhY2hpCiAgICAgICAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgICAgICAgIEtpbmdzdG9uOiBLaW5nc3RvbgogICAgICAgICAgICAgICAgS2luZ3N0b25EaWdpdGFsOiBLaW5nc3RvbiBEaWdpdGFsCiAgICAgICAgICAgICAgICBMYUNpZVNlYWdhdGU6IExhQ2llIChTZWFnYXRlKQogICAgICAgICAgICAgICAgTGV4YXI6IExleGFyCiAgICAgICAgICAgICAgICBNYXh0b3I6IE1heHRvcgogICAgICAgICAgICAgICAgT0NaVG9zaGliYTogT0NaIChUb3NoaWJhKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBQTlk6IFBOWQogICAgICAgICAgICAgICAgUGxleHRvcjogUGxleHRvcgogICAgICAgICAgICAgICAgU0toeW5peDogU0sgaHluaXgKICAgICAgICAgICAgICAgIFNhbXN1bmc6IFNhbXN1bmcKICAgICAgICAgICAgICAgIFNhbXN1bmdTZW1pY29uZHVjdG9yOiBTYW1zdW5nIFNlbWljb25kdWN0b3IKICAgICAgICAgICAgICAgIFNhbkRpc2tXZXN0ZXJuRGlnaXRhbDogU2FuRGlzayAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgU2VhZ2F0ZTogU2VhZ2F0ZQogICAgICAgICAgICAgICAgU2lsaWNvblBvd2VyOiBTaWxpY29uIFBvd2VyCiAgICAgICAgICAgICAgICBTb255OiBTb255CiAgICAgICAgICAgICAgICBTdXBlclRhbGVudDogU3VwZXIgVGFsZW50CiAgICAgICAgICAgICAgICBUZWFtR3JvdXA6IFRlYW0gR3JvdXAKICAgICAgICAgICAgICAgIFRvc2hpYmE6IFRvc2hpYmEKICAgICAgICAgICAgICAgIFRyYW5zY2VuZDogVHJhbnNjZW5kCiAgICAgICAgICAgICAgICBXZXN0ZXJuRGlnaXRhbDogV2VzdGVybiBEaWdpdGFsCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBNYW51ZmFjdHVyZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBTZXJpYWxOdW1iZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZQogICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TdG9yYWdlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb246CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIEZyZWUgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIE1vdW50IFBvaW50CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlIFBhcnRpdGlvbgogICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1QYXJ0aXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb246CiAgICAgIENJQ2xhc3M6IFNlcnZlcgogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFNlcnZlciAodmlydHVhbCkKICAgIE51bWJlck1vZHVsZTogQXV0b0luY3JlbWVudAogICAgUGVybWlzc2lvbkdyb3VwOiBpdHNtLWNvbmZpZ2l0ZW0KICAgIFZlcnNpb25TdHJpbmdNb2R1bGU6IEluY3JlbWVudGFsCiAgRGVmaW5pdGlvbjogIi0tLVxyXG5QYWdlczpcclxuICAjIFRoZSBpbmRpdmlkdWFsIHRhYnMgaW4gQWdlbnRJVFNNQ29uZmlnSXRlbVpvb20KICAgIGFyZSBjYWxsZWQgUGFnZXMuXHJcbiAgIyBUaGUgZmllbGRzIHRvIGJlIGRpc3BsYXllZCB0aGVyZSBhcmUgZGVmaW5lZCBpbiB0aGUgcm9sZXMKICAgIFxyXG4gICMgbGlzdGVkIG9uIHRoZSBsZWZ0IHVuZGVyIFwiUm9sZXNcIi5cclxuICAtIE5hbWU6IFN1bW1hcnlcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmciAxZnJcclxuICAgICAgQ29sdW1uczogM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLQogICAgQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE1vZGVsOjpNb2RlbFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IEhhcmR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UgUGFydGl0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIEZvcm0gRmFjdG9yOjpGb3JtIEZhY3RvclxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG5cclxuICAtIE5hbWU6IFNvZnR3YXJlXHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTZXJ2ZXIgU29mdHdhcmU6OlNlcnZlciBTb2Z0d2FyZVxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuICAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIEFjY291bnRpbmc6OkFjY291bnRpbmdcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgICBcclxuICAtIE5hbWU6IExvY2F0ZWQKICAgIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4KICAgIFwgLSBOYW1lOiBEZXRhaWxzXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgM1xyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ1BVOjpDUFVcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTWVtb3J5OjpNZW1vcnlcclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gR3JhcGhpY3MgQ2FyZDo6R3JhcGhpY3MgQ2FyZFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW06Ok9wZXJhdGluZyBTeXN0ZW1cclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlOjpTdG9yYWdlXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uOjpTdG9yYWdlCiAgICBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbiAgICAgICAgUm93U3RhcnQ6IDRcclxuICAgICAgICBDb2x1bW5TdGFydDogM1xyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogNVxyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TcGFuOiAyXHJcbiAgICAgICAgXHJcblJvbGVzOlxyXG4gICMgUm9sZXMKICAgIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMgT2YgY291cnNlLAogICAgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4gXHJcbiAgIyBXZQogICAgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4gICMgRm9yIGVhY2gKICAgIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4gICMgZGVmaW5pdGlvbgogICAgcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4gICMgVGhpcyBpcyB3aGVyZQogICAgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNIE1vZGVsOlxyXG4gICAgTmFtZToKICAgIElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQgaW46XHJcbgogICAgXCAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gT3BlcmF0aW5nIFN5c3RlbTpcclxuICAgIE5hbWU6IElUU00gT3BlcmF0aW5nCiAgICBTeXN0ZW1cclxuICBJVFNNIFNlcnZlciBTb2Z0d2FyZTpcclxuICAgIE5hbWU6IElUU00gU2VydmVyIFNvZnR3YXJlICBcclxuICBJVFNNCiAgICBDUFU6XHJcbiAgICBOYW1lOiBJVFNNIENQVVxyXG4gIElUU00gTWVtb3J5OlxyXG4gICAgTmFtZTogSVRTTSBNZW1vcnlcclxuICBJVFNNCiAgICBHcmFwaGljcyBDYXJkOlxyXG4gICAgTmFtZTogSVRTTSBHcmFwaGljcyBDYXJkXHJcbiAgSVRTTSBTdG9yYWdlOlxyXG4gICAgTmFtZToKICAgIElUU00gU3RvcmFnZVxyXG4gIElUU00gU3RvcmFnZSBQYXJ0aXRpb246XHJcbiAgICBOYW1lOiBJVFNNIFN0b3JhZ2UgUGFydGl0aW9uCiAgICBcICAgXHJcbiAgSVRTTSBGb3JtIEZhY3RvcjpcclxuICAgIE5hbWU6IElUU00gRm9ybSBGYWN0b3JcclxuICBJVFNNIE5ldHdvcmsgSW5mbzpcclxuCiAgICBcICAgTmFtZTogSVRTTSBOZXR3b3JrIEluZm9cclxuICBJVFNNIExpY2Vuc2U6XHJcbiAgICBOYW1lOiBJVFNNIExpY2Vuc2VcclxuICBDTURCCiAgICBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCCiAgICBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ1BVLUNQVUNsYXNzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRGVza3RvcDogRGVza3RvcAogICAgICAgICAgTGFwdG9wOiBMYXB0b3AKICAgICAgICAgIE1vYmlsZUVtYmVkZGVkOiBNb2JpbGUvRW1iZWRkZWQKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU2VydmVyOiBTZXJ2ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDUFUgQ2xhc3MKICAgICAgTmFtZTogQ1BVLUNQVUNsYXNzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtQ2xvY2tzcGVlZDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE2R0h6OiAxLjYgR0h6CiAgICAgICAgICAxN0dIejogMS43IEdIegogICAgICAgICAgMThHSHo6IDEuOCBHSHoKICAgICAgICAgIDE5R0h6OiAxLjkgR0h6CiAgICAgICAgICAyMEdIejogMi4wIEdIegogICAgICAgICAgMjFHSHo6IDIuMSBHSHoKICAgICAgICAgIDIyR0h6OiAyLjIgR0h6CiAgICAgICAgICAyM0dIejogMi4zIEdIegogICAgICAgICAgMjRHSHo6IDIuNCBHSHoKICAgICAgICAgIDI1R0h6OiAyLjUgR0h6CiAgICAgICAgICAyNkdIejogMi42IEdIegogICAgICAgICAgMjdHSHo6IDIuNyBHSHoKICAgICAgICAgIDI4R0h6OiAyLjggR0h6CiAgICAgICAgICAyOUdIejogMi45IEdIegogICAgICAgICAgMzBHSHo6IDMuMCBHSHoKICAgICAgICAgIDMxR0h6OiAzLjEgR0h6CiAgICAgICAgICAzMkdIejogMy4yIEdIegogICAgICAgICAgMzNHSHo6IDMuMyBHSHoKICAgICAgICAgIDM0R0h6OiAzLjQgR0h6CiAgICAgICAgICAzNUdIejogMy41IEdIegogICAgICAgICAgMzZHSHo6IDMuNiBHSHoKICAgICAgICAgIDM3R0h6OiAzLjcgR0h6CiAgICAgICAgICAzOEdIejogMy44IEdIegogICAgICAgICAgMzlHSHo6IDMuOSBHSHoKICAgICAgICAgIDQwR0h6OiA0LjAgR0h6CiAgICAgICAgICA0MUdIejogNC4xIEdIegogICAgICAgICAgNDJHSHo6IDQuMiBHSHoKICAgICAgICAgIDQzR0h6OiA0LjMgR0h6CiAgICAgICAgICA0NEdIejogNC40IEdIegogICAgICAgICAgNDVHSHo6IDQuNSBHSHoKICAgICAgICAgIDQ2R0h6OiA0LjYgR0h6CiAgICAgICAgICA0N0dIejogNC43IEdIegogICAgICAgICAgNDhHSHo6IDQuOCBHSHoKICAgICAgICAgIDQ5R0h6OiA0LjkgR0h6CiAgICAgICAgICA1MEdIejogNS4wIEdIegogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tzcGVlZAogICAgICBOYW1lOiBDUFUtQ2xvY2tzcGVlZAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLU51bWJlck9mQ1BVOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgQ1BVcwogICAgICBOYW1lOiBDUFUtTnVtYmVyT2ZDUFUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1QaHlzaWNhbENvcmVzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBoeXNpY2FsIENvcmVzCiAgICAgIE5hbWU6IENQVS1QaHlzaWNhbENvcmVzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtU29ja2V0VHlwZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFNNDogQU00CiAgICAgICAgICBCR0E6IEJHQQogICAgICAgICAgTEdBMTE1MTogTEdBMTE1MQogICAgICAgICAgTEdBMTIwMDogTEdBMTIwMAogICAgICAgICAgTEdBMTM2NjogTEdBMTM2NgogICAgICAgICAgTEdBMTcwMDogTEdBMTcwMAogICAgICAgICAgTEdBMjAxMTogTEdBMjAxMQogICAgICAgICAgTEdBMjAxMTM6IExHQTIwMTEtMwogICAgICAgICAgTEdBMjA2NjogTEdBMjA2NgogICAgICAgICAgTEdBNzc1OiBMR0E3NzUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUEdBOiBQR0EKICAgICAgICAgIFNvY2tldDM3MDogU29ja2V0IDM3MAogICAgICAgICAgU29ja2V0NDc4OiBTb2NrZXQgNDc4CiAgICAgICAgICBUUjQ6IFRSNAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFNvY2tldCBUeXBlCiAgICAgIE5hbWU6IENQVS1Tb2NrZXRUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtVGhyZWFkczoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzEnCiAgICAgICAgICAnMTAnOiAnMTAnCiAgICAgICAgICAnMTEnOiAnMTEnCiAgICAgICAgICAnMTInOiAnMTInCiAgICAgICAgICAnMTMnOiAnMTMnCiAgICAgICAgICAnMTQnOiAnMTQnCiAgICAgICAgICAnMTUnOiAnMTUnCiAgICAgICAgICAnMTYnOiAnMTYnCiAgICAgICAgICAnMTcnOiAnMTcnCiAgICAgICAgICAnMTgnOiAnMTgnCiAgICAgICAgICAnMTknOiAnMTknCiAgICAgICAgICAnMic6ICcyJwogICAgICAgICAgJzIwJzogJzIwJwogICAgICAgICAgJzIxJzogJzIxJwogICAgICAgICAgJzIyJzogJzIyJwogICAgICAgICAgJzIzJzogJzIzJwogICAgICAgICAgJzI0JzogJzI0JwogICAgICAgICAgJzI1JzogJzI1JwogICAgICAgICAgJzI2JzogJzI2JwogICAgICAgICAgJzI3JzogJzI3JwogICAgICAgICAgJzI4JzogJzI4JwogICAgICAgICAgJzI5JzogJzI5JwogICAgICAgICAgJzMnOiAnMycKICAgICAgICAgICczMCc6ICczMCcKICAgICAgICAgICczMSc6ICczMScKICAgICAgICAgICczMic6ICczMicKICAgICAgICAgICczMyc6ICczMycKICAgICAgICAgICczNCc6ICczNCcKICAgICAgICAgICczNSc6ICczNScKICAgICAgICAgICczNic6ICczNicKICAgICAgICAgICczNyc6ICczNycKICAgICAgICAgICczOCc6ICczOCcKICAgICAgICAgICczOSc6ICczOScKICAgICAgICAgICc0JzogJzQnCiAgICAgICAgICAnNDAnOiAnNDAnCiAgICAgICAgICAnNDEnOiAnNDEnCiAgICAgICAgICAnNDInOiAnNDInCiAgICAgICAgICAnNDMnOiAnNDMnCiAgICAgICAgICAnNDQnOiAnNDQnCiAgICAgICAgICAnNDUnOiAnNDUnCiAgICAgICAgICAnNDYnOiAnNDYnCiAgICAgICAgICAnNDcnOiAnNDcnCiAgICAgICAgICAnNDgnOiAnNDgnCiAgICAgICAgICAnNSc6ICc1JwogICAgICAgICAgJzYnOiAnNicKICAgICAgICAgICc3JzogJzcnCiAgICAgICAgICAnOCc6ICc4JwogICAgICAgICAgJzknOiAnOScKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBUaHJlYWRzCiAgICAgIE5hbWU6IENQVS1UaHJlYWRzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LUFkbWluaXN0cmF0b3I6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IEN1c3RvbWVyCiAgICAgIE5hbWU6IENvbnRhY3QtVXNlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlQ291bnQKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBDb3VudAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kRnJvbQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlVHlwZQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIFR5cGUKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gTGljZW5zZQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMaWNlbnNlCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLVJlZmVyZW5jZVRvT1M6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gT3BlcmF0aW5nIFN5c3RlbQogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBPcGVyYXRpbmcgU3lzdGVtCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9PUwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctQ29zdFVuaXQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlbnRvcnkgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcGVyYXRpbmcgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZToKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IEN1c3RvbWVyQ29tcGFueU5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICBMYWJlbDogUHVyY2hhc2VkIGF0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tEZXB0aDoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDIzLjYgaW5jaGVzICg2MDAgbW0pOiAyMy42IGluY2hlcyAoNjAwIG1tKQogICAgICAgICAgMzEuNSBpbmNoZXMgKDgwMCBtbSk6IDMxLjUgaW5jaGVzICg4MDAgbW0pCiAgICAgICAgICAzNS40IGluY2hlcyAoOTAwIG1tKTogMzUuNCBpbmNoZXMgKDkwMCBtbSkKICAgICAgICAgIDM5LjQgaW5jaGVzICgxMDAwIG1tKTogMzkuNCBpbmNoZXMgKDEwMDAgbW0pCiAgICAgICAgICA0My4zIGluY2hlcyAoMTEwMCBtbSk6ICc0My4zIGluY2hlcyAoMTEwMCBtbSk6JwogICAgICAgICAgNDcuMiBpbmNoZXMgKDEyMDAgbW0pOiA0Ny4yIGluY2hlcyAoMTIwMCBtbSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgRGVwdGgKICAgICAgTmFtZTogSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1SYWNrVW5pdHM6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxVTogMS43NSBpbmNoZXMgKDQuNDUgY20pJwogICAgICAgICAgJzEwJzogJzEwVTogMTcuNSBpbmNoZXMgKDQ0LjQ1IGNtKScKICAgICAgICAgICcxMic6ICcxMlU6IDIxIGluY2hlcyAoNTMuMzQgY20pJwogICAgICAgICAgJzE1JzogJzE1VTogMjYuMjUgaW5jaGVzICg2Ni42OCBjbSknCiAgICAgICAgICAnMTgnOiAnMThVOiAzMS41IGluY2hlcyAoODAuMDEgY20pJwogICAgICAgICAgJzInOiAnMlU6IDMuNSBpbmNoZXMgKDguODkgY20pJwogICAgICAgICAgJzIwJzogJzIwVTogMzUgaW5jaGVzICg4OC45IGNtKScKICAgICAgICAgICcyMic6ICcyMlU6IDM4LjUgaW5jaGVzICg5Ny43OSBjbSknCiAgICAgICAgICAnMjQnOiAnMjRVOiA0MiBpbmNoZXMgKDEwNi42OCBjbSknCiAgICAgICAgICAnMjcnOiAnMjdVOiA0Ny4yNSBpbmNoZXMgKDEyMC4wMiBjbSknCiAgICAgICAgICAnMyc6ICczVTogNS4yNSBpbmNoZXMgKDEzLjM0IGNtKScKICAgICAgICAgICczMCc6ICczMFU6IDUyLjUgaW5jaGVzICgxMzMuMzUgY20pJwogICAgICAgICAgJzMzJzogJzMzVTogNTcuNzUgaW5jaGVzICgxNDYuNjggY20pJwogICAgICAgICAgJzM2JzogJzM2VTogNjMgaW5jaGVzICgxNjAuMDIgY20pJwogICAgICAgICAgJzM5JzogJzM5VTogNjguMjUgaW5jaGVzICgxNzMuMzUgY20pJwogICAgICAgICAgJzQnOiAnNFU6IDcgaW5jaGVzICgxNy43OCBjbSknCiAgICAgICAgICAnNDInOiAnNDJVOiA3My41IGluY2hlcyAoMTg2LjY5IGNtKScKICAgICAgICAgICc0NSc6ICc0NVU6IDc4Ljc1IGluY2hlcyAoMjAwLjAyIGNtKScKICAgICAgICAgICc0OCc6ICc0OFU6IDg0IGluY2hlcyAoMjEzLjM2IGNtKScKICAgICAgICAgICc1JzogJzVVOiA4Ljc1IGluY2hlcyAoMjIuMjMgY20pJwogICAgICAgICAgJzYnOiAnNlU6IDEwLjUgaW5jaGVzICgyNi42NyBjbSknCiAgICAgICAgICAnNyc6ICc3VTogMTIuMjUgaW5jaGVzICgzMS4xMiBjbSknCiAgICAgICAgICAnOCc6ICc4VTogMTQgaW5jaGVzICgzNS41NiBjbSknCiAgICAgICAgICAnOSc6ICc5VTogMTUuNzUgaW5jaGVzICg0MC4wMSBjbSknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBSYWNrIFVuaXRzIChVKQogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrVW5pdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAxOS1pbmNoIFJhY2s6IDE5LWluY2ggUmFjawogICAgICAgICAgMjEtaW5jaCBSYWNrOiAyMS1pbmNoIFJhY2sKICAgICAgICAgIDIzLWluY2ggUmFjazogMjMtaW5jaCBSYWNrCiAgICAgICAgICBDdXN0b20gUmFjazogQ3VzdG9tIFJhY2sKICAgICAgICAgIEVUU0kgUmFjazogRVRTSSBSYWNrCiAgICAgICAgICBNaW5pLVJhY2s6IE1pbmktUmFjawogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3dlcjogVG93ZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBGb3JtIEZhY3RvcgogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRm9ybUZhY3Rvci1XZWlnaHQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEhhcmR3YXJlIFdlaWdodAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1XZWlnaHQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQUdQOiBBR1AKICAgICAgICAgIEVJU0E6IEVJU0EKICAgICAgICAgIEZpcmVXaXJlSUVFRTEzOTQ6IEZpcmVXaXJlIChJRUVFIDEzOTQpCiAgICAgICAgICBJU0E6IElTQQogICAgICAgICAgTFBDTG93UGluQ291bnQ6IExQQyAoTG93IFBpbiBDb3VudCkKICAgICAgICAgIE1DQU1pY3JvQ2hhbm5lbEFyY2hpdGVjdHVyZTogTUNBIChNaWNybyBDaGFubmVsIEFyY2hpdGVjdHVyZSkKICAgICAgICAgIE51QnVzOiBOdUJ1cwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQQ0k6IFBDSQogICAgICAgICAgUENJRXhwcmVzc1BDSWU6IFBDSSBFeHByZXNzIChQQ0llKQogICAgICAgICAgUENJWDogUENJLVgKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFVTQlVuaXZlcnNhbFNlcmlhbEJ1czogVVNCIChVbml2ZXJzYWwgU2VyaWFsIEJ1cykKICAgICAgICAgIFZFU0FMb2NhbEJ1c1ZMQjogVkVTQSBMb2NhbCBCdXMgKFZMQikKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBCdXMgSW50ZXJmYWNlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQnVzSW50ZXJmYWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLUNvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIGdyYXBoaWNzIGNhcmRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU1EUmFkZW9uSEQ2NzUwOiBBTUQgUmFkZW9uIEhEIDY3NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjc3MDogQU1EIFJhZGVvbiBIRCA2NzcwCiAgICAgICAgICBBTURSYWRlb25IRDY3OTA6IEFNRCBSYWRlb24gSEQgNjc5MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODUwOiBBTUQgUmFkZW9uIEhEIDY4NTAKICAgICAgICAgIEFNRFJhZGVvbkhENjg3MDogQU1EIFJhZGVvbiBIRCA2ODcwCiAgICAgICAgICBBTURSYWRlb25IRDY5NTA6IEFNRCBSYWRlb24gSEQgNjk1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTcwOiBBTUQgUmFkZW9uIEhEIDY5NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk5MDogQU1EIFJhZGVvbiBIRCA2OTkwCiAgICAgICAgICBBTURSYWRlb25IRDc3NTA6IEFNRCBSYWRlb24gSEQgNzc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzcwOiBBTUQgUmFkZW9uIEhEIDc3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzc5MDogQU1EIFJhZGVvbiBIRCA3NzkwCiAgICAgICAgICBBTURSYWRlb25IRDc4NTA6IEFNRCBSYWRlb24gSEQgNzg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ3ODcwOiBBTUQgUmFkZW9uIEhEIDc4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENzk1MDogQU1EIFJhZGVvbiBIRCA3OTUwCiAgICAgICAgICBBTURSYWRlb25IRDc5NzA6IEFNRCBSYWRlb24gSEQgNzk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTkwOiBBTUQgUmFkZW9uIEhEIDc5OTAKICAgICAgICAgIEFNRFJhZGVvblByb0R1bzogQU1EIFJhZGVvbiBQcm8gRHVvCiAgICAgICAgICBBTURSYWRlb25Qcm9TU0c6IEFNRCBSYWRlb24gUHJvIFNTRwogICAgICAgICAgQU1EUmFkZW9uUHJvV1gyMTAwOiBBTUQgUmFkZW9uIFBybyBXWCAyMTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDMxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDMxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNDEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNDEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g1MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA1MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDcxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDcxMDAKICAgICAgICAgIEFNRFJhZGVvblI1MjEwOiBBTUQgUmFkZW9uIFI1IDIxMAogICAgICAgICAgQU1EUmFkZW9uUjUyMjA6IEFNRCBSYWRlb24gUjUgMjIwCiAgICAgICAgICBBTURSYWRlb25SNTIzMDogQU1EIFJhZGVvbiBSNSAyMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzIwOiBBTUQgUmFkZW9uIFI1IDMyMAogICAgICAgICAgQU1EUmFkZW9uUjUzMzA6IEFNRCBSYWRlb24gUjUgMzMwCiAgICAgICAgICBBTURSYWRlb25SNTM0MDogQU1EIFJhZGVvbiBSNSAzNDAKICAgICAgICAgIEFNRFJhZGVvblI3MjQwOiBBTUQgUmFkZW9uIFI3IDI0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNTA6IEFNRCBSYWRlb24gUjcgMjUwCiAgICAgICAgICBBTURSYWRlb25SNzI1MFg6IEFNRCBSYWRlb24gUjcgMjUwWAogICAgICAgICAgQU1EUmFkZW9uUjcyNjBYOiBBTUQgUmFkZW9uIFI3IDI2MFgKICAgICAgICAgIEFNRFJhZGVvblI3MzQwOiBBTUQgUmFkZW9uIFI3IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjczNTA6IEFNRCBSYWRlb24gUjcgMzUwCiAgICAgICAgICBBTURSYWRlb25SNzM2MDogQU1EIFJhZGVvbiBSNyAzNjAKICAgICAgICAgIEFNRFJhZGVvblI3MzcwOiBBTUQgUmFkZW9uIFI3IDM3MAogICAgICAgICAgQU1EUmFkZW9uUjkyODU6IEFNRCBSYWRlb24gUjkgMjg1CiAgICAgICAgICBBTURSYWRlb25SOTI5MDogQU1EIFJhZGVvbiBSOSAyOTAKICAgICAgICAgIEFNRFJhZGVvblI5MjkwWDogQU1EIFJhZGVvbiBSOSAyOTBYCiAgICAgICAgICBBTURSYWRlb25SOTI5NVgyOiBBTUQgUmFkZW9uIFI5IDI5NVgyCiAgICAgICAgICBBTURSYWRlb25SOTM4MDogQU1EIFJhZGVvbiBSOSAzODAKICAgICAgICAgIEFNRFJhZGVvblI5MzgwWDogQU1EIFJhZGVvbiBSOSAzODBYCiAgICAgICAgICBBTURSYWRlb25SOTM5MDogQU1EIFJhZGVvbiBSOSAzOTAKICAgICAgICAgIEFNRFJhZGVvblI5MzkwWDogQU1EIFJhZGVvbiBSOSAzOTBYCiAgICAgICAgICBBTURSYWRlb25SOUZ1cnlYOiBBTUQgUmFkZW9uIFI5IEZ1cnkgWAogICAgICAgICAgQU1EUmFkZW9uUjlOYW5vOiBBTUQgUmFkZW9uIFI5IE5hbm8KICAgICAgICAgIEFNRFJhZGVvblJYNTQwMFhUOiBBTUQgUmFkZW9uIFJYIDU0MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMDogQU1EIFJhZGVvbiBSWCA1NTAwCiAgICAgICAgICBBTURSYWRlb25SWDU1MDBYVDogQU1EIFJhZGVvbiBSWCA1NTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU2MDA6IEFNRCBSYWRlb24gUlggNTYwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NjAwWFQ6IEFNRCBSYWRlb24gUlggNTYwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NzA6IEFNRCBSYWRlb24gUlggNTcwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDA6IEFNRCBSYWRlb24gUlggNTcwMAogICAgICAgICAgQU1EUmFkZW9uUlg1NzAwWFQ6IEFNRCBSYWRlb24gUlggNTcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1ODA6IEFNRCBSYWRlb24gUlggNTgwCiAgICAgICAgICBBTURSYWRlb25SWDU5MDogQU1EIFJhZGVvbiBSWCA1OTAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMDogQU1EIFJhZGVvbiBSWCA2NjAwCiAgICAgICAgICBBTURSYWRlb25SWDY2MDBYVDogQU1EIFJhZGVvbiBSWCA2NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY3MDA6IEFNRCBSYWRlb24gUlggNjcwMAogICAgICAgICAgQU1EUmFkZW9uUlg2NzAwWFQ6IEFNRCBSYWRlb24gUlggNjcwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2ODAwWFQ6IEFNRCBSYWRlb24gUlggNjgwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg2OTAwWFQ6IEFNRCBSYWRlb24gUlggNjkwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNTY6IEFNRCBSYWRlb24gUlggVmVnYSA1NgogICAgICAgICAgQU1EUmFkZW9uUlhWZWdhNjQ6IEFNRCBSYWRlb24gUlggVmVnYSA2NAogICAgICAgICAgTlZJRElBR2VGb3JjZTIxMDogTlZJRElBIEdlRm9yY2UgMjEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1QxMDMwOiBOVklESUEgR2VGb3JjZSBHVCAxMDMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MTA6IE5WSURJQSBHZUZvcmNlIEdUIDUxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTIwOiBOVklESUEgR2VGb3JjZSBHVCA1MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUzMDogTlZJRElBIEdlRm9yY2UgR1QgNTMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1NDU6IE5WSURJQSBHZUZvcmNlIEdUIDU0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjEwOiBOVklESUEgR2VGb3JjZSBHVCA2MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYyMDogTlZJRElBIEdlRm9yY2UgR1QgNjIwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MzA6IE5WSURJQSBHZUZvcmNlIEdUIDYzMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjQwOiBOVklESUEgR2VGb3JjZSBHVCA2NDAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDcxMDogTlZJRElBIEdlRm9yY2UgR1QgNzEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q3MzA6IE5WSURJQSBHZUZvcmNlIEdUIDczMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwNjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA3MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDgwOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDEwODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjUwOiBOVklESUEgR2VGb3JjZSBHVFggMTY1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NjA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTY2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc0NTogTlZJRElBIEdlRm9yY2UgR1RYIDc0NQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MDogTlZJRElBIEdlRm9yY2UgR1RYIDc1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc1MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwOiBOVklESUEgR2VGb3JjZSBHVFggNzYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NzA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODA6IE5WSURJQSBHZUZvcmNlIEdUWCA3ODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3ODBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk1MDogTlZJRElBIEdlRm9yY2UgR1RYIDk1MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk2MDogTlZJRElBIEdlRm9yY2UgR1RYIDk2MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk3MDogTlZJRElBIEdlRm9yY2UgR1RYIDk3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MDogTlZJRElBIEdlRm9yY2UgR1RYIDk4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDk4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggOTgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgxNTA6IE5WSURJQSBHZUZvcmNlIE1YMTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVgzNTA6IE5WSURJQSBHZUZvcmNlIE1YMzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlTVg0NTA6IE5WSURJQSBHZUZvcmNlIE1YNDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA2MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMjA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMjA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNTA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA1MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNjBUaTogTlZJRElBIEdlRm9yY2UgUlRYIDMwNjAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDcwOiBOVklESUEgR2VGb3JjZSBSVFggMzA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwODA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA5MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwOTAKICAgICAgICAgIE5WSURJQU5WUzMwMDogTlZJRElBIE5WUyAzMDAKICAgICAgICAgIE5WSURJQU5WUzMxMDogTlZJRElBIE5WUyAzMTAKICAgICAgICAgIE5WSURJQU5WUzUxMDogTlZJRElBIE5WUyA1MTAKICAgICAgICAgIE5WSURJQVF1YWRybzIwMDA6IE5WSURJQSBRdWFkcm8gMjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvNjAwOiBOVklESUEgUXVhZHJvIDYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzEyMDA6IE5WSURJQSBRdWFkcm8gSzEyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0syMjAwOiBOVklESUEgUXVhZHJvIEsyMjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDAwMDogTlZJRElBIFF1YWRybyBLNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzQyMDogTlZJRElBIFF1YWRybyBLNDIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwMDogTlZJRElBIFF1YWRybyBLNDIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzUyMDA6IE5WSURJQSBRdWFkcm8gSzUyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s2MDA6IE5WSURJQSBRdWFkcm8gSzYwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYxME06IE5WSURJQSBRdWFkcm8gSzYxME0KICAgICAgICAgIE5WSURJQVF1YWRyb0s2MjA6IE5WSURJQSBRdWFkcm8gSzYyMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYyME06IE5WSURJQSBRdWFkcm8gSzYyME0KICAgICAgICAgIE5WSURJQVF1YWRyb00xMDAwTTogTlZJRElBIFF1YWRybyBNMTAwME0KICAgICAgICAgIE5WSURJQVF1YWRyb00yMDAwOiBOVklESUEgUXVhZHJvIE0yMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNDAwMDogTlZJRElBIFF1YWRybyBNNDAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTUwMDA6IE5WSURJQSBRdWFkcm8gTTUwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDAwOiBOVklESUEgUXVhZHJvIE02MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNjAwTTogTlZJRElBIFF1YWRybyBNNjAwTQogICAgICAgICAgTlZJRElBUXVhZHJvUDEwMDA6IE5WSURJQSBRdWFkcm8gUDEwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1AyMDAwOiBOVklESUEgUXVhZHJvIFAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNDAwOiBOVklESUEgUXVhZHJvIFA0MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDAwOiBOVklESUEgUXVhZHJvIFA0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNTAwMDogTlZJRElBIFF1YWRybyBQNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYwMDogTlZJRElBIFF1YWRybyBQNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwMDogTlZJRElBIFF1YWRybyBQNjAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDYyMDogTlZJRElBIFF1YWRybyBQNjIwCiAgICAgICAgICBOVklESUFUZXNsYUs4MDogTlZJRElBIFRlc2xhIEs4MAogICAgICAgICAgTlZJRElBVGVzbGFQMTAwOiBOVklESUEgVGVzbGEgUDEwMAogICAgICAgICAgTlZJRElBVGVzbGFUNDogTlZJRElBIFRlc2xhIFQ0CiAgICAgICAgICBOVklESUFUZXNsYVYxMDA6IE5WSURJQSBUZXNsYSBWMTAwCiAgICAgICAgICBOVklESUFUaXRhblJUWDogTlZJRElBIFRpdGFuIFJUWAogICAgICAgICAgTlZJRElBVGl0YW5WOiBOVklESUEgVGl0YW4gVgogICAgICAgICAgTlZJRElBVGl0YW5YUGFzY2FsOiBOVklESUEgVGl0YW4gWCAoUGFzY2FsKQogICAgICAgICAgTlZJRElBVGl0YW5YcDogTlZJRElBIFRpdGFuIFhwCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBHcmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtR3JhcGhpY3NDYXJkVmVuZG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6IDEgR0IKICAgICAgICAgICcxMSc6IDExIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzInOiAyIEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0JzogNCBHQgogICAgICAgICAgJzQ4JzogNDggR0IKICAgICAgICAgICc1MTInOiA1MTIgR0IKICAgICAgICAgICc2NCc6IDY0IEdCCiAgICAgICAgICAnOCc6IDggR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IHBlciBncmFwaGljcyBjYXJkCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgR0REUjU6IEdERFI1CiAgICAgICAgICBHRERSNVg6IEdERFI1WAogICAgICAgICAgR0REUjY6IEdERFI2CiAgICAgICAgICBHRERSNlg6IEdERFI2WAogICAgICAgICAgSEJNMjogSEJNMgogICAgICAgICAgSEJNMkU6IEhCTTJFCiAgICAgICAgICBIQk1IaWdoQmFuZHdpZHRoTWVtb3J5OiBIQk0gKEhpZ2ggQmFuZHdpZHRoIE1lbW9yeSkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1lbW9yeSBUeXBlCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtTWVtb3J5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1PdXRwdXRzOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRFZJOiBEVkkKICAgICAgICAgIERpc3BsYXlQb3J0OiBEaXNwbGF5UG9ydAogICAgICAgICAgSERNSTogSERNSQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUaHVuZGVyYm9sdDogVGh1bmRlcmJvbHQKICAgICAgICAgIFVTQkM6IFVTQi1DCiAgICAgICAgICBWR0E6IFZHQQogICAgICAgICAgVmlydHVhbExpbms6IFZpcnR1YWxMaW5rCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogT3V0cHV0cwogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBFeHByZXNzaW9uOiAiWyUgQ291bnQgPSBcIkR5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50XCIgJV1bJSBDYXBhY2l0eQogICAgICAgICAgPSBcIkR5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemVcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50CiAgICAgICAgICAqIERhdGEuJENhcGFjaXR5ICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLUNvdW50CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBOYW1lVXBkYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkNyZWF0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgR3JhcGhpY3MgY2FyZCBSQU0gKEdCKQogICAgICBOYW1lOiBJVFNNR3JhcGhpY3NDYXJkLVRvdGFsUkFNR0IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU01NZW1vcnktQ2FwYWNpdHk6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAyNCc6IDEwMjQgR0IKICAgICAgICAgICcxMic6IDEyIEdCCiAgICAgICAgICAnMTI4JzogMTI4IEdCCiAgICAgICAgICAnMTYnOiAxNiBHQgogICAgICAgICAgJzI0JzogMjQgR0IKICAgICAgICAgICcyNTYnOiAyNTYgR0IKICAgICAgICAgICczMic6IDMyIEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgJzk2JzogOTYgR0IKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENhcGFjaXR5IChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DYXBhY2l0eQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1lbW9yeS1DbG9ja1JhdGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMTAwJzogJzEwMCcKICAgICAgICAgICcxMzMnOiAnMTMzJwogICAgICAgICAgJzE2Nic6ICcxNjYnCiAgICAgICAgICAnMjAwJzogJzIwMCcKICAgICAgICAgICcyMzMnOiAnMjMzJwogICAgICAgICAgJzI2Nic6ICcyNjYnCiAgICAgICAgICAnMzAwJzogJzMwMCcKICAgICAgICAgICczMzMnOiAnMzMzJwogICAgICAgICAgJzM2Nic6ICczNjYnCiAgICAgICAgICAnNDAwJzogJzQwMCcKICAgICAgICAgICc0NTAnOiAnNDUwJwogICAgICAgICAgJzUwMCc6ICc1MDAnCiAgICAgICAgICAnNTI1JzogJzUyNScKICAgICAgICAgICc2MDAnOiAnNjAwJwogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2xvY2tyYXRlCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ2xvY2tSYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNvdW50OgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBSQU0gbW9kdWxlcwogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LVRvdGFsUkFNR0I6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEFKQVhUcmlnZ2VyczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ291bnRcIiAlXVslIENhcGFjaXR5ID0KICAgICAgICAgIFwiRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHlcIiAlXVxyXG5bJSBUb3RhbCA9IERhdGEuJENvdW50ICogRGF0YS4kQ2FwYWNpdHkKICAgICAgICAgICVdXHJcblslIFRvdGFsICVdIEdCIgogICAgICAgIEludGVycHJldGVyOiB+CiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBSZWFkb25seTogJzEnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJlcXVpcmVkQXJnczoKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVXBkYXRlRXZlbnRzOgogICAgICAgIC0gQ29uZmlnSXRlbUNyZWF0ZQogICAgICAgIC0gVmFsdWVVcGRhdGUKICAgICAgICAtIFZlcnNpb25EZWxldGUKICAgICAgRmllbGRUeXBlOiBTY3JpcHRUZW1wbGF0ZVRvb2xraXQKICAgICAgTGFiZWw6IFRvdGFsIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01NZW1vcnktVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1UeXBlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgRERSOiBERFIKICAgICAgICAgIEREUjI6IEREUjIKICAgICAgICAgIEREUjM6IEREUjMKICAgICAgICAgIEREUjQ6IEREUjQKICAgICAgICAgIEREUjU6IEREUjUKICAgICAgICAgIFNEUkFNOiBTRFJBTQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFR5cGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBJUHY0OiBJUHY0CiAgICAgICAgICAgICAgICBJUHY2OiBJUHY2CiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogSVAgUHJvdG9jb2wKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IElQIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBUYXJnZXQgb2JqZWN0IHBvcnQKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IENOQU1FL0FsaWFzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1DTkFNRUFsaWFzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNlcnZlclNvZnR3YXJlLVJlZmVyZW5jZVRvU2VydmVyU29mdHdhcmU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gU2VydmVyIFNvZnR3YXJlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IERlcGVuZHNPbgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgTmFtZTogSVRTTVNlcnZlclNvZnR3YXJlLVJlZmVyZW5jZVRvU2VydmVyU29mdHdhcmUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TdG9yYWdlLVN0b3JhZ2U6CiAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtVHlwZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEhEREhhcmREaXNrRHJpdmU6IEhERCAoSGFyZCBEaXNrIERyaXZlKQogICAgICAgICAgICAgICAgTlZNZVNTRE5vblZvbGF0aWxlTWVtb3J5RXhwcmVzc1NvbGlkU3RhdGVEcml2ZTogTlZNZSBTU0QgKE5vbi1Wb2xhdGlsZQogICAgICAgICAgICAgICAgICBNZW1vcnkgRXhwcmVzcyBTb2xpZCBTdGF0ZSBEcml2ZSkKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU1NEU29saWRTdGF0ZURyaXZlOiBTU0QgKFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgU1NIRFNvbGlkU3RhdGVIeWJyaWREcml2ZTogU1NIRCAoU29saWQgU3RhdGUgSHlicmlkIERyaXZlKQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgVHlwZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBBREFUQTogQURBVEEKICAgICAgICAgICAgICAgIEFEQVRBVGVjaG5vbG9neTogQURBVEEgVGVjaG5vbG9neQogICAgICAgICAgICAgICAgQXBhY2VyOiBBcGFjZXIKICAgICAgICAgICAgICAgIEJ1ZmZhbG86IEJ1ZmZhbG8KICAgICAgICAgICAgICAgIENvcnNhaXI6IENvcnNhaXIKICAgICAgICAgICAgICAgIENydWNpYWxNaWNyb246IENydWNpYWwgKE1pY3JvbikKICAgICAgICAgICAgICAgIEdUZWNobm9sb2d5V2VzdGVybkRpZ2l0YWw6IEctVGVjaG5vbG9neSAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgSEdTVFdlc3Rlcm5EaWdpdGFsOiBIR1NUIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIaXRhY2hpOiBIaXRhY2hpCiAgICAgICAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgICAgICAgIEtpbmdzdG9uOiBLaW5nc3RvbgogICAgICAgICAgICAgICAgS2luZ3N0b25EaWdpdGFsOiBLaW5nc3RvbiBEaWdpdGFsCiAgICAgICAgICAgICAgICBMYUNpZVNlYWdhdGU6IExhQ2llIChTZWFnYXRlKQogICAgICAgICAgICAgICAgTGV4YXI6IExleGFyCiAgICAgICAgICAgICAgICBNYXh0b3I6IE1heHRvcgogICAgICAgICAgICAgICAgT0NaVG9zaGliYTogT0NaIChUb3NoaWJhKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBQTlk6IFBOWQogICAgICAgICAgICAgICAgUGxleHRvcjogUGxleHRvcgogICAgICAgICAgICAgICAgU0toeW5peDogU0sgaHluaXgKICAgICAgICAgICAgICAgIFNhbXN1bmc6IFNhbXN1bmcKICAgICAgICAgICAgICAgIFNhbXN1bmdTZW1pY29uZHVjdG9yOiBTYW1zdW5nIFNlbWljb25kdWN0b3IKICAgICAgICAgICAgICAgIFNhbkRpc2tXZXN0ZXJuRGlnaXRhbDogU2FuRGlzayAoV2VzdGVybiBEaWdpdGFsKQogICAgICAgICAgICAgICAgU2VhZ2F0ZTogU2VhZ2F0ZQogICAgICAgICAgICAgICAgU2lsaWNvblBvd2VyOiBTaWxpY29uIFBvd2VyCiAgICAgICAgICAgICAgICBTb255OiBTb255CiAgICAgICAgICAgICAgICBTdXBlclRhbGVudDogU3VwZXIgVGFsZW50CiAgICAgICAgICAgICAgICBUZWFtR3JvdXA6IFRlYW0gR3JvdXAKICAgICAgICAgICAgICAgIFRvc2hpYmE6IFRvc2hpYmEKICAgICAgICAgICAgICAgIFRyYW5zY2VuZDogVHJhbnNjZW5kCiAgICAgICAgICAgICAgICBXZXN0ZXJuRGlnaXRhbDogV2VzdGVybiBEaWdpdGFsCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBNYW51ZmFjdHVyZXIKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTWFudWZhY3R1cmVyCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1vZGVsCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLU1vZGVsCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2UtU2VyaWFsTnVtYmVyCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIFNlcmlhbE51bWJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBTdG9yYWdlCiAgICAgIE5hbWU6IElUU01TdG9yYWdlLVN0b3JhZ2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TdG9yYWdlUGFydGl0aW9uLVBhcnRpdGlvbjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1OYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFNlcnZlciAodmlydHVhbCkKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLUZyZWVDYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIEZyZWUgQ2FwYWNpdHkKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tVXNlZENhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gVXNlZCBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTZXJ2ZXIgKHZpcnR1YWwpCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gTW91bnQgUG9pbnQKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tTW91bnRQb2ludAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UgUGFydGl0aW9uCiAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVBhcnRpdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogU2VydmVyICh2aXJ0dWFsKQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBCdWlsZGluZwogICAgICAgIC0gQ291bnRyeQogICAgICAgIC0gUmFjawogICAgICAgIC0gUm9vbQogICAgICAgIC0gU3Vic2lkaWFyeQogICAgICAgIERpc3BsYXlUeXBlOiBDbGFzc0NvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogTG9jYXRpb25PZgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBMb2NhdGlvbgogICAgICBOYW1lOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gU29mdHdhcmUKICAgIE5hbWU6IFNlcnZlciBTb2Z0d2FyZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyOjpTZXJ2ZXJcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTGljZW5zZTo6TGljZW5zZVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIFJvd1NwYW46IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG5cclxuUm9sZXM6XHJcbgogICAgXCAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4gICMKICAgIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcyBkZWZpbml0aW9ucy4KICAgIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBTZXJ2ZXI6XHJcbiAgICBOYW1lOiBJVFNNIFNlcnZlclxyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4KICAgIFwgQ01EQiBCYWNrbGlua3M6XHJcbiAgICBOYW1lOiBDTURCIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOgogICAgQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgSVRTTS1MZW5zVG9MaWNlbnNlQ291bnQ6CiAgICAgIENJQ2xhc3M6IFNlcnZlciBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kRnJvbQogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCBmcm9tCiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZVBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVBlcmlvZFVudGlsOgogICAgICBDSUNsYXNzOiBTZXJ2ZXIgU29mdHdhcmUKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBJVFNNTGljZW5zZS1MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgdW50aWwKICAgICAgTmFtZTogSVRTTS1MZW5zVG9MaWNlbnNlUGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvTGljZW5zZVR5cGU6CiAgICAgIENJQ2xhc3M6IFNlcnZlciBTb2Z0d2FyZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogU2VydmVyIFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIExpY2Vuc2UKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTGljZW5zZQogICAgICBOYW1lOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTS1SZWZlcmVuY2VUb1NlcnZlcjoKICAgICAgQ0lDbGFzczogU2VydmVyIFNvZnR3YXJlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIFNlcnZlcgogICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBEZXBlbmRzT24KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogU2VydmVyCiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9TZXJ2ZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBXb3JrcGxhY2UKICAgIE5hbWU6IFNJTSBDYXJkCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uczogMlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwgSW5mb3JtYXRpb25cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIENvbnRyYWN0OjpDb250cmFjdFxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgICBcclxuUm9sZXM6CiAgICBcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwgZmllbGRzLlxyXG4KICAgIFwgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuCiAgICBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBTSU0gQ2FyZFxyXG4gIElUU00gQ29udHJhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRyYWN0XHJcbgogICAgXCBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6CiAgICBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kRnJvbToKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBDb250cmFjdC1QZXJpb2RGcm9tCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogQ29udHJhY3QgcGVyaW9kIGZyb20KICAgICAgTmFtZTogSVRTTS1MZW5zVG9Db250cmFjdFBlcmlvZEZyb20KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvQ29udHJhY3RQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIEF0dHJpYnV0ZURGOiBDb250cmFjdC1QZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3QKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvQ29udHJhY3QKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IENvbnRyYWN0IHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0NvbnRyYWN0UGVyaW9kVW50aWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgUmVhZG9ubHk6IDEKICAgIElUU00tTGVuc1RvQ29udHJhY3RUeXBlOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IENvbnRyYWN0LVR5cGUKICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0NvbnRyYWN0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBUeXBlCiAgICAgIE5hbWU6IElUU00tTGVuc1RvQ29udHJhY3RUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvQ29udHJhY3Q6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENvbnRyYWN0CiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IENvbnRyYWN0CiAgICAgIE5hbWU6IElUU00tUmVmZXJlbmNlVG9Db250cmFjdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVNJTS1DYXJkbnVtYmVyOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ2FyZCBOdW1iZXIKICAgICAgTmFtZTogSVRTTVNJTS1DYXJkbnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLU1vYmlsZU51bWJlcjoKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vYmlsZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTVNJTS1Nb2JpbGVOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tUElOOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUElOCiAgICAgIE5hbWU6IElUU01TSU0tUElOCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLVBJTjI6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQSU4gMgogICAgICBOYW1lOiBJVFNNU0lNLVBJTjIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tUFVLOgogICAgICBDSUNsYXNzOiBTSU0gQ2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogUFVLCiAgICAgIE5hbWU6IElUU01TSU0tUFVLCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU0lNLVBVSzI6CiAgICAgIENJQ2xhc3M6IFNJTSBDYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBQVUsgMgogICAgICBOYW1lOiBJVFNNU0lNLVBVSzIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01TSU0tVHlwZToKICAgICAgQ0lDbGFzczogU0lNIENhcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBFbWJlZGRlZCBTSU0gKGVTSU0pOiBFbWJlZGRlZCBTSU0gKGVTSU0pCiAgICAgICAgICBNaWNybyBTSU06IE1pY3JvIFNJTQogICAgICAgICAgTmFubyBTSU06IE5hbm8gU0lNCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFN0YW5kYXJkIFNJTTogU3RhbmRhcmQgU0lNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FyZCBUeXBlCiAgICAgIE5hbWU6IElUU01TSU0tVHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIFdvcmtwbGFjZQogICAgTmFtZTogU21hcnRib2FyZAogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuCiAgICBcICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IEdlbmVyYWwgRmllbGRzOjpHZW5lcmFsIEluZm9ybWF0aW9uXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQKICAgIGluOjpMb2NhdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgQ01EQiBMb2NhdGVkIGluOjpBZGRyZXNzXHJcbiAgICAgICAgUm93U3RhcnQ6IDNcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4KICAgIFwgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICBcclxuCiAgICBcIC0gTmFtZTogQWNjb3VudGluZ1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBDTURCCiAgICBBY2NvdW50aW5nOjpBY2NvdW50aW5nXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4KICAgIFwgLSBOYW1lOiBMb2NhdGVkIGluXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG5cclxuUm9sZXM6XHJcbiAgIyBSb2xlcyBhcmUgdXNlZCB0byBkZWZpbmUgdGhlIFNlY3Rpb25zIGFuZCB0aGVpciBpbmRpdmlkdWFsCiAgICBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsIHNlY3Rpb25zIGNhbiBhbHNvIGJlIGRlZmluZWQgZGlyZWN0bHkgaGVyZSBpbiB0aGUgY2xhc3MKICAgIGRlZmluaXRpb25zLiBcclxuICAjIFdlIGhhdmUgc2ltcGx5IG1vdmVkIHRoZW0gdG8gXCJSb2xlc1wiIGZvciB0aGUgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuCiAgICBcICMgRm9yIGVhY2ggY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbgogICAgXCAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTSBHRiBjbGFzcyBuYW1lXCIuIFxyXG4KICAgIFwgIyBUaGlzIGlzIHdoZXJlIHRoZSBmaWVsZHMgb2YgdGhlIHJlc3BlY3RpdmUgY2xhc3MgY2FuIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbAogICAgRmllbGRzOlxyXG4gICAgTmFtZTogSVRTTSBHRiBEaXNwbGF5XHJcbiAgSVRTTSBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuCiAgICBcIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIKICAgIExvY2F0ZWQgaW5cclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuCiAgICBcICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3JkZXIgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQ6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1Qb3dlckRlbGl2ZXJ5OgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgTm86IE5vCiAgICAgICAgICBZZXM6IFllcwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFBvd2VyIERlbGl2ZXJ5CiAgICAgIE5hbWU6IElUU01EaXNwbGF5LVBvd2VyRGVsaXZlcnkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01EaXNwbGF5LVJlc29sdXRpb246CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAySyAoMjA0OCB4IDEwODApOiAySyAoMjA0OCB4IDEwODApCiAgICAgICAgICAnNEsgVWx0cmEgSEQgKDM4NDAgeCAyMTYwKTonOiAnNEsgVWx0cmEgSEQgKDM4NDAgeCAyMTYwKTonCiAgICAgICAgICA1SyAoNTEyMCB4IDI4ODApOiA1SyAoNTEyMCB4IDI4ODApCiAgICAgICAgICA4SyBVbHRyYSBIRCAoNzY4MCB4IDQzMjApOiA4SyBVbHRyYSBIRCAoNzY4MCB4IDQzMjApCiAgICAgICAgICBGdWxsIEhEICgxOTIwIHggMTA4MCk6IEZ1bGwgSEQgKDE5MjAgeCAxMDgwKQogICAgICAgICAgSEQgKDEyODAgeCA3MjApOiBIRCAoMTI4MCB4IDcyMCkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUXVhZCBIRCAoMjU2MCB4IDE0NDApOiBRdWFkIEhEICgyNTYwIHggMTQ0MCkKICAgICAgICAgIFVXUUhEICgzNDQwIHggMTQ0MCk6IFVXUUhEICgzNDQwIHggMTQ0MCkKICAgICAgICAgIFdVWEdBICgxOTIwIHggMTIwMCk6IFdVWEdBICgxOTIwIHggMTIwMCkKICAgICAgICAgIFdYR0EgKDEzNjYgeCA3NjgpOiBXWEdBICgxMzY2IHggNzY4KQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1vbml0b3IgUmVzb2x1dGlvbgogICAgICBOYW1lOiBJVFNNRGlzcGxheS1SZXNvbHV0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNRGlzcGxheS1TaXplSW5jaDoKICAgICAgQ0lDbGFzczogU21hcnRib2FyZAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcyNyc6IDI3IgogICAgICAgICAgJzMyJzogMzIiCiAgICAgICAgICAnMzQnOiAzNCIKICAgICAgICAgICczNSc6IDM1IgogICAgICAgICAgJzQwJzogNDAiCiAgICAgICAgICAnNDMnOiA0MyIKICAgICAgICAgICc0OSc6IDQ5IgogICAgICAgICAgJzU1JzogNTUiCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNb25pdG9yIFNpemUKICAgICAgTmFtZTogSVRTTURpc3BsYXktU2l6ZUluY2gKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01EaXNwbGF5LVR5cGU6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBMQ0QgTW9uaXRvciAoTGlxdWlkIENyeXN0YWwgRGlzcGxheSk6IExDRCBNb25pdG9yIChMaXF1aWQgQ3J5c3RhbCBEaXNwbGF5KQogICAgICAgICAgTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKTogTEVEIE1vbml0b3IgKExpZ2h0IEVtaXR0aW5nIERpb2RlKQogICAgICAgICAgT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0IEVtaXR0aW5nIERpb2RlKTogT0xFRCBNb25pdG9yIChPcmdhbmljIExpZ2h0CiAgICAgICAgICAgIEVtaXR0aW5nIERpb2RlKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBUb3VjaHNjcmVlbiBNb25pdG9yOiBUb3VjaHNjcmVlbiBNb25pdG9yCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNRGlzcGxheS1UeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQVNVUzogQVNVUwogICAgICAgICAgQWNlcjogQWNlcgogICAgICAgICAgQWR2YW50ZWNoOiBBZHZhbnRlY2gKICAgICAgICAgIEFvcGVuOiBBb3BlbgogICAgICAgICAgQXBwbGU6IEFwcGxlCiAgICAgICAgICBDaGVjayBQb2ludDogQ2hlY2sgUG9pbnQKICAgICAgICAgIENpc2NvU3lzdGVtczogQ2lzY28gU3lzdGVtcwogICAgICAgICAgQ2l0cml4IFN5c3RlbXM6IENpdHJpeCBTeXN0ZW1zCiAgICAgICAgICBDb21wYWxFbGVjdHJvbmljczogQ29tcGFsIEVsZWN0cm9uaWNzCiAgICAgICAgICBEZWxsVGVjaG5vbG9naWVzOiBEZWxsIFRlY2hub2xvZ2llcwogICAgICAgICAgRUNTRWxpdGVncm91cENvbXB1dGVyU3lzdGVtczogRUNTIChFbGl0ZWdyb3VwIENvbXB1dGVyIFN5c3RlbXMpCiAgICAgICAgICBGb3J0aW5ldDogRm9ydGluZXQKICAgICAgICAgIEZ1aml0c3U6IEZ1aml0c3UKICAgICAgICAgIEdpZ2FieXRlOiBHaWdhYnl0ZQogICAgICAgICAgSGV3bGV0dFBhY2thcmRFbnRlcnByaXNlSFBFOiBIZXdsZXR0IFBhY2thcmQgRW50ZXJwcmlzZSAoSFBFKQogICAgICAgICAgSHVhd2VpOiBIdWF3ZWkKICAgICAgICAgIElCTTogSUJNCiAgICAgICAgICBJaXlhbWE6IElpeWFtYQogICAgICAgICAgSW5ub0x1eENvcnBvcmF0aW9uOiBJbm5vTHV4IENvcnBvcmF0aW9uCiAgICAgICAgICBJbnNwdXI6IEluc3B1cgogICAgICAgICAgSW50ZWw6IEludGVsCiAgICAgICAgICBJbnZlbnRlYzogSW52ZW50ZWMKICAgICAgICAgIExlbm92bzogTGVub3ZvCiAgICAgICAgICBNU0lNaWNyb1N0YXJJbnRlcm5hdGlvbmFsOiBNU0kgKE1pY3JvLVN0YXIgSW50ZXJuYXRpb25hbCkKICAgICAgICAgIE1pY3Jvc29mdDogTWljcm9zb2Z0CiAgICAgICAgICBORUM6IE5FQwogICAgICAgICAgT3BlbiBTZW5zZTogT3BlbiBTZW5zZQogICAgICAgICAgT3JhY2xlOiBPcmFjbGUKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgUGFsbyBBbHRvIE5ldHdvcmtzOiBQYWxvIEFsdG8gTmV0d29ya3MKICAgICAgICAgIFF1YW50YUNvbXB1dGVyOiBRdWFudGEgQ29tcHV0ZXIKICAgICAgICAgIFNodXR0bGVJbmM6IFNodXR0bGUgSW5jLgogICAgICAgICAgU29waG9zOiBTb3Bob3MKICAgICAgICAgIFN1cGVybWljcm86IFN1cGVybWljcm8KICAgICAgICAgIFN5bm9sb2d5OiBTeW5vbG9neQogICAgICAgICAgV2lzdHJvbjogV2lzdHJvbgogICAgICAgICAgV2l3eW5uOiBXaXd5bm4KICAgICAgICAgIFpvdGFjOiBab3RhYwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE1hbnVmYWN0dXJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtTWFudWZhY3R1cmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWw6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFNtYXJ0Ym9hcmQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VyaWFsbnVtYmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJpYWxOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJ2aWNlVGFnOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTbWFydGJvYXJkCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU3RvcmFnZQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtCiAgICBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTW9kZWw6Ok1vZGVsXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBCYWNrbGlua3M6OkJhY2tsaW5rc1xyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBEZXNjcmlwdGlvbjo6RGVzY3JpcHRpb25cclxuICAgICAgICBSb3dTdGFydDogMlxyXG4KICAgIFwgICAgICAgUm93U3BhbjogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG5cclxuCiAgICBcIC0gTmFtZTogSGFyZHdhcmVcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIENQVTo6Q1BVXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1lbW9yeTo6TWVtb3J5XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBJVFNNIEdyYXBoaWNzIENhcmQ6OkdyYXBoaWNzIENhcmRcclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgM1xyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZTo6U3RvcmFnZVxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjo6U3RvcmFnZSBQYXJ0aXRpb25cclxuICAgICAgICBSb3dTdGFydDoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gRm9ybSBGYWN0b3I6OkZvcm0gRmFjdG9yXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcblxyXG4gIC0gTmFtZTogU29mdHdhcmVcclxuICAgIExheW91dDpcclxuCiAgICBcICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOiAyXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbgogICAgXCAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcgU3lzdGVtOjpPcGVyYXRpbmcgU3lzdGVtXHJcbiAgICAgICAgUm93U3RhcnQ6CiAgICAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFNlcnZlciBTb2Z0d2FyZTo6U2VydmVyIFNvZnR3YXJlXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcblxyXG4gIC0gTmFtZTogTmV0d29yayBJbmZvXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00gTmV0d29yayBJbmZvOjpOZXR3b3JrIEluZm9cclxuCiAgICBcICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbiAgLSBOYW1lOiBBY2NvdW50aW5nXHJcbgogICAgXCAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IERldGFpbHNcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6CiAgICAzXHJcbiAgICBJbnRlcmZhY2VzOlxyXG4gICAgICAtIEFnZW50XHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IElUU00KICAgIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAtCiAgICBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBDUFU6OkNQVVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNZW1vcnk6Ok1lbW9yeVxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBHcmFwaGljcyBDYXJkOjpHcmFwaGljcyBDYXJkXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbTo6T3BlcmF0aW5nIFN5c3RlbVxyXG4gICAgICAgIFJvd1N0YXJ0OiAzXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuCiAgICBcICAgICAtIFNlY3Rpb246IElUU00gU2VydmVyIFNvZnR3YXJlOjpTZXJ2ZXIgU29mdHdhcmVcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4KICAgIFwgICAgICAgQ29sdW1uU3RhcnQ6IDNcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIFN0b3JhZ2U6OlN0b3JhZ2VcclxuICAgICAgICBSb3dTdGFydDoKICAgIDRcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gU3RvcmFnZSBQYXJ0aXRpb246OlN0b3JhZ2UKICAgIFBhcnRpdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA0XHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLSBTZWN0aW9uOgogICAgSVRTTSBGb3JtIEZhY3Rvcjo6Rm9ybSBGYWN0b3JcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAzXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIEJhY2tsaW5rczo6QmFja2xpbmtzXHJcbiAgICAgICAgUm93U3RhcnQ6IDVcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiA1XHJcbgogICAgXCAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuICAgICAgICBcclxuUm9sZXM6XHJcbiAgIyBSb2xlcwogICAgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIyBPZiBjb3Vyc2UsCiAgICBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLiBcclxuICAjIFdlCiAgICBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbiAgIyBGb3IgZWFjaAogICAgY2xhc3Mgd2l0aCBjbGFzcy1zcGVjaWZpYyBmaWVsZHMsIHRoZXJlIGlzIGEgXCJHZW5lcmFsIEZpZWxkc1wiXHJcbiAgIyBkZWZpbml0aW9uCiAgICByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbiAgIyBUaGlzIGlzIHdoZXJlCiAgICB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIElUU00gTW9kZWw6XHJcbiAgICBOYW1lOgogICAgSVRTTSBNb2RlbFxyXG4gIElUU00gQ29udGFjdDpcclxuICAgIE5hbWU6IElUU00gQ29udGFjdFxyXG4gIENNREIgTG9jYXRlZCBpbjpcclxuCiAgICBcICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBPcGVyYXRpbmcgU3lzdGVtOlxyXG4gICAgTmFtZTogSVRTTSBPcGVyYXRpbmcKICAgIFN5c3RlbVxyXG4gIElUU00gU2VydmVyIFNvZnR3YXJlOlxyXG4gICAgTmFtZTogSVRTTSBTZXJ2ZXIgU29mdHdhcmUgIFxyXG4gIElUU00KICAgIENQVTpcclxuICAgIE5hbWU6IElUU00gQ1BVXHJcbiAgSVRTTSBNZW1vcnk6XHJcbiAgICBOYW1lOiBJVFNNIE1lbW9yeVxyXG4gIElUU00KICAgIEdyYXBoaWNzIENhcmQ6XHJcbiAgICBOYW1lOiBJVFNNIEdyYXBoaWNzIENhcmRcclxuICBJVFNNIFN0b3JhZ2U6XHJcbiAgICBOYW1lOgogICAgSVRTTSBTdG9yYWdlXHJcbiAgSVRTTSBTdG9yYWdlIFBhcnRpdGlvbjpcclxuICAgIE5hbWU6IElUU00gU3RvcmFnZSBQYXJ0aXRpb24KICAgIFwgICBcclxuICBJVFNNIEZvcm0gRmFjdG9yOlxyXG4gICAgTmFtZTogSVRTTSBGb3JtIEZhY3RvclxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4KICAgIFwgICBOYW1lOiBJVFNNIE5ldHdvcmsgSW5mb1xyXG4gIElUU00gTGljZW5zZTpcclxuICAgIE5hbWU6IElUU00gTGljZW5zZVxyXG4gIENNREIKICAgIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIKICAgIEJhY2tsaW5rc1xyXG4gIENNREIgRGVzY3JpcHRpb246XHJcbiAgICBOYW1lOiBDTURCIERlc2NyaXB0aW9uIgogIER5bmFtaWNGaWVsZHM6CiAgICBDUFUtQ1BVQ2xhc3M6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEZXNrdG9wOiBEZXNrdG9wCiAgICAgICAgICBMYXB0b3A6IExhcHRvcAogICAgICAgICAgTW9iaWxlRW1iZWRkZWQ6IE1vYmlsZS9FbWJlZGRlZAogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBTZXJ2ZXI6IFNlcnZlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IENQVSBDbGFzcwogICAgICBOYW1lOiBDUFUtQ1BVQ2xhc3MKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1DbG9ja3NwZWVkOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMTZHSHo6IDEuNiBHSHoKICAgICAgICAgIDE3R0h6OiAxLjcgR0h6CiAgICAgICAgICAxOEdIejogMS44IEdIegogICAgICAgICAgMTlHSHo6IDEuOSBHSHoKICAgICAgICAgIDIwR0h6OiAyLjAgR0h6CiAgICAgICAgICAyMUdIejogMi4xIEdIegogICAgICAgICAgMjJHSHo6IDIuMiBHSHoKICAgICAgICAgIDIzR0h6OiAyLjMgR0h6CiAgICAgICAgICAyNEdIejogMi40IEdIegogICAgICAgICAgMjVHSHo6IDIuNSBHSHoKICAgICAgICAgIDI2R0h6OiAyLjYgR0h6CiAgICAgICAgICAyN0dIejogMi43IEdIegogICAgICAgICAgMjhHSHo6IDIuOCBHSHoKICAgICAgICAgIDI5R0h6OiAyLjkgR0h6CiAgICAgICAgICAzMEdIejogMy4wIEdIegogICAgICAgICAgMzFHSHo6IDMuMSBHSHoKICAgICAgICAgIDMyR0h6OiAzLjIgR0h6CiAgICAgICAgICAzM0dIejogMy4zIEdIegogICAgICAgICAgMzRHSHo6IDMuNCBHSHoKICAgICAgICAgIDM1R0h6OiAzLjUgR0h6CiAgICAgICAgICAzNkdIejogMy42IEdIegogICAgICAgICAgMzdHSHo6IDMuNyBHSHoKICAgICAgICAgIDM4R0h6OiAzLjggR0h6CiAgICAgICAgICAzOUdIejogMy45IEdIegogICAgICAgICAgNDBHSHo6IDQuMCBHSHoKICAgICAgICAgIDQxR0h6OiA0LjEgR0h6CiAgICAgICAgICA0MkdIejogNC4yIEdIegogICAgICAgICAgNDNHSHo6IDQuMyBHSHoKICAgICAgICAgIDQ0R0h6OiA0LjQgR0h6CiAgICAgICAgICA0NUdIejogNC41IEdIegogICAgICAgICAgNDZHSHo6IDQuNiBHSHoKICAgICAgICAgIDQ3R0h6OiA0LjcgR0h6CiAgICAgICAgICA0OEdIejogNC44IEdIegogICAgICAgICAgNDlHSHo6IDQuOSBHSHoKICAgICAgICAgIDUwR0h6OiA1LjAgR0h6CiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3NwZWVkCiAgICAgIE5hbWU6IENQVS1DbG9ja3NwZWVkCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDUFUtTnVtYmVyT2ZDUFU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IE51bWJlciBvZiBDUFVzCiAgICAgIE5hbWU6IENQVS1OdW1iZXJPZkNQVQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ1BVLVBoeXNpY2FsQ29yZXM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzE5JzogJzE5JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICcyMCc6ICcyMCcKICAgICAgICAgICcyMSc6ICcyMScKICAgICAgICAgICcyMic6ICcyMicKICAgICAgICAgICcyMyc6ICcyMycKICAgICAgICAgICcyNCc6ICcyNCcKICAgICAgICAgICcyNSc6ICcyNScKICAgICAgICAgICcyNic6ICcyNicKICAgICAgICAgICcyNyc6ICcyNycKICAgICAgICAgICcyOCc6ICcyOCcKICAgICAgICAgICcyOSc6ICcyOScKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnMzAnOiAnMzAnCiAgICAgICAgICAnMzEnOiAnMzEnCiAgICAgICAgICAnMzInOiAnMzInCiAgICAgICAgICAnMzMnOiAnMzMnCiAgICAgICAgICAnMzQnOiAnMzQnCiAgICAgICAgICAnMzUnOiAnMzUnCiAgICAgICAgICAnMzYnOiAnMzYnCiAgICAgICAgICAnMzcnOiAnMzcnCiAgICAgICAgICAnMzgnOiAnMzgnCiAgICAgICAgICAnMzknOiAnMzknCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzQwJzogJzQwJwogICAgICAgICAgJzQxJzogJzQxJwogICAgICAgICAgJzQyJzogJzQyJwogICAgICAgICAgJzQzJzogJzQzJwogICAgICAgICAgJzQ0JzogJzQ0JwogICAgICAgICAgJzQ1JzogJzQ1JwogICAgICAgICAgJzQ2JzogJzQ2JwogICAgICAgICAgJzQ3JzogJzQ3JwogICAgICAgICAgJzQ4JzogJzQ4JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUGh5c2ljYWwgQ29yZXMKICAgICAgTmFtZTogQ1BVLVBoeXNpY2FsQ29yZXMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1Tb2NrZXRUeXBlOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgQU00OiBBTTQKICAgICAgICAgIEJHQTogQkdBCiAgICAgICAgICBMR0ExMTUxOiBMR0ExMTUxCiAgICAgICAgICBMR0ExMjAwOiBMR0ExMjAwCiAgICAgICAgICBMR0ExMzY2OiBMR0ExMzY2CiAgICAgICAgICBMR0ExNzAwOiBMR0ExNzAwCiAgICAgICAgICBMR0EyMDExOiBMR0EyMDExCiAgICAgICAgICBMR0EyMDExMzogTEdBMjAxMS0zCiAgICAgICAgICBMR0EyMDY2OiBMR0EyMDY2CiAgICAgICAgICBMR0E3NzU6IExHQTc3NQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQR0E6IFBHQQogICAgICAgICAgU29ja2V0MzcwOiBTb2NrZXQgMzcwCiAgICAgICAgICBTb2NrZXQ0Nzg6IFNvY2tldCA0NzgKICAgICAgICAgIFRSNDogVFI0CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogU29ja2V0IFR5cGUKICAgICAgTmFtZTogQ1BVLVNvY2tldFR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENQVS1UaHJlYWRzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgJzEnOiAnMScKICAgICAgICAgICcxMCc6ICcxMCcKICAgICAgICAgICcxMSc6ICcxMScKICAgICAgICAgICcxMic6ICcxMicKICAgICAgICAgICcxMyc6ICcxMycKICAgICAgICAgICcxNCc6ICcxNCcKICAgICAgICAgICcxNSc6ICcxNScKICAgICAgICAgICcxNic6ICcxNicKICAgICAgICAgICcxNyc6ICcxNycKICAgICAgICAgICcxOCc6ICcxOCcKICAgICAgICAgICcxOSc6ICcxOScKICAgICAgICAgICcyJzogJzInCiAgICAgICAgICAnMjAnOiAnMjAnCiAgICAgICAgICAnMjEnOiAnMjEnCiAgICAgICAgICAnMjInOiAnMjInCiAgICAgICAgICAnMjMnOiAnMjMnCiAgICAgICAgICAnMjQnOiAnMjQnCiAgICAgICAgICAnMjUnOiAnMjUnCiAgICAgICAgICAnMjYnOiAnMjYnCiAgICAgICAgICAnMjcnOiAnMjcnCiAgICAgICAgICAnMjgnOiAnMjgnCiAgICAgICAgICAnMjknOiAnMjknCiAgICAgICAgICAnMyc6ICczJwogICAgICAgICAgJzMwJzogJzMwJwogICAgICAgICAgJzMxJzogJzMxJwogICAgICAgICAgJzMyJzogJzMyJwogICAgICAgICAgJzMzJzogJzMzJwogICAgICAgICAgJzM0JzogJzM0JwogICAgICAgICAgJzM1JzogJzM1JwogICAgICAgICAgJzM2JzogJzM2JwogICAgICAgICAgJzM3JzogJzM3JwogICAgICAgICAgJzM4JzogJzM4JwogICAgICAgICAgJzM5JzogJzM5JwogICAgICAgICAgJzQnOiAnNCcKICAgICAgICAgICc0MCc6ICc0MCcKICAgICAgICAgICc0MSc6ICc0MScKICAgICAgICAgICc0Mic6ICc0MicKICAgICAgICAgICc0Myc6ICc0MycKICAgICAgICAgICc0NCc6ICc0NCcKICAgICAgICAgICc0NSc6ICc0NScKICAgICAgICAgICc0Nic6ICc0NicKICAgICAgICAgICc0Nyc6ICc0NycKICAgICAgICAgICc0OCc6ICc0OCcKICAgICAgICAgICc1JzogJzUnCiAgICAgICAgICAnNic6ICc2JwogICAgICAgICAgJzcnOiAnNycKICAgICAgICAgICc4JzogJzgnCiAgICAgICAgICAnOSc6ICc5JwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFRocmVhZHMKICAgICAgTmFtZTogQ1BVLVRocmVhZHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBHcm91cDogW10KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEFnZW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBBZ2VudAogICAgICBMYWJlbDogQWRtaW5pc3RyYXRvcgogICAgICBOYW1lOiBDb250YWN0LUFkbWluaXN0cmF0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtRGlzdHJpYnV0b3I6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VDb3VudDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VDb3VudAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIENvdW50CiAgICAgIE5hbWU6IElUU00tTGVuc1RvTGljZW5zZUNvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBBdHRyaWJ1dGVERjogSVRTTUxpY2Vuc2UtTGljZW5zZVBlcmlvZEZyb20KICAgICAgICBSZWZlcmVuY2VERjogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBSZWZlcmVuY2VERk5hbWU6IER5bmFtaWNGaWVsZF9JVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogTGVucwogICAgICBMYWJlbDogTGljZW5zZSBwZXJpb2QgZnJvbQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RGcm9tCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VQZXJpb2RVbnRpbAogICAgICAgIFJlZmVyZW5jZURGOiBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZQogICAgICAgIFJlZmVyZW5jZURGTmFtZTogRHluYW1pY0ZpZWxkX0lUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBMZW5zCiAgICAgIExhYmVsOiBMaWNlbnNlIHBlcmlvZCB1bnRpbAogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VQZXJpb2RVbnRpbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTS1MZW5zVG9MaWNlbnNlVHlwZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQXR0cmlidXRlREY6IElUU01MaWNlbnNlLUxpY2Vuc2VUeXBlCiAgICAgICAgUmVmZXJlbmNlREY6IElUU00tUmVmZXJlbmNlVG9MaWNlbnNlCiAgICAgICAgUmVmZXJlbmNlREZOYW1lOiBEeW5hbWljRmllbGRfSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IExlbnMKICAgICAgTGFiZWw6IExpY2Vuc2UgVHlwZQogICAgICBOYW1lOiBJVFNNLUxlbnNUb0xpY2Vuc2VUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNLVJlZmVyZW5jZVRvTGljZW5zZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBMaWNlbnNlCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExpY2Vuc2UKICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb0xpY2Vuc2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU00tUmVmZXJlbmNlVG9PUzoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBPcGVyYXRpbmcgU3lzdGVtCiAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IE9wZXJhdGluZyBTeXN0ZW0KICAgICAgTmFtZTogSVRTTS1SZWZlcmVuY2VUb09TCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBDb3N0IHVuaXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctQ29zdFVuaXQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2U6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZXJzdG1lbnQgY29zdHMKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZXN0bWVudENvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBPcmRlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlckRhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9yZGVyTnVtYmVyOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzUnCiAgICAgICAgWWVhcnNJblBhc3Q6ICcxJwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIFdhcnJhbnR5CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItUmFja0RlcHRoOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgMjMuNiBpbmNoZXMgKDYwMCBtbSk6IDIzLjYgaW5jaGVzICg2MDAgbW0pCiAgICAgICAgICAzMS41IGluY2hlcyAoODAwIG1tKTogMzEuNSBpbmNoZXMgKDgwMCBtbSkKICAgICAgICAgIDM1LjQgaW5jaGVzICg5MDAgbW0pOiAzNS40IGluY2hlcyAoOTAwIG1tKQogICAgICAgICAgMzkuNCBpbmNoZXMgKDEwMDAgbW0pOiAzOS40IGluY2hlcyAoMTAwMCBtbSkKICAgICAgICAgIDQzLjMgaW5jaGVzICgxMTAwIG1tKTogJzQzLjMgaW5jaGVzICgxMTAwIG1tKTonCiAgICAgICAgICA0Ny4yIGluY2hlcyAoMTIwMCBtbSk6IDQ3LjIgaW5jaGVzICgxMjAwIG1tKQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogUmFjayBEZXB0aAogICAgICBOYW1lOiBJVFNNRm9ybUZhY3Rvci1SYWNrRGVwdGgKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVJhY2tVbml0czoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogJzFVOiAxLjc1IGluY2hlcyAoNC40NSBjbSknCiAgICAgICAgICAnMTAnOiAnMTBVOiAxNy41IGluY2hlcyAoNDQuNDUgY20pJwogICAgICAgICAgJzEyJzogJzEyVTogMjEgaW5jaGVzICg1My4zNCBjbSknCiAgICAgICAgICAnMTUnOiAnMTVVOiAyNi4yNSBpbmNoZXMgKDY2LjY4IGNtKScKICAgICAgICAgICcxOCc6ICcxOFU6IDMxLjUgaW5jaGVzICg4MC4wMSBjbSknCiAgICAgICAgICAnMic6ICcyVTogMy41IGluY2hlcyAoOC44OSBjbSknCiAgICAgICAgICAnMjAnOiAnMjBVOiAzNSBpbmNoZXMgKDg4LjkgY20pJwogICAgICAgICAgJzIyJzogJzIyVTogMzguNSBpbmNoZXMgKDk3Ljc5IGNtKScKICAgICAgICAgICcyNCc6ICcyNFU6IDQyIGluY2hlcyAoMTA2LjY4IGNtKScKICAgICAgICAgICcyNyc6ICcyN1U6IDQ3LjI1IGluY2hlcyAoMTIwLjAyIGNtKScKICAgICAgICAgICczJzogJzNVOiA1LjI1IGluY2hlcyAoMTMuMzQgY20pJwogICAgICAgICAgJzMwJzogJzMwVTogNTIuNSBpbmNoZXMgKDEzMy4zNSBjbSknCiAgICAgICAgICAnMzMnOiAnMzNVOiA1Ny43NSBpbmNoZXMgKDE0Ni42OCBjbSknCiAgICAgICAgICAnMzYnOiAnMzZVOiA2MyBpbmNoZXMgKDE2MC4wMiBjbSknCiAgICAgICAgICAnMzknOiAnMzlVOiA2OC4yNSBpbmNoZXMgKDE3My4zNSBjbSknCiAgICAgICAgICAnNCc6ICc0VTogNyBpbmNoZXMgKDE3Ljc4IGNtKScKICAgICAgICAgICc0Mic6ICc0MlU6IDczLjUgaW5jaGVzICgxODYuNjkgY20pJwogICAgICAgICAgJzQ1JzogJzQ1VTogNzguNzUgaW5jaGVzICgyMDAuMDIgY20pJwogICAgICAgICAgJzQ4JzogJzQ4VTogODQgaW5jaGVzICgyMTMuMzYgY20pJwogICAgICAgICAgJzUnOiAnNVU6IDguNzUgaW5jaGVzICgyMi4yMyBjbSknCiAgICAgICAgICAnNic6ICc2VTogMTAuNSBpbmNoZXMgKDI2LjY3IGNtKScKICAgICAgICAgICc3JzogJzdVOiAxMi4yNSBpbmNoZXMgKDMxLjEyIGNtKScKICAgICAgICAgICc4JzogJzhVOiAxNCBpbmNoZXMgKDM1LjU2IGNtKScKICAgICAgICAgICc5JzogJzlVOiAxNS43NSBpbmNoZXMgKDQwLjAxIGNtKScKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IFJhY2sgVW5pdHMgKFUpCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVJhY2tVbml0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUZvcm1GYWN0b3ItVHlwZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIDE5LWluY2ggUmFjazogMTktaW5jaCBSYWNrCiAgICAgICAgICAyMS1pbmNoIFJhY2s6IDIxLWluY2ggUmFjawogICAgICAgICAgMjMtaW5jaCBSYWNrOiAyMy1pbmNoIFJhY2sKICAgICAgICAgIEN1c3RvbSBSYWNrOiBDdXN0b20gUmFjawogICAgICAgICAgRVRTSSBSYWNrOiBFVFNJIFJhY2sKICAgICAgICAgIE1pbmktUmFjazogTWluaS1SYWNrCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRvd2VyOiBUb3dlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEZvcm0gRmFjdG9yCiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Gb3JtRmFjdG9yLVdlaWdodDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSGFyZHdhcmUgV2VpZ2h0CiAgICAgIE5hbWU6IElUU01Gb3JtRmFjdG9yLVdlaWdodAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2U6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBR1A6IEFHUAogICAgICAgICAgRUlTQTogRUlTQQogICAgICAgICAgRmlyZVdpcmVJRUVFMTM5NDogRmlyZVdpcmUgKElFRUUgMTM5NCkKICAgICAgICAgIElTQTogSVNBCiAgICAgICAgICBMUENMb3dQaW5Db3VudDogTFBDIChMb3cgUGluIENvdW50KQogICAgICAgICAgTUNBTWljcm9DaGFubmVsQXJjaGl0ZWN0dXJlOiBNQ0EgKE1pY3JvIENoYW5uZWwgQXJjaGl0ZWN0dXJlKQogICAgICAgICAgTnVCdXM6IE51QnVzCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBDSTogUENJCiAgICAgICAgICBQQ0lFeHByZXNzUENJZTogUENJIEV4cHJlc3MgKFBDSWUpCiAgICAgICAgICBQQ0lYOiBQQ0ktWAogICAgICAgICAgVGh1bmRlcmJvbHQ6IFRodW5kZXJib2x0CiAgICAgICAgICBVU0JDOiBVU0ItQwogICAgICAgICAgVVNCVW5pdmVyc2FsU2VyaWFsQnVzOiBVU0IgKFVuaXZlcnNhbCBTZXJpYWwgQnVzKQogICAgICAgICAgVkVTQUxvY2FsQnVzVkxCOiBWRVNBIExvY2FsIEJ1cyAoVkxCKQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEJ1cyBJbnRlcmZhY2UKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1CdXNJbnRlcmZhY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBOdW1iZXIgb2YgZ3JhcGhpY3MgY2FyZHMKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3I6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBTURSYWRlb25IRDY3NTA6IEFNRCBSYWRlb24gSEQgNjc1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2NzcwOiBBTUQgUmFkZW9uIEhEIDY3NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjc5MDogQU1EIFJhZGVvbiBIRCA2NzkwCiAgICAgICAgICBBTURSYWRlb25IRDY4NTA6IEFNRCBSYWRlb24gSEQgNjg1MAogICAgICAgICAgQU1EUmFkZW9uSEQ2ODcwOiBBTUQgUmFkZW9uIEhEIDY4NzAKICAgICAgICAgIEFNRFJhZGVvbkhENjk1MDogQU1EIFJhZGVvbiBIRCA2OTUwCiAgICAgICAgICBBTURSYWRlb25IRDY5NzA6IEFNRCBSYWRlb24gSEQgNjk3MAogICAgICAgICAgQU1EUmFkZW9uSEQ2OTkwOiBBTUQgUmFkZW9uIEhEIDY5OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzc1MDogQU1EIFJhZGVvbiBIRCA3NzUwCiAgICAgICAgICBBTURSYWRlb25IRDc3NzA6IEFNRCBSYWRlb24gSEQgNzc3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3NzkwOiBBTUQgUmFkZW9uIEhEIDc3OTAKICAgICAgICAgIEFNRFJhZGVvbkhENzg1MDogQU1EIFJhZGVvbiBIRCA3ODUwCiAgICAgICAgICBBTURSYWRlb25IRDc4NzA6IEFNRCBSYWRlb24gSEQgNzg3MAogICAgICAgICAgQU1EUmFkZW9uSEQ3OTUwOiBBTUQgUmFkZW9uIEhEIDc5NTAKICAgICAgICAgIEFNRFJhZGVvbkhENzk3MDogQU1EIFJhZGVvbiBIRCA3OTcwCiAgICAgICAgICBBTURSYWRlb25IRDc5OTA6IEFNRCBSYWRlb24gSEQgNzk5MAogICAgICAgICAgQU1EUmFkZW9uUHJvRHVvOiBBTUQgUmFkZW9uIFBybyBEdW8KICAgICAgICAgIEFNRFJhZGVvblByb1NTRzogQU1EIFJhZGVvbiBQcm8gU1NHCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDIxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDIxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYMzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggMzEwMAogICAgICAgICAgQU1EUmFkZW9uUHJvV1g0MTAwOiBBTUQgUmFkZW9uIFBybyBXWCA0MTAwCiAgICAgICAgICBBTURSYWRlb25Qcm9XWDUxMDA6IEFNRCBSYWRlb24gUHJvIFdYIDUxMDAKICAgICAgICAgIEFNRFJhZGVvblByb1dYNzEwMDogQU1EIFJhZGVvbiBQcm8gV1ggNzEwMAogICAgICAgICAgQU1EUmFkZW9uUjUyMTA6IEFNRCBSYWRlb24gUjUgMjEwCiAgICAgICAgICBBTURSYWRlb25SNTIyMDogQU1EIFJhZGVvbiBSNSAyMjAKICAgICAgICAgIEFNRFJhZGVvblI1MjMwOiBBTUQgUmFkZW9uIFI1IDIzMAogICAgICAgICAgQU1EUmFkZW9uUjUzMjA6IEFNRCBSYWRlb24gUjUgMzIwCiAgICAgICAgICBBTURSYWRlb25SNTMzMDogQU1EIFJhZGVvbiBSNSAzMzAKICAgICAgICAgIEFNRFJhZGVvblI1MzQwOiBBTUQgUmFkZW9uIFI1IDM0MAogICAgICAgICAgQU1EUmFkZW9uUjcyNDA6IEFNRCBSYWRlb24gUjcgMjQwCiAgICAgICAgICBBTURSYWRlb25SNzI1MDogQU1EIFJhZGVvbiBSNyAyNTAKICAgICAgICAgIEFNRFJhZGVvblI3MjUwWDogQU1EIFJhZGVvbiBSNyAyNTBYCiAgICAgICAgICBBTURSYWRlb25SNzI2MFg6IEFNRCBSYWRlb24gUjcgMjYwWAogICAgICAgICAgQU1EUmFkZW9uUjczNDA6IEFNRCBSYWRlb24gUjcgMzQwCiAgICAgICAgICBBTURSYWRlb25SNzM1MDogQU1EIFJhZGVvbiBSNyAzNTAKICAgICAgICAgIEFNRFJhZGVvblI3MzYwOiBBTUQgUmFkZW9uIFI3IDM2MAogICAgICAgICAgQU1EUmFkZW9uUjczNzA6IEFNRCBSYWRlb24gUjcgMzcwCiAgICAgICAgICBBTURSYWRlb25SOTI4NTogQU1EIFJhZGVvbiBSOSAyODUKICAgICAgICAgIEFNRFJhZGVvblI5MjkwOiBBTUQgUmFkZW9uIFI5IDI5MAogICAgICAgICAgQU1EUmFkZW9uUjkyOTBYOiBBTUQgUmFkZW9uIFI5IDI5MFgKICAgICAgICAgIEFNRFJhZGVvblI5Mjk1WDI6IEFNRCBSYWRlb24gUjkgMjk1WDIKICAgICAgICAgIEFNRFJhZGVvblI5MzgwOiBBTUQgUmFkZW9uIFI5IDM4MAogICAgICAgICAgQU1EUmFkZW9uUjkzODBYOiBBTUQgUmFkZW9uIFI5IDM4MFgKICAgICAgICAgIEFNRFJhZGVvblI5MzkwOiBBTUQgUmFkZW9uIFI5IDM5MAogICAgICAgICAgQU1EUmFkZW9uUjkzOTBYOiBBTUQgUmFkZW9uIFI5IDM5MFgKICAgICAgICAgIEFNRFJhZGVvblI5RnVyeVg6IEFNRCBSYWRlb24gUjkgRnVyeSBYCiAgICAgICAgICBBTURSYWRlb25SOU5hbm86IEFNRCBSYWRlb24gUjkgTmFubwogICAgICAgICAgQU1EUmFkZW9uUlg1NDAwWFQ6IEFNRCBSYWRlb24gUlggNTQwMCBYVAogICAgICAgICAgQU1EUmFkZW9uUlg1NTAwOiBBTUQgUmFkZW9uIFJYIDU1MDAKICAgICAgICAgIEFNRFJhZGVvblJYNTUwMFhUOiBBTUQgUmFkZW9uIFJYIDU1MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNTYwMDogQU1EIFJhZGVvbiBSWCA1NjAwCiAgICAgICAgICBBTURSYWRlb25SWDU2MDBYVDogQU1EIFJhZGVvbiBSWCA1NjAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU3MDogQU1EIFJhZGVvbiBSWCA1NzAKICAgICAgICAgIEFNRFJhZGVvblJYNTcwMDogQU1EIFJhZGVvbiBSWCA1NzAwCiAgICAgICAgICBBTURSYWRlb25SWDU3MDBYVDogQU1EIFJhZGVvbiBSWCA1NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDU4MDogQU1EIFJhZGVvbiBSWCA1ODAKICAgICAgICAgIEFNRFJhZGVvblJYNTkwOiBBTUQgUmFkZW9uIFJYIDU5MAogICAgICAgICAgQU1EUmFkZW9uUlg2NjAwOiBBTUQgUmFkZW9uIFJYIDY2MDAKICAgICAgICAgIEFNRFJhZGVvblJYNjYwMFhUOiBBTUQgUmFkZW9uIFJYIDY2MDAgWFQKICAgICAgICAgIEFNRFJhZGVvblJYNjcwMDogQU1EIFJhZGVvbiBSWCA2NzAwCiAgICAgICAgICBBTURSYWRlb25SWDY3MDBYVDogQU1EIFJhZGVvbiBSWCA2NzAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY4MDBYVDogQU1EIFJhZGVvbiBSWCA2ODAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWDY5MDBYVDogQU1EIFJhZGVvbiBSWCA2OTAwIFhUCiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E1NjogQU1EIFJhZGVvbiBSWCBWZWdhIDU2CiAgICAgICAgICBBTURSYWRlb25SWFZlZ2E2NDogQU1EIFJhZGVvbiBSWCBWZWdhIDY0CiAgICAgICAgICBOVklESUFHZUZvcmNlMjEwOiBOVklESUEgR2VGb3JjZSAyMTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDEwMzA6IE5WSURJQSBHZUZvcmNlIEdUIDEwMzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDUxMDogTlZJRElBIEdlRm9yY2UgR1QgNTEwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q1MjA6IE5WSURJQSBHZUZvcmNlIEdUIDUyMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNTMwOiBOVklESUEgR2VGb3JjZSBHVCA1MzAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDU0NTogTlZJRElBIEdlRm9yY2UgR1QgNTQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2MTA6IE5WSURJQSBHZUZvcmNlIEdUIDYxMAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNjIwOiBOVklESUEgR2VGb3JjZSBHVCA2MjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDYzMDogTlZJRElBIEdlRm9yY2UgR1QgNjMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1Q2NDA6IE5WSURJQSBHZUZvcmNlIEdUIDY0MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUNzEwOiBOVklESUEgR2VGb3JjZSBHVCA3MTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVDczMDogTlZJRElBIEdlRm9yY2UgR1QgNzMwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA1MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA2MDogTlZJRElBIEdlRm9yY2UgR1RYIDEwNjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxMDcwOiBOVklESUEgR2VGb3JjZSBHVFggMTA3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDEwODA6IE5WSURJQSBHZUZvcmNlIEdUWCAxMDgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTA4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggMTA4MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDE2NTA6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYMTY2MDogTlZJRElBIEdlRm9yY2UgR1RYIDE2NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFgxNjYwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCAxNjYwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzQ1OiBOVklESUEgR2VGb3JjZSBHVFggNzQ1CiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwOiBOVklESUEgR2VGb3JjZSBHVFggNzUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYNzUwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA3NTAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjA6IE5WSURJQSBHZUZvcmNlIEdUWCA3NjAKICAgICAgICAgIE5WSURJQUdlRm9yY2VHVFg3NjBUaTogTlZJRElBIEdlRm9yY2UgR1RYIDc2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc3MDogTlZJRElBIEdlRm9yY2UgR1RYIDc3MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MDogTlZJRElBIEdlRm9yY2UgR1RYIDc4MAogICAgICAgICAgTlZJRElBR2VGb3JjZUdUWDc4MFRpOiBOVklESUEgR2VGb3JjZSBHVFggNzgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTUwOiBOVklESUEgR2VGb3JjZSBHVFggOTUwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTYwOiBOVklESUEgR2VGb3JjZSBHVFggOTYwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTcwOiBOVklESUEgR2VGb3JjZSBHVFggOTcwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwOiBOVklESUEgR2VGb3JjZSBHVFggOTgwCiAgICAgICAgICBOVklESUFHZUZvcmNlR1RYOTgwVGk6IE5WSURJQSBHZUZvcmNlIEdUWCA5ODAgVGkKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDE1MDogTlZJRElBIEdlRm9yY2UgTVgxNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDM1MDogTlZJRElBIEdlRm9yY2UgTVgzNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VNWDQ1MDogTlZJRElBIEdlRm9yY2UgTVg0NTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDYwOiBOVklESUEgR2VGb3JjZSBSVFggMjA2MAogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDIwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMjA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDIwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgyMDgwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAyMDgwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA1MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwNTAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDUwVGk6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDUwIFRpCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA2MFRpOiBOVklESUEgR2VGb3JjZSBSVFggMzA2MCBUaQogICAgICAgICAgTlZJRElBR2VGb3JjZVJUWDMwNzA6IE5WSURJQSBHZUZvcmNlIFJUWCAzMDcwCiAgICAgICAgICBOVklESUFHZUZvcmNlUlRYMzA4MDogTlZJRElBIEdlRm9yY2UgUlRYIDMwODAKICAgICAgICAgIE5WSURJQUdlRm9yY2VSVFgzMDkwOiBOVklESUEgR2VGb3JjZSBSVFggMzA5MAogICAgICAgICAgTlZJRElBTlZTMzAwOiBOVklESUEgTlZTIDMwMAogICAgICAgICAgTlZJRElBTlZTMzEwOiBOVklESUEgTlZTIDMxMAogICAgICAgICAgTlZJRElBTlZTNTEwOiBOVklESUEgTlZTIDUxMAogICAgICAgICAgTlZJRElBUXVhZHJvMjAwMDogTlZJRElBIFF1YWRybyAyMDAwCiAgICAgICAgICBOVklESUFRdWFkcm82MDA6IE5WSURJQSBRdWFkcm8gNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LMTIwMDogTlZJRElBIFF1YWRybyBLMTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzIyMDA6IE5WSURJQSBRdWFkcm8gSzIyMDAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MDAwOiBOVklESUEgUXVhZHJvIEs0MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNDIwOiBOVklESUEgUXVhZHJvIEs0MjAKICAgICAgICAgIE5WSURJQVF1YWRyb0s0MjAwOiBOVklESUEgUXVhZHJvIEs0MjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNTIwMDogTlZJRElBIFF1YWRybyBLNTIwMAogICAgICAgICAgTlZJRElBUXVhZHJvSzYwMDogTlZJRElBIFF1YWRybyBLNjAwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjEwTTogTlZJRElBIFF1YWRybyBLNjEwTQogICAgICAgICAgTlZJRElBUXVhZHJvSzYyMDogTlZJRElBIFF1YWRybyBLNjIwCiAgICAgICAgICBOVklESUFRdWFkcm9LNjIwTTogTlZJRElBIFF1YWRybyBLNjIwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTEwMDBNOiBOVklESUEgUXVhZHJvIE0xMDAwTQogICAgICAgICAgTlZJRElBUXVhZHJvTTIwMDA6IE5WSURJQSBRdWFkcm8gTTIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb000MDAwOiBOVklESUEgUXVhZHJvIE00MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9NNTAwMDogTlZJRElBIFF1YWRybyBNNTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvTTYwMDA6IE5WSURJQSBRdWFkcm8gTTYwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb002MDBNOiBOVklESUEgUXVhZHJvIE02MDBNCiAgICAgICAgICBOVklESUFRdWFkcm9QMTAwMDogTlZJRElBIFF1YWRybyBQMTAwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDIwMDA6IE5WSURJQSBRdWFkcm8gUDIwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A0MDA6IE5WSURJQSBRdWFkcm8gUDQwMAogICAgICAgICAgTlZJRElBUXVhZHJvUDQwMDA6IE5WSURJQSBRdWFkcm8gUDQwMDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A1MDAwOiBOVklESUEgUXVhZHJvIFA1MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjAwOiBOVklESUEgUXVhZHJvIFA2MDAKICAgICAgICAgIE5WSURJQVF1YWRyb1A2MDAwOiBOVklESUEgUXVhZHJvIFA2MDAwCiAgICAgICAgICBOVklESUFRdWFkcm9QNjIwOiBOVklESUEgUXVhZHJvIFA2MjAKICAgICAgICAgIE5WSURJQVRlc2xhSzgwOiBOVklESUEgVGVzbGEgSzgwCiAgICAgICAgICBOVklESUFUZXNsYVAxMDA6IE5WSURJQSBUZXNsYSBQMTAwCiAgICAgICAgICBOVklESUFUZXNsYVQ0OiBOVklESUEgVGVzbGEgVDQKICAgICAgICAgIE5WSURJQVRlc2xhVjEwMDogTlZJRElBIFRlc2xhIFYxMDAKICAgICAgICAgIE5WSURJQVRpdGFuUlRYOiBOVklESUEgVGl0YW4gUlRYCiAgICAgICAgICBOVklESUFUaXRhblY6IE5WSURJQSBUaXRhbiBWCiAgICAgICAgICBOVklESUFUaXRhblhQYXNjYWw6IE5WSURJQSBUaXRhbiBYIChQYXNjYWwpCiAgICAgICAgICBOVklESUFUaXRhblhwOiBOVklESUEgVGl0YW4gWHAKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgTGFiZWw6IEdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1HcmFwaGljc0NhcmRWZW5kb3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxJzogMSBHQgogICAgICAgICAgJzExJzogMTEgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMic6IDIgR0IKICAgICAgICAgICcyNCc6IDI0IEdCCiAgICAgICAgICAnMjU2JzogMjU2IEdCCiAgICAgICAgICAnMzInOiAzMiBHQgogICAgICAgICAgJzQnOiA0IEdCCiAgICAgICAgICAnNDgnOiA0OCBHQgogICAgICAgICAgJzUxMic6IDUxMiBHQgogICAgICAgICAgJzY0JzogNjQgR0IKICAgICAgICAgICc4JzogOCBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgcGVyIGdyYXBoaWNzIGNhcmQKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlTaXplCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBHRERSNTogR0REUjUKICAgICAgICAgIEdERFI1WDogR0REUjVYCiAgICAgICAgICBHRERSNjogR0REUjYKICAgICAgICAgIEdERFI2WDogR0REUjZYCiAgICAgICAgICBIQk0yOiBIQk0yCiAgICAgICAgICBIQk0yRTogSEJNMkUKICAgICAgICAgIEhCTUhpZ2hCYW5kd2lkdGhNZW1vcnk6IEhCTSAoSGlnaCBCYW5kd2lkdGggTWVtb3J5KQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWVtb3J5IFR5cGUKICAgICAgTmFtZTogSVRTTUdyYXBoaWNzQ2FyZC1NZW1vcnlUeXBlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNR3JhcGhpY3NDYXJkLU91dHB1dHM6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBEVkk6IERWSQogICAgICAgICAgRGlzcGxheVBvcnQ6IERpc3BsYXlQb3J0CiAgICAgICAgICBIRE1JOiBIRE1JCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFRodW5kZXJib2x0OiBUaHVuZGVyYm9sdAogICAgICAgICAgVVNCQzogVVNCLUMKICAgICAgICAgIFZHQTogVkdBCiAgICAgICAgICBWaXJ0dWFsTGluazogVmlydHVhbExpbmsKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBPdXRwdXRzCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtT3V0cHV0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUdyYXBoaWNzQ2FyZC1Ub3RhbFJBTUdCOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBBSkFYVHJpZ2dlcnM6CiAgICAgICAgLSBEeW5hbWljRmllbGRfSVRTTUdyYXBoaWNzQ2FyZC1Db3VudAogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZQogICAgICAgIEV4cHJlc3Npb246ICJbJSBDb3VudCA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnRcIiAlXVslIENhcGFjaXR5CiAgICAgICAgICA9IFwiRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtTWVtb3J5U2l6ZVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQKICAgICAgICAgICogRGF0YS4kQ2FwYWNpdHkgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01HcmFwaGljc0NhcmQtQ291bnQKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNR3JhcGhpY3NDYXJkLU1lbW9yeVNpemUKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFVwZGF0ZUV2ZW50czoKICAgICAgICAtIENvbmZpZ0l0ZW1DcmVhdGUKICAgICAgICAtIE5hbWVVcGRhdGUKICAgICAgICAtIFZhbHVlVXBkYXRlCiAgICAgICAgLSBWZXJzaW9uQ3JlYXRlCiAgICAgIEZpZWxkVHlwZTogU2NyaXB0VGVtcGxhdGVUb29sa2l0CiAgICAgIExhYmVsOiBUb3RhbCBHcmFwaGljcyBjYXJkIFJBTSAoR0IpCiAgICAgIE5hbWU6IElUU01HcmFwaGljc0NhcmQtVG90YWxSQU1HQgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICBSZWFkb25seTogMQogICAgSVRTTU1lbW9yeS1DYXBhY2l0eToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDI0JzogMTAyNCBHQgogICAgICAgICAgJzEyJzogMTIgR0IKICAgICAgICAgICcxMjgnOiAxMjggR0IKICAgICAgICAgICcxNic6IDE2IEdCCiAgICAgICAgICAnMjQnOiAyNCBHQgogICAgICAgICAgJzI1Nic6IDI1NiBHQgogICAgICAgICAgJzMyJzogMzIgR0IKICAgICAgICAgICc0OCc6IDQ4IEdCCiAgICAgICAgICAnNTEyJzogNTEyIEdCCiAgICAgICAgICAnNjQnOiA2NCBHQgogICAgICAgICAgJzgnOiA4IEdCCiAgICAgICAgICAnOTYnOiA5NiBHQgogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogQ2FwYWNpdHkgKEdCKQogICAgICBOYW1lOiBJVFNNTWVtb3J5LUNhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTWVtb3J5LUNsb2NrUmF0ZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICcxMDAnOiAnMTAwJwogICAgICAgICAgJzEzMyc6ICcxMzMnCiAgICAgICAgICAnMTY2JzogJzE2NicKICAgICAgICAgICcyMDAnOiAnMjAwJwogICAgICAgICAgJzIzMyc6ICcyMzMnCiAgICAgICAgICAnMjY2JzogJzI2NicKICAgICAgICAgICczMDAnOiAnMzAwJwogICAgICAgICAgJzMzMyc6ICczMzMnCiAgICAgICAgICAnMzY2JzogJzM2NicKICAgICAgICAgICc0MDAnOiAnNDAwJwogICAgICAgICAgJzQ1MCc6ICc0NTAnCiAgICAgICAgICAnNTAwJzogJzUwMCcKICAgICAgICAgICc1MjUnOiAnNTI1JwogICAgICAgICAgJzYwMCc6ICc2MDAnCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBDbG9ja3JhdGUKICAgICAgTmFtZTogSVRTTU1lbW9yeS1DbG9ja1JhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktQ291bnQ6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAnMSc6ICcxJwogICAgICAgICAgJzEwJzogJzEwJwogICAgICAgICAgJzExJzogJzExJwogICAgICAgICAgJzEyJzogJzEyJwogICAgICAgICAgJzEzJzogJzEzJwogICAgICAgICAgJzE0JzogJzE0JwogICAgICAgICAgJzE1JzogJzE1JwogICAgICAgICAgJzE2JzogJzE2JwogICAgICAgICAgJzE3JzogJzE3JwogICAgICAgICAgJzE4JzogJzE4JwogICAgICAgICAgJzInOiAnMicKICAgICAgICAgICczJzogJzMnCiAgICAgICAgICAnNCc6ICc0JwogICAgICAgICAgJzUnOiAnNScKICAgICAgICAgICc2JzogJzYnCiAgICAgICAgICAnNyc6ICc3JwogICAgICAgICAgJzgnOiAnOCcKICAgICAgICAgICc5JzogJzknCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTnVtYmVyIG9mIFJBTSBtb2R1bGVzCiAgICAgIE5hbWU6IElUU01NZW1vcnktQ291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01NZW1vcnktVG90YWxSQU1HQjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQUpBWFRyaWdnZXJzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgRXhwcmVzc2lvbjogIlslIENvdW50ID0gXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1Db3VudFwiICVdWyUgQ2FwYWNpdHkgPQogICAgICAgICAgXCJEeW5hbWljRmllbGRfSVRTTU1lbW9yeS1DYXBhY2l0eVwiICVdXHJcblslIFRvdGFsID0gRGF0YS4kQ291bnQgKiBEYXRhLiRDYXBhY2l0eQogICAgICAgICAgJV1cclxuWyUgVG90YWwgJV0gR0IiCiAgICAgICAgSW50ZXJwcmV0ZXI6IH4KICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIFJlYWRvbmx5OiAnMScKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgUmVxdWlyZWRBcmdzOgogICAgICAgIC0gRHluYW1pY0ZpZWxkX0lUU01NZW1vcnktQ2FwYWNpdHkKICAgICAgICAtIER5bmFtaWNGaWVsZF9JVFNNTWVtb3J5LUNvdW50CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBVcGRhdGVFdmVudHM6CiAgICAgICAgLSBDb25maWdJdGVtQ3JlYXRlCiAgICAgICAgLSBWYWx1ZVVwZGF0ZQogICAgICAgIC0gVmVyc2lvbkRlbGV0ZQogICAgICBGaWVsZFR5cGU6IFNjcmlwdFRlbXBsYXRlVG9vbGtpdAogICAgICBMYWJlbDogVG90YWwgUkFNIChHQikKICAgICAgTmFtZTogSVRTTU1lbW9yeS1Ub3RhbFJBTUdCCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgIFJlYWRvbmx5OiAxCiAgICBJVFNNTWVtb3J5LVR5cGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBERFI6IEREUgogICAgICAgICAgRERSMjogRERSMgogICAgICAgICAgRERSMzogRERSMwogICAgICAgICAgRERSNDogRERSNAogICAgICAgICAgRERSNTogRERSNQogICAgICAgICAgU0RSQU06IFNEUkFNCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogVHlwZQogICAgICBOYW1lOiBJVFNNTWVtb3J5LVR5cGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBNb2RlbAogICAgICBOYW1lOiBJVFNNTW9kZWwtTW9kZWwKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbE5vdGU6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogU2VydmljZSBUYWcKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcnZpY2VUYWcKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbzoKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBJUCBOZXR3b3JrCiAgICAgICAgICAgICAgRGlzcGxheVR5cGU6IENvbmZpZ0l0ZW1OYW1lCiAgICAgICAgICAgICAgRWRpdEZpZWxkTW9kZTogRHJvcGRvd24KICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogUmVsZXZhbnRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgICAgICAgIExhYmVsOiBJUCBOZXR3b3JrCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IE1BQyBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1NQUNBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSG9zdG5hbWUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBQcmltYXJ5CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgLSBTZXJ2ZXIgU29mdHdhcmUKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICBMaW5rVHlwZTogRGVwZW5kc09uCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IFNlcnZlciBTb2Z0d2FyZQogICAgICBOYW1lOiBJVFNNU2VydmVyU29mdHdhcmUtUmVmZXJlbmNlVG9TZXJ2ZXJTb2Z0d2FyZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2UtU3RvcmFnZToKICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1UeXBlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSERESGFyZERpc2tEcml2ZTogSEREIChIYXJkIERpc2sgRHJpdmUpCiAgICAgICAgICAgICAgICBOVk1lU1NETm9uVm9sYXRpbGVNZW1vcnlFeHByZXNzU29saWRTdGF0ZURyaXZlOiBOVk1lIFNTRCAoTm9uLVZvbGF0aWxlCiAgICAgICAgICAgICAgICAgIE1lbW9yeSBFeHByZXNzIFNvbGlkIFN0YXRlIERyaXZlKQogICAgICAgICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICAgICAgICBTU0RTb2xpZFN0YXRlRHJpdmU6IFNTRCAoU29saWQgU3RhdGUgRHJpdmUpCiAgICAgICAgICAgICAgICBTU0hEU29saWRTdGF0ZUh5YnJpZERyaXZlOiBTU0hEIChTb2xpZCBTdGF0ZSBIeWJyaWQgRHJpdmUpCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBUeXBlCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVR5cGUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogU3RvcmFnZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1DYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlLU1hbnVmYWN0dXJlcgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIEFEQVRBOiBBREFUQQogICAgICAgICAgICAgICAgQURBVEFUZWNobm9sb2d5OiBBREFUQSBUZWNobm9sb2d5CiAgICAgICAgICAgICAgICBBcGFjZXI6IEFwYWNlcgogICAgICAgICAgICAgICAgQnVmZmFsbzogQnVmZmFsbwogICAgICAgICAgICAgICAgQ29yc2FpcjogQ29yc2FpcgogICAgICAgICAgICAgICAgQ3J1Y2lhbE1pY3JvbjogQ3J1Y2lhbCAoTWljcm9uKQogICAgICAgICAgICAgICAgR1RlY2hub2xvZ3lXZXN0ZXJuRGlnaXRhbDogRy1UZWNobm9sb2d5IChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBIR1NUV2VzdGVybkRpZ2l0YWw6IEhHU1QgKFdlc3Rlcm4gRGlnaXRhbCkKICAgICAgICAgICAgICAgIEhpdGFjaGk6IEhpdGFjaGkKICAgICAgICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgICAgICAgS2luZ3N0b246IEtpbmdzdG9uCiAgICAgICAgICAgICAgICBLaW5nc3RvbkRpZ2l0YWw6IEtpbmdzdG9uIERpZ2l0YWwKICAgICAgICAgICAgICAgIExhQ2llU2VhZ2F0ZTogTGFDaWUgKFNlYWdhdGUpCiAgICAgICAgICAgICAgICBMZXhhcjogTGV4YXIKICAgICAgICAgICAgICAgIE1heHRvcjogTWF4dG9yCiAgICAgICAgICAgICAgICBPQ1pUb3NoaWJhOiBPQ1ogKFRvc2hpYmEpCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFBOWTogUE5ZCiAgICAgICAgICAgICAgICBQbGV4dG9yOiBQbGV4dG9yCiAgICAgICAgICAgICAgICBTS2h5bml4OiBTSyBoeW5peAogICAgICAgICAgICAgICAgU2Ftc3VuZzogU2Ftc3VuZwogICAgICAgICAgICAgICAgU2Ftc3VuZ1NlbWljb25kdWN0b3I6IFNhbXN1bmcgU2VtaWNvbmR1Y3RvcgogICAgICAgICAgICAgICAgU2FuRGlza1dlc3Rlcm5EaWdpdGFsOiBTYW5EaXNrIChXZXN0ZXJuIERpZ2l0YWwpCiAgICAgICAgICAgICAgICBTZWFnYXRlOiBTZWFnYXRlCiAgICAgICAgICAgICAgICBTaWxpY29uUG93ZXI6IFNpbGljb24gUG93ZXIKICAgICAgICAgICAgICAgIFNvbnk6IFNvbnkKICAgICAgICAgICAgICAgIFN1cGVyVGFsZW50OiBTdXBlciBUYWxlbnQKICAgICAgICAgICAgICAgIFRlYW1Hcm91cDogVGVhbSBHcm91cAogICAgICAgICAgICAgICAgVG9zaGliYTogVG9zaGliYQogICAgICAgICAgICAgICAgVHJhbnNjZW5kOiBUcmFuc2NlbmQKICAgICAgICAgICAgICAgIFdlc3Rlcm5EaWdpdGFsOiBXZXN0ZXJuIERpZ2l0YWwKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBTdG9yYWdlIE1hbnVmYWN0dXJlcgogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZS1NYW51ZmFjdHVyZXIKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1Nb2RlbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTW9kZWwKICAgICAgICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtTW9kZWwKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZS1TZXJpYWxOdW1iZXIKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFN0b3JhZ2UgU2VyaWFsTnVtYmVyCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlLVNlcmlhbE51bWJlcgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IFN0b3JhZ2UKICAgICAgTmFtZTogSVRTTVN0b3JhZ2UtU3RvcmFnZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBJbmNsdWRlOgogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBOYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLU5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1DYXBhY2l0eQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3RvcmFnZQogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogUGFydGl0aW9uIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLUNhcGFjaXR5CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tRnJlZUNhcGFjaXR5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBQYXJ0aXRpb24gRnJlZSBDYXBhY2l0eQogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1GcmVlQ2FwYWNpdHkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Vc2VkQ2FwYWNpdHkKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBVc2VkIENhcGFjaXR5CiAgICAgICAgICAgIE5hbWU6IElUU01TdG9yYWdlUGFydGl0aW9uLVVzZWRDYXBhY2l0eQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01TdG9yYWdlUGFydGl0aW9uLU1vdW50UG9pbnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN0b3JhZ2UKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFBhcnRpdGlvbiBNb3VudCBQb2ludAogICAgICAgICAgICBOYW1lOiBJVFNNU3RvcmFnZVBhcnRpdGlvbi1Nb3VudFBvaW50CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgVG9vbHRpcDogfgogICAgICBGaWVsZFR5cGU6IFNldAogICAgICBMYWJlbDogU3RvcmFnZSBQYXJ0aXRpb24KICAgICAgTmFtZTogSVRTTVN0b3JhZ2VQYXJ0aXRpb24tUGFydGl0aW9uCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBTdG9yYWdlCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBMb2NhdGlvbgogICAgTmFtZTogU3Vic2lkaWFyeQogICAgTnVtYmVyTW9kdWxlOiBBdXRvSW5jcmVtZW50CiAgICBQZXJtaXNzaW9uR3JvdXA6IGl0c20tY29uZmlnaXRlbQogICAgVmVyc2lvblN0cmluZ01vZHVsZTogSW5jcmVtZW50YWwKICBEZWZpbml0aW9uOiAiLS0tXHJcblBhZ2VzOlxyXG4gICMgVGhlIGluZGl2aWR1YWwgdGFicyBpbiBBZ2VudElUU01Db25maWdJdGVtWm9vbQogICAgYXJlIGNhbGxlZCBQYWdlcy5cclxuICAjIFRoZSBmaWVsZHMgdG8gYmUgZGlzcGxheWVkIHRoZXJlIGFyZSBkZWZpbmVkIGluIHRoZSByb2xlcwogICAgXHJcbiAgIyBsaXN0ZWQgb24gdGhlIGxlZnQgdW5kZXIgXCJSb2xlc1wiLlxyXG4gIC0gTmFtZTogU3VtbWFyeVxyXG4gICAgTGF5b3V0OlxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIEFkZHJlc3NcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQgogICAgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0KICAgIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBSb3dTcGFuOgogICAgMlxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3BhbjogMlxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuCiAgICBcICMgUm9sZXMgYXJlIHVzZWQgdG8gZGVmaW5lIHRoZSBTZWN0aW9ucyBhbmQgdGhlaXIgaW5kaXZpZHVhbCBmaWVsZHMuXHJcbiAgIwogICAgT2YgY291cnNlLCBzZWN0aW9ucyBjYW4gYWxzbyBiZSBkZWZpbmVkIGRpcmVjdGx5IGhlcmUgaW4gdGhlIGNsYXNzIGRlZmluaXRpb25zLgogICAgXHJcbiAgIyBXZSBoYXZlIHNpbXBseSBtb3ZlZCB0aGVtIHRvIFwiUm9sZXNcIiBmb3IgdGhlIHNha2Ugb2YgY2xhcml0eS5cclxuXHJcbgogICAgXCAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcyBhIFwiR2VuZXJhbCBGaWVsZHNcIlxyXG4KICAgIFwgIyBkZWZpbml0aW9uIHJlZmVycmluZyB0byBhIHJvbGUgd2l0aCB0aGUgbmFtZSBcIklUU00gR0YgY2xhc3MgbmFtZVwiLiBcclxuCiAgICBcICMgVGhpcyBpcyB3aGVyZSB0aGUgZmllbGRzIG9mIHRoZSByZXNwZWN0aXZlIGNsYXNzIGNhbiBiZSBjdXN0b21pc2VkLlxyXG4gIENNREIKICAgIEJhY2tsaW5rczpcclxuICAgIE5hbWU6IENNREIgQmFja2xpbmtzXHJcbiAgQ01EQiBEZXNjcmlwdGlvbjpcclxuICAgIE5hbWU6IENNREIKICAgIERlc2NyaXB0aW9uXHJcblxyXG5TZWN0aW9uczpcclxuICBBZGRyZXNzOlxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBIZWFkZXI6CiAgICBBZGRyZXNzXHJcbiAgICAgIC0gREY6IExvY2F0aW9uLVN0cmVldFxyXG4gICAgICAtIERGOiBMb2NhdGlvbi1DaXR5XHJcbiAgICAgIC0KICAgIERGOiBMb2NhdGlvbi1SZWZlcmVuY2VUb0NvdW50cnlcclxuICAgICAgLSBERjogTG9jYXRpb24tTGF0aXR1ZGVcclxuICAgICAgLSBERjoKICAgIExvY2F0aW9uLUxvbmdpdHVkZSIKICBEeW5hbWljRmllbGRzOgogICAgTG9jYXRpb24tQ2l0eToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ2l0eQogICAgICBOYW1lOiBMb2NhdGlvbi1DaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1MYXRpdHVkZToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTGF0aXR1ZGUKICAgICAgTmFtZTogTG9jYXRpb24tTGF0aXR1ZGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIExvY2F0aW9uLUxvbmdpdHVkZToKICAgICAgQ0lDbGFzczogU3Vic2lkaWFyeQogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTG9uZ2l0dWRlCiAgICAgIE5hbWU6IExvY2F0aW9uLUxvbmdpdHVkZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Db3VudHJ5OgogICAgICBDSUNsYXNzOiBTdWJzaWRpYXJ5CiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIENvdW50cnkKICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6IDAKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDb25maWdJdGVtCiAgICAgIExhYmVsOiBDb3VudHJ5CiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvQ291bnRyeQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tU3RyZWV0OgogICAgICBDSUNsYXNzOiBTdWJzaWRpYXJ5CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTdHJlZXQKICAgICAgTmFtZTogTG9jYXRpb24tU3RyZWV0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCi0gQ2xhc3M6CiAgICBDYXRlZ29yaWVzOgogICAgLSBBbGwKICAgIC0gTmV0d29yayBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogU3dpdGNoCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrCiAgICBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuCiAgICBcIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZToKICAgIElUU00gTmV0d29yayBJbmZvXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQgogICAgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQgogICAgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEdyb3VwOiBbXQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQWdlbnQKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEFnZW50CiAgICAgIExhYmVsOiBBZG1pbmlzdHJhdG9yCiAgICAgIE5hbWU6IENvbnRhY3QtQWRtaW5pc3RyYXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1EaXN0cmlidXRvcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzEnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lclVzZXIKICAgICAgTGFiZWw6IENvbnRhY3QgRGlzdHJpYnV0b3IKICAgICAgTmFtZTogQ29udGFjdC1EaXN0cmlidXRvcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgQ29udGFjdC1Vc2VyOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IENvc3QgdW5pdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1Db3N0VW5pdAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZToKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICcxJwogICAgICAgIFllYXJzSW5QYXN0OiAnNScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBJbnZvaWNlCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLURhdGVPZkludm9pY2UKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVudG9yeU51bWJlcjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZlcnN0bWVudCBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHMKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBJbnZvaWNlIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZvaWNlTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0czoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIE9yZGVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9yZGVyRGF0ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBPcmRlciBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVJlZmVyZW5jZVRvQWNjb3VudDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyQ29tcGFueQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogQ3VzdG9tZXJDb21wYW55TmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgIExhYmVsOiBQdXJjaGFzZWQgYXQKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGU6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnNScKICAgICAgICBZZWFyc0luUGFzdDogJzEnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgV2FycmFudHkKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctV2FycmFudHlEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTWFudWZhY3R1cmVyOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICBBU1VTOiBBU1VTCiAgICAgICAgICBBY2VyOiBBY2VyCiAgICAgICAgICBBZHZhbnRlY2g6IEFkdmFudGVjaAogICAgICAgICAgQW9wZW46IEFvcGVuCiAgICAgICAgICBBcHBsZTogQXBwbGUKICAgICAgICAgIENoZWNrIFBvaW50OiBDaGVjayBQb2ludAogICAgICAgICAgQ2lzY29TeXN0ZW1zOiBDaXNjbyBTeXN0ZW1zCiAgICAgICAgICBDaXRyaXggU3lzdGVtczogQ2l0cml4IFN5c3RlbXMKICAgICAgICAgIENvbXBhbEVsZWN0cm9uaWNzOiBDb21wYWwgRWxlY3Ryb25pY3MKICAgICAgICAgIERlbGxUZWNobm9sb2dpZXM6IERlbGwgVGVjaG5vbG9naWVzCiAgICAgICAgICBFQ1NFbGl0ZWdyb3VwQ29tcHV0ZXJTeXN0ZW1zOiBFQ1MgKEVsaXRlZ3JvdXAgQ29tcHV0ZXIgU3lzdGVtcykKICAgICAgICAgIEZvcnRpbmV0OiBGb3J0aW5ldAogICAgICAgICAgRnVqaXRzdTogRnVqaXRzdQogICAgICAgICAgR2lnYWJ5dGU6IEdpZ2FieXRlCiAgICAgICAgICBIZXdsZXR0UGFja2FyZEVudGVycHJpc2VIUEU6IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIChIUEUpCiAgICAgICAgICBIdWF3ZWk6IEh1YXdlaQogICAgICAgICAgSUJNOiBJQk0KICAgICAgICAgIElpeWFtYTogSWl5YW1hCiAgICAgICAgICBJbm5vTHV4Q29ycG9yYXRpb246IElubm9MdXggQ29ycG9yYXRpb24KICAgICAgICAgIEluc3B1cjogSW5zcHVyCiAgICAgICAgICBJbnRlbDogSW50ZWwKICAgICAgICAgIEludmVudGVjOiBJbnZlbnRlYwogICAgICAgICAgTGVub3ZvOiBMZW5vdm8KICAgICAgICAgIE1TSU1pY3JvU3RhckludGVybmF0aW9uYWw6IE1TSSAoTWljcm8tU3RhciBJbnRlcm5hdGlvbmFsKQogICAgICAgICAgTWljcm9zb2Z0OiBNaWNyb3NvZnQKICAgICAgICAgIE5FQzogTkVDCiAgICAgICAgICBPcGVuIFNlbnNlOiBPcGVuIFNlbnNlCiAgICAgICAgICBPcmFjbGU6IE9yYWNsZQogICAgICAgICAgT3RoZXI6IE90aGVyCiAgICAgICAgICBQYWxvIEFsdG8gTmV0d29ya3M6IFBhbG8gQWx0byBOZXR3b3JrcwogICAgICAgICAgUXVhbnRhQ29tcHV0ZXI6IFF1YW50YSBDb21wdXRlcgogICAgICAgICAgU2h1dHRsZUluYzogU2h1dHRsZSBJbmMuCiAgICAgICAgICBTb3Bob3M6IFNvcGhvcwogICAgICAgICAgU3VwZXJtaWNybzogU3VwZXJtaWNybwogICAgICAgICAgU3lub2xvZ3k6IFN5bm9sb2d5CiAgICAgICAgICBXaXN0cm9uOiBXaXN0cm9uCiAgICAgICAgICBXaXd5bm46IFdpd3lubgogICAgICAgICAgWm90YWM6IFpvdGFjCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcwJwogICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICBMYWJlbDogTWFudWZhY3R1cmVyCiAgICAgIE5hbWU6IElUU01Nb2RlbC1NYW51ZmFjdHVyZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1Nb2RlbDoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1vZGVsCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbAogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsTm90ZToKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBDb2xzOiAnNTcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBSb3dzOiAnJwogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dEFyZWEKICAgICAgTGFiZWw6IE1vZGVsIERlc2NyaXB0aW9uCiAgICAgIE5hbWU6IElUU01Nb2RlbC1Nb2RlbE5vdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1TZXJpYWxOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJpYWxudW1iZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLVNlcmlhbE51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcnZpY2VUYWc6CiAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBTZXJ2aWNlIFRhZwogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VydmljZVRhZwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvOgogICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgQ29uZmlnOgogICAgICAgIEluY2x1ZGU6CiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQUHJvdG9jb2wKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIElQdjQ6IElQdjQKICAgICAgICAgICAgICAgIElQdjY6IElQdjYKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBJUCBQcm90b2NvbAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1SZWZlcmVuY2VUb0lQTmV0d29yawogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBDbGFzc0lEczoKICAgICAgICAgICAgICAtIElQIE5ldHdvcmsKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBSZWxldmFudFRvCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IElQIE5ldHdvcmsKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBESENQOiBESENQCiAgICAgICAgICAgICAgICBESENQIFJlc2VydmVkOiBESENQIFJlc2VydmVkCiAgICAgICAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgICAgICAgIFN0YXRpYzogU3RhdGljCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWRkcmVzcyBBbGxvY2F0aW9uCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BZGRyZXNzQWxsb2NhdGlvbgogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogSVAgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSVBBZGRyZXNzCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogTUFDIEFkZHJlc3MKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU1BQ0FkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gUm91dGVyIChGaXJld2FsbCkKICAgICAgICAgICAgICAtIFN3aXRjaAogICAgICAgICAgICAgIC0gV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgICAgICAgICBEaXNwbGF5VHlwZTogQ29uZmlnSXRlbU5hbWUKICAgICAgICAgICAgICBFZGl0RmllbGRNb2RlOiBBdXRvQ29tcGxldGUKICAgICAgICAgICAgICBJbXBvcnRTZWFyY2hBdHRyaWJ1dGU6ICcnCiAgICAgICAgICAgICAgTGlua0RpcmVjdGlvbjogUmVmZXJlbmNpbmdJc1RhcmdldAogICAgICAgICAgICAgIExpbmtSZWZlcmVuY2luZ1R5cGU6IER5bmFtaWMKICAgICAgICAgICAgICBMaW5rVHlwZTogQ29ubmVjdGVkVG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBPYmplY3QKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IFRhcmdldCBvYmplY3QgcG9ydAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0UG9ydAogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBIb3N0bmFtZQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tSG9zdG5hbWUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tRlFETgogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBGUUROCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFN3aXRjaAogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogQ05BTUUvQWxpYXMKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUNOQU1FQWxpYXMKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgTm86IE5vCiAgICAgICAgICAgICAgICBZZXM6IFllcwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMScKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IFByaW1hcnkKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLVByaW1hcnkKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWN0aXZlCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBTd2l0Y2gKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogQWN0aXZlCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBUb29sdGlwOiB+CiAgICAgIEZpZWxkVHlwZTogU2V0CiAgICAgIExhYmVsOiBOZXR3b3JrIEluZm9ybWF0aW9uCiAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1OZXR3b3JrSW5mbwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbjoKICAgICAgQ0lDbGFzczogU3dpdGNoCiAgICAgIENvbmZpZzoKICAgICAgICBDbGFzc0lEczoKICAgICAgICAtIEJ1aWxkaW5nCiAgICAgICAgLSBDb3VudHJ5CiAgICAgICAgLSBSYWNrCiAgICAgICAgLSBSb29tCiAgICAgICAgLSBTdWJzaWRpYXJ5CiAgICAgICAgRGlzcGxheVR5cGU6IENsYXNzQ29uZmlnSXRlbU5hbWUKICAgICAgICBFZGl0RmllbGRNb2RlOiBEcm9wZG93bgogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgIExpbmtUeXBlOiBMb2NhdGlvbk9mCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICBTZWFyY2hBdHRyaWJ1dGU6IE5hbWUKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IENvbmZpZ0l0ZW0KICAgICAgTGFiZWw6IExvY2F0aW9uCiAgICAgIE5hbWU6IExvY2F0aW9uLVJlZmVyZW5jZVRvTG9jYXRpb24KICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KLSBDbGFzczoKICAgIENhdGVnb3JpZXM6CiAgICAtIEFsbAogICAgLSBJbmZyYXN0cnVjdHVyZQogICAgTmFtZTogVVBTCiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDNcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0KICAgIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogR2VuZXJhbCBGaWVsZHM6OkdlbmVyYWwKICAgIEluZm9ybWF0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246CiAgICBJVFNNIE1vZGVsOjpNb2RlbFxyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDJcclxuICAgICAgLQogICAgU2VjdGlvbjogSVRTTSBDb250YWN0OjpDb250YWN0XHJcbiAgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDNcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkxvY2F0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDoKICAgIDFcclxuICAgICAgLSBTZWN0aW9uOiBDTURCIExvY2F0ZWQgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgRGVzY3JpcHRpb246OkRlc2NyaXB0aW9uXHJcbiAgICAgICAgUm93U3RhcnQ6IDJcclxuCiAgICBcICAgICAgIFJvd1NwYW46IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbgogICAgXCAtIE5hbWU6IE5ldHdvcmsgSW5mb1xyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4gICAgICBDb2x1bW5zOgogICAgMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNCiAgICBOZXR3b3JrIEluZm86Ok5ldHdvcmsgSW5mb1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuXHJcbgogICAgXCAtIE5hbWU6IEFjY291bnRpbmdcclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczoKICAgIDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4gICAgICAgIFJvd1N0YXJ0OiAxXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6CiAgICAxXHJcblxyXG4gIC0gTmFtZTogTG9jYXRlZCBpblxyXG4gICAgTGF5b3V0OlxyXG4gICAgICBDb2x1bW5XaWR0aDogMWZyIDFmclxyXG4KICAgIFwgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbiAgICAgIC0gQWdlbnRcclxuICAgICAgLSBDdXN0b21lclxyXG4gICAgQ29udGVudDpcclxuCiAgICBcICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZCBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OgogICAgMVxyXG4gICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyCiAgICBpbmRpdmlkdWFsIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlCiAgICBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZQogICAgc2FrZSBvZiBjbGFyaXR5LlxyXG5cclxuICAjIEZvciBlYWNoIGNsYXNzIHdpdGggY2xhc3Mtc3BlY2lmaWMgZmllbGRzLCB0aGVyZSBpcwogICAgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuICAjIGRlZmluaXRpb24gcmVmZXJyaW5nIHRvIGEgcm9sZSB3aXRoIHRoZSBuYW1lIFwiSVRTTQogICAgR0YgY2xhc3MgbmFtZVwiLiBcclxuICAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4KICAgIGJlIGN1c3RvbWlzZWQuXHJcbiAgR2VuZXJhbCBGaWVsZHM6XHJcbiAgICBOYW1lOiBJVFNNIEdGIFVQU1xyXG4gIElUU00gTW9kZWw6XHJcbgogICAgXCAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuICBDTURCIExvY2F0ZWQKICAgIGluOlxyXG4gICAgTmFtZTogQ01EQiBMb2NhdGVkIGluXHJcbiAgSVRTTSBOZXR3b3JrIEluZm86XHJcbiAgICBOYW1lOiBJVFNNIE5ldHdvcmsKICAgIEluZm9cclxuICBDTURCIEFjY291bnRpbmc6XHJcbiAgICBOYW1lOiBDTURCIEFjY291bnRpbmdcclxuICBDTURCIEJhY2tsaW5rczpcclxuCiAgICBcICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQiBEZXNjcmlwdGlvbiIKICBEeW5hbWljRmllbGRzOgogICAgQ29udGFjdC1BZG1pbmlzdHJhdG9yOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMScKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ29udGFjdCBEaXN0cmlidXRvcgogICAgICBOYW1lOiBDb250YWN0LURpc3RyaWJ1dG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LVVzZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDdXN0b21lcgogICAgICBOYW1lOiBDb250YWN0LVVzZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUNvc3RVbml0OgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERhdGVSZXN0cmljdGlvbjogJycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcwJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgWWVhcnNJbkZ1dHVyZTogJzEnCiAgICAgICAgWWVhcnNJblBhc3Q6ICc1JwogICAgICAgIFllYXJzUGVyaW9kOiAnMScKICAgICAgRmllbGRUeXBlOiBEYXRlCiAgICAgIExhYmVsOiBEYXRlIG9mIEludm9pY2UKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctRGF0ZU9mSW52b2ljZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52ZW50b3J5IE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0czoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludm9pY2UgTnVtYmVyCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludm9pY2VOdW1iZXIKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogT3BlcmF0aW5nIGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLU9wZXJhdGluZ0Nvc3RzCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlckRhdGU6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgT3JkZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctT3JkZXJEYXRlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9yZGVyIE51bWJlcgogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcmRlck51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctUmVmZXJlbmNlVG9BY2NvdW50OgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgTXVsdGlzZWxlY3Q6ICcwJwogICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgUmVmZXJlbmNlRmlsdGVyTGlzdDogW10KICAgICAgICBSZWZlcmVuY2VkT2JqZWN0VHlwZTogQ3VzdG9tZXJDb21wYW55CiAgICAgICAgU2VhcmNoQXR0cmlidXRlOiBDdXN0b21lckNvbXBhbnlOYW1lCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBDdXN0b21lckNvbXBhbnkKICAgICAgTGFiZWw6IFB1cmNoYXNlZCBhdAogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1SZWZlcmVuY2VUb0FjY291bnQKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01BY2NvdW50aW5nLVdhcnJhbnR5RGF0ZToKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEYXRlUmVzdHJpY3Rpb246ICcnCiAgICAgICAgRGVmYXVsdFZhbHVlOiAnMCcKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFllYXJzSW5GdXR1cmU6ICc1JwogICAgICAgIFllYXJzSW5QYXN0OiAnMScKICAgICAgICBZZWFyc1BlcmlvZDogJzEnCiAgICAgIEZpZWxkVHlwZTogRGF0ZQogICAgICBMYWJlbDogRGF0ZSBvZiBXYXJyYW50eQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1XYXJyYW50eURhdGUKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01Nb2RlbC1NYW51ZmFjdHVyZXI6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEFTVVM6IEFTVVMKICAgICAgICAgIEFjZXI6IEFjZXIKICAgICAgICAgIEFkdmFudGVjaDogQWR2YW50ZWNoCiAgICAgICAgICBBb3BlbjogQW9wZW4KICAgICAgICAgIEFwcGxlOiBBcHBsZQogICAgICAgICAgQ2hlY2sgUG9pbnQ6IENoZWNrIFBvaW50CiAgICAgICAgICBDaXNjb1N5c3RlbXM6IENpc2NvIFN5c3RlbXMKICAgICAgICAgIENpdHJpeCBTeXN0ZW1zOiBDaXRyaXggU3lzdGVtcwogICAgICAgICAgQ29tcGFsRWxlY3Ryb25pY3M6IENvbXBhbCBFbGVjdHJvbmljcwogICAgICAgICAgRGVsbFRlY2hub2xvZ2llczogRGVsbCBUZWNobm9sb2dpZXMKICAgICAgICAgIEVDU0VsaXRlZ3JvdXBDb21wdXRlclN5c3RlbXM6IEVDUyAoRWxpdGVncm91cCBDb21wdXRlciBTeXN0ZW1zKQogICAgICAgICAgRm9ydGluZXQ6IEZvcnRpbmV0CiAgICAgICAgICBGdWppdHN1OiBGdWppdHN1CiAgICAgICAgICBHaWdhYnl0ZTogR2lnYWJ5dGUKICAgICAgICAgIEhld2xldHRQYWNrYXJkRW50ZXJwcmlzZUhQRTogSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgKEhQRSkKICAgICAgICAgIEh1YXdlaTogSHVhd2VpCiAgICAgICAgICBJQk06IElCTQogICAgICAgICAgSWl5YW1hOiBJaXlhbWEKICAgICAgICAgIElubm9MdXhDb3Jwb3JhdGlvbjogSW5ub0x1eCBDb3Jwb3JhdGlvbgogICAgICAgICAgSW5zcHVyOiBJbnNwdXIKICAgICAgICAgIEludGVsOiBJbnRlbAogICAgICAgICAgSW52ZW50ZWM6IEludmVudGVjCiAgICAgICAgICBMZW5vdm86IExlbm92bwogICAgICAgICAgTVNJTWljcm9TdGFySW50ZXJuYXRpb25hbDogTVNJIChNaWNyby1TdGFyIEludGVybmF0aW9uYWwpCiAgICAgICAgICBNaWNyb3NvZnQ6IE1pY3Jvc29mdAogICAgICAgICAgTkVDOiBORUMKICAgICAgICAgIE9wZW4gU2Vuc2U6IE9wZW4gU2Vuc2UKICAgICAgICAgIE9yYWNsZTogT3JhY2xlCiAgICAgICAgICBPdGhlcjogT3RoZXIKICAgICAgICAgIFBhbG8gQWx0byBOZXR3b3JrczogUGFsbyBBbHRvIE5ldHdvcmtzCiAgICAgICAgICBRdWFudGFDb21wdXRlcjogUXVhbnRhIENvbXB1dGVyCiAgICAgICAgICBTaHV0dGxlSW5jOiBTaHV0dGxlIEluYy4KICAgICAgICAgIFNvcGhvczogU29waG9zCiAgICAgICAgICBTdXBlcm1pY3JvOiBTdXBlcm1pY3JvCiAgICAgICAgICBTeW5vbG9neTogU3lub2xvZ3kKICAgICAgICAgIFdpc3Ryb246IFdpc3Ryb24KICAgICAgICAgIFdpd3lubjogV2l3eW5uCiAgICAgICAgICBab3RhYzogWm90YWMKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzAnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBNYW51ZmFjdHVyZXIKICAgICAgTmFtZTogSVRTTU1vZGVsLU1hbnVmYWN0dXJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLU1vZGVsOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogTW9kZWwKICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtTW9kZWxOb3RlOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIENvbHM6ICc1NycKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgIFJvd3M6ICcnCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0QXJlYQogICAgICBMYWJlbDogTW9kZWwgRGVzY3JpcHRpb24KICAgICAgTmFtZTogSVRTTU1vZGVsLU1vZGVsTm90ZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTU1vZGVsLVNlcmlhbE51bWJlcjoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcmlhbG51bWJlcgogICAgICBOYW1lOiBJVFNNTW9kZWwtU2VyaWFsTnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTW9kZWwtU2VydmljZVRhZzoKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IFNlcnZpY2UgVGFnCiAgICAgIE5hbWU6IElUU01Nb2RlbC1TZXJ2aWNlVGFnCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNTmV0d29ya0luZm8tTmV0d29ya0luZm86CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgSW5jbHVkZToKICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tSVBQcm90b2NvbAogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFBvc3NpYmxlVmFsdWVzOgogICAgICAgICAgICAgICAgSVB2NDogSVB2NAogICAgICAgICAgICAgICAgSVB2NjogSVB2NgogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgICAgVHJhbnNsYXRhYmxlVmFsdWVzOiAnMCcKICAgICAgICAgICAgICBUcmVlVmlldzogJzAnCiAgICAgICAgICAgIEZpZWxkVHlwZTogRHJvcGRvd24KICAgICAgICAgICAgTGFiZWw6IElQIFByb3RvY29sCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUFByb3RvY29sCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVJlZmVyZW5jZVRvSVBOZXR3b3JrCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIENsYXNzSURzOgogICAgICAgICAgICAgIC0gSVAgTmV0d29yawogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgICAgICAgTGlua1R5cGU6IFJlbGV2YW50VG8KICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogSVAgTmV0d29yawogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUmVmZXJlbmNlVG9JUE5ldHdvcmsKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQWRkcmVzc0FsbG9jYXRpb24KICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIERIQ1A6IERIQ1AKICAgICAgICAgICAgICAgIERIQ1AgUmVzZXJ2ZWQ6IERIQ1AgUmVzZXJ2ZWQKICAgICAgICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgICAgICAgU3RhdGljOiBTdGF0aWMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBZGRyZXNzIEFsbG9jYXRpb24KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFkZHJlc3NBbGxvY2F0aW9uCiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUlQQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBJUCBBZGRyZXNzCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1JUEFkZHJlc3MKICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBNQUMgQWRkcmVzcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tTUFDQWRkcmVzcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3QKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgQ2xhc3NJRHM6CiAgICAgICAgICAgICAgLSBSb3V0ZXIgKEZpcmV3YWxsKQogICAgICAgICAgICAgIC0gU3dpdGNoCiAgICAgICAgICAgICAgLSBXTEFOIGFjY2VzcyBwb2ludAogICAgICAgICAgICAgIERpc3BsYXlUeXBlOiBDb25maWdJdGVtTmFtZQogICAgICAgICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICAgICAgICBMaW5rRGlyZWN0aW9uOiBSZWZlcmVuY2luZ0lzVGFyZ2V0CiAgICAgICAgICAgICAgTGlua1JlZmVyZW5jaW5nVHlwZTogRHluYW1pYwogICAgICAgICAgICAgIExpbmtUeXBlOiBDb25uZWN0ZWRUbwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgICAgICAgU2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IE9iamVjdAogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tVGFyZ2V0T2JqZWN0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLVRhcmdldE9iamVjdFBvcnQKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUmVnRXhMaXN0OiBbXQogICAgICAgICAgICAgIFRvb2x0aXA6ICcnCiAgICAgICAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICAgICAgICBMYWJlbDogVGFyZ2V0IG9iamVjdCBwb3J0CiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1UYXJnZXRPYmplY3RQb3J0CiAgICAgICAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICAgICAgLSBERjogSVRTTU5ldHdvcmtJbmZvLUhvc3RuYW1lCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEhvc3RuYW1lCiAgICAgICAgICAgIE5hbWU6IElUU01OZXR3b3JrSW5mby1Ib3N0bmFtZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1GUUROCiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgICAgICAgTGFiZWw6IEZRRE4KICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUZRRE4KICAgICAgICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgICAgICAtIERGOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgRGVmaW5pdGlvbjoKICAgICAgICAgICAgQ0lDbGFzczogVVBTCiAgICAgICAgICAgIENvbmZpZzoKICAgICAgICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgICAgICAgTGluazogJycKICAgICAgICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgICAgICAgIExhYmVsOiBDTkFNRS9BbGlhcwogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tQ05BTUVBbGlhcwogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1QcmltYXJ5CiAgICAgICAgICBEZWZpbml0aW9uOgogICAgICAgICAgICBDSUNsYXNzOiBVUFMKICAgICAgICAgICAgQ29uZmlnOgogICAgICAgICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICAgICAgICBMaW5rOiAnJwogICAgICAgICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgICAgICAgIFBvc3NpYmxlTm9uZTogJzEnCiAgICAgICAgICAgICAgUG9zc2libGVWYWx1ZXM6CiAgICAgICAgICAgICAgICBObzogTm8KICAgICAgICAgICAgICAgIFllczogWWVzCiAgICAgICAgICAgICAgVG9vbHRpcDogJycKICAgICAgICAgICAgICBUcmFuc2xhdGFibGVWYWx1ZXM6ICcxJwogICAgICAgICAgICAgIFRyZWVWaWV3OiAnMCcKICAgICAgICAgICAgRmllbGRUeXBlOiBEcm9wZG93bgogICAgICAgICAgICBMYWJlbDogUHJpbWFyeQogICAgICAgICAgICBOYW1lOiBJVFNNTmV0d29ya0luZm8tUHJpbWFyeQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIC0gREY6IElUU01OZXR3b3JrSW5mby1BY3RpdmUKICAgICAgICAgIERlZmluaXRpb246CiAgICAgICAgICAgIENJQ2xhc3M6IFVQUwogICAgICAgICAgICBDb25maWc6CiAgICAgICAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgICAgICAgIExpbms6ICcnCiAgICAgICAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgICAgICAgIE5vOiBObwogICAgICAgICAgICAgICAgWWVzOiBZZXMKICAgICAgICAgICAgICBUb29sdGlwOiAnJwogICAgICAgICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICAgICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgICAgICAgIExhYmVsOiBBY3RpdmUKICAgICAgICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLUFjdGl2ZQogICAgICAgICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIFRvb2x0aXA6IH4KICAgICAgRmllbGRUeXBlOiBTZXQKICAgICAgTGFiZWw6IE5ldHdvcmsgSW5mb3JtYXRpb24KICAgICAgTmFtZTogSVRTTU5ldHdvcmtJbmZvLU5ldHdvcmtJbmZvCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNVVBTLUJhdHRlcnlDYXBhY2l0eToKICAgICAgQ0lDbGFzczogVVBTCiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IFtdCiAgICAgICAgVG9vbHRpcDogJycKICAgICAgRmllbGRUeXBlOiBUZXh0CiAgICAgIExhYmVsOiBCYXR0ZXJ5IENhcGFjaXR5IChBaCkKICAgICAgTmFtZTogSVRTTVVQUy1CYXR0ZXJ5Q2FwYWNpdHkKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIElUU01VUFMtQmF0dGVyeVR5cGU6CiAgICAgIENJQ2xhc3M6IFVQUwogICAgICBDb25maWc6CiAgICAgICAgRGVmYXVsdFZhbHVlOiAnJwogICAgICAgIExpbms6ICcnCiAgICAgICAgTGlua1ByZXZpZXc6ICcnCiAgICAgICAgTXVsdGlWYWx1ZTogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBQb3NzaWJsZVZhbHVlczoKICAgICAgICAgIEZseXdoZWVsOiBGbHl3aGVlbCBFbmVyZ3kgU3RvcmFnZQogICAgICAgICAgTGktaW9uOiBMaXRoaXVtLUlvbiAoTGktaW9uKSBCYXR0ZXJ5CiAgICAgICAgICBMaUZlUE80OiBMaXRoaXVtIElyb24gUGhvc3BoYXRlIChMaUZlUE80KSBCYXR0ZXJ5CiAgICAgICAgICBOaUNkOiBOaWNrZWwtQ2FkbWl1bSAoTmlDZCkgQmF0dGVyeQogICAgICAgICAgTmlNSDogTmlja2VsLU1ldGFsIEh5ZHJpZGUgKE5pTUgpIEJhdHRlcnkKICAgICAgICAgIE90aGVyOiBPdGhlcgogICAgICAgICAgU0xBOiBTZWFsZWQgTGVhZC1BY2lkIChTTEEpIEJhdHRlcnkKICAgICAgICBUb29sdGlwOiAnJwogICAgICAgIFRyYW5zbGF0YWJsZVZhbHVlczogJzEnCiAgICAgICAgVHJlZVZpZXc6ICcwJwogICAgICBGaWVsZFR5cGU6IERyb3Bkb3duCiAgICAgIExhYmVsOiBCYXR0ZXJ5IFR5cGUKICAgICAgTmFtZTogSVRTTVVQUy1CYXR0ZXJ5VHlwZQogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTVVQUy1NYXhpbXVtTG9hZENhcGFjaXR5OgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogW10KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE1heGltdW0gTG9hZCBDYXBhY2l0eSAoVykKICAgICAgTmFtZTogSVRTTVVQUy1NYXhpbXVtTG9hZENhcGFjaXR5CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBMb2NhdGlvbi1SZWZlcmVuY2VUb0xvY2F0aW9uOgogICAgICBDSUNsYXNzOiBVUFMKICAgICAgQ29uZmlnOgogICAgICAgIENsYXNzSURzOgogICAgICAgIC0gQnVpbGRpbmcKICAgICAgICAtIENvdW50cnkKICAgICAgICAtIFJhY2sKICAgICAgICAtIFJvb20KICAgICAgICAtIFN1YnNpZGlhcnkKICAgICAgICBEaXNwbGF5VHlwZTogQ2xhc3NDb25maWdJdGVtTmFtZQogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIExpbmtEaXJlY3Rpb246IFJlZmVyZW5jaW5nSXNUYXJnZXQKICAgICAgICBMaW5rUmVmZXJlbmNpbmdUeXBlOiBEeW5hbWljCiAgICAgICAgTGlua1R5cGU6IExvY2F0aW9uT2YKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgICAgIFNlYXJjaEF0dHJpYnV0ZTogTmFtZQogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ29uZmlnSXRlbQogICAgICBMYWJlbDogTG9jYXRpb24KICAgICAgTmFtZTogTG9jYXRpb24tUmVmZXJlbmNlVG9Mb2NhdGlvbgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQotIENsYXNzOgogICAgQ2F0ZWdvcmllczoKICAgIC0gQWxsCiAgICAtIE5ldHdvcmsgSW5mcmFzdHJ1Y3R1cmUKICAgIE5hbWU6IFdMQU4gYWNjZXNzIHBvaW50CiAgICBOdW1iZXJNb2R1bGU6IEF1dG9JbmNyZW1lbnQKICAgIFBlcm1pc3Npb25Hcm91cDogaXRzbS1jb25maWdpdGVtCiAgICBWZXJzaW9uU3RyaW5nTW9kdWxlOiBJbmNyZW1lbnRhbAogIERlZmluaXRpb246ICItLS1cclxuUGFnZXM6XHJcbiAgIyBUaGUgaW5kaXZpZHVhbCB0YWJzIGluIEFnZW50SVRTTUNvbmZpZ0l0ZW1ab29tCiAgICBhcmUgY2FsbGVkIFBhZ2VzLlxyXG4gICMgVGhlIGZpZWxkcyB0byBiZSBkaXNwbGF5ZWQgdGhlcmUgYXJlIGRlZmluZWQgaW4gdGhlIHJvbGVzCiAgICBcclxuICAjIGxpc3RlZCBvbiB0aGUgbGVmdCB1bmRlciBcIlJvbGVzXCIuXHJcbiAgLSBOYW1lOiBTdW1tYXJ5XHJcbiAgICBMYXlvdXQ6XHJcbgogICAgXCAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuICAgICAgLSBBZ2VudFxyXG4KICAgIFwgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogSVRTTSBNb2RlbDo6TW9kZWxcclxuICAgICAgICBSb3dTdGFydDoKICAgIDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IElUU00gQ29udGFjdDo6Q29udGFjdFxyXG4gICAgICAgIFJvd1N0YXJ0OgogICAgMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAyXHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkIGluOjpMb2NhdGlvblxyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAtIFNlY3Rpb246IENNREIgTG9jYXRlZAogICAgaW46OkFkZHJlc3NcclxuICAgICAgICBSb3dTdGFydDogM1xyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgQmFja2xpbmtzOjpCYWNrbGlua3NcclxuICAgICAgICBSb3dTdGFydDogNFxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbgogICAgXCAgICAgLSBTZWN0aW9uOiBDTURCIERlc2NyaXB0aW9uOjpEZXNjcmlwdGlvblxyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgUm93U3BhbjoKICAgIDJcclxuICAgICAgICBDb2x1bW5TdGFydDogMlxyXG4gICAgICAgIENvbHVtblNwYW46IDJcclxuXHJcbiAgLSBOYW1lOiBOZXR3b3JrCiAgICBJbmZvXHJcbiAgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgQ29udGVudDpcclxuICAgICAgLSBTZWN0aW9uOiBJVFNNIE5ldHdvcmsgSW5mbzo6TmV0d29yayBJbmZvXHJcbgogICAgXCAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcblxyXG4gIC0gTmFtZTogQWNjb3VudGluZ1xyXG4KICAgIFwgICBMYXlvdXQ6XHJcbiAgICAgIENvbHVtbldpZHRoOiAxZnIgMWZyXHJcbiAgICAgIENvbHVtbnM6IDJcclxuICAgIEludGVyZmFjZXM6XHJcbgogICAgXCAgICAgLSBBZ2VudFxyXG4gICAgICAtIEN1c3RvbWVyXHJcbiAgICBDb250ZW50OlxyXG4gICAgICAtIFNlY3Rpb246IENNREIgQWNjb3VudGluZzo6QWNjb3VudGluZ1xyXG4KICAgIFwgICAgICAgUm93U3RhcnQ6IDFcclxuICAgICAgICBDb2x1bW5TdGFydDogMVxyXG4gICAgICAgIFxyXG4gIC0gTmFtZTogTG9jYXRlZAogICAgaW5cclxuICAgIExheW91dDpcclxuICAgICAgQ29sdW1uV2lkdGg6IDFmciAxZnJcclxuICAgICAgQ29sdW1uczogMlxyXG4gICAgSW50ZXJmYWNlczpcclxuCiAgICBcICAgICAtIEFnZW50XHJcbiAgICAgIC0gQ3VzdG9tZXJcclxuICAgIENvbnRlbnQ6XHJcbiAgICAgIC0gU2VjdGlvbjogQ01EQiBMb2NhdGVkCiAgICBpbjo6TG9jYXRpb25cclxuICAgICAgICBSb3dTdGFydDogMVxyXG4gICAgICAgIENvbHVtblN0YXJ0OiAxXHJcbiAgICAgIC0gU2VjdGlvbjoKICAgIENNREIgTG9jYXRlZCBpbjo6QWRkcmVzc1xyXG4gICAgICAgIFJvd1N0YXJ0OiAyXHJcbiAgICAgICAgQ29sdW1uU3RhcnQ6IDFcclxuCiAgICBcICAgICAgIFxyXG5Sb2xlczpcclxuICAjIFJvbGVzIGFyZSB1c2VkIHRvIGRlZmluZSB0aGUgU2VjdGlvbnMgYW5kIHRoZWlyIGluZGl2aWR1YWwKICAgIGZpZWxkcy5cclxuICAjIE9mIGNvdXJzZSwgc2VjdGlvbnMgY2FuIGFsc28gYmUgZGVmaW5lZCBkaXJlY3RseSBoZXJlIGluIHRoZSBjbGFzcwogICAgZGVmaW5pdGlvbnMuIFxyXG4gICMgV2UgaGF2ZSBzaW1wbHkgbW92ZWQgdGhlbSB0byBcIlJvbGVzXCIgZm9yIHRoZSBzYWtlIG9mIGNsYXJpdHkuXHJcblxyXG4KICAgIFwgIyBGb3IgZWFjaCBjbGFzcyB3aXRoIGNsYXNzLXNwZWNpZmljIGZpZWxkcywgdGhlcmUgaXMgYSBcIkdlbmVyYWwgRmllbGRzXCJcclxuCiAgICBcICMgZGVmaW5pdGlvbiByZWZlcnJpbmcgdG8gYSByb2xlIHdpdGggdGhlIG5hbWUgXCJJVFNNIEdGIGNsYXNzIG5hbWVcIi4gXHJcbgogICAgXCAjIFRoaXMgaXMgd2hlcmUgdGhlIGZpZWxkcyBvZiB0aGUgcmVzcGVjdGl2ZSBjbGFzcyBjYW4gYmUgY3VzdG9taXNlZC5cclxuICBJVFNNCiAgICBNb2RlbDpcclxuICAgIE5hbWU6IElUU00gTW9kZWxcclxuICBJVFNNIENvbnRhY3Q6XHJcbiAgICBOYW1lOiBJVFNNIENvbnRhY3RcclxuCiAgICBcIENNREIgTG9jYXRlZCBpbjpcclxuICAgIE5hbWU6IENNREIgTG9jYXRlZCBpblxyXG4gIElUU00gTmV0d29yayBJbmZvOlxyXG4gICAgTmFtZToKICAgIElUU00gTmV0d29yayBJbmZvXHJcbiAgQ01EQiBBY2NvdW50aW5nOlxyXG4gICAgTmFtZTogQ01EQiBBY2NvdW50aW5nXHJcbiAgQ01EQgogICAgQmFja2xpbmtzOlxyXG4gICAgTmFtZTogQ01EQiBCYWNrbGlua3NcclxuICBDTURCIERlc2NyaXB0aW9uOlxyXG4gICAgTmFtZTogQ01EQgogICAgRGVzY3JpcHRpb24iCiAgRHluYW1pY0ZpZWxkczoKICAgIENvbnRhY3QtQWRtaW5pc3RyYXRvcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IERyb3Bkb3duCiAgICAgICAgR3JvdXA6IFtdCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBBZ2VudAogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQWdlbnQKICAgICAgTGFiZWw6IEFkbWluaXN0cmF0b3IKICAgICAgTmFtZTogQ29udGFjdC1BZG1pbmlzdHJhdG9yCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBDb250YWN0LURpc3RyaWJ1dG9yOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRWRpdEZpZWxkTW9kZTogQXV0b0NvbXBsZXRlCiAgICAgICAgSW1wb3J0U2VhcmNoQXR0cmlidXRlOiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcxJwogICAgICAgIE11bHRpc2VsZWN0OiAnMCcKICAgICAgICBQb3NzaWJsZU5vbmU6ICcxJwogICAgICAgIFJlZmVyZW5jZUZpbHRlckxpc3Q6IFtdCiAgICAgICAgUmVmZXJlbmNlZE9iamVjdFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogQ3VzdG9tZXJVc2VyCiAgICAgIExhYmVsOiBDb250YWN0IERpc3RyaWJ1dG9yCiAgICAgIE5hbWU6IENvbnRhY3QtRGlzdHJpYnV0b3IKICAgICAgT2JqZWN0VHlwZTogSVRTTUNvbmZpZ0l0ZW0KICAgIENvbnRhY3QtVXNlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIEVkaXRGaWVsZE1vZGU6IEF1dG9Db21wbGV0ZQogICAgICAgIEltcG9ydFNlYXJjaEF0dHJpYnV0ZTogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBNdWx0aXNlbGVjdDogJzAnCiAgICAgICAgUG9zc2libGVOb25lOiAnMScKICAgICAgICBSZWZlcmVuY2VGaWx0ZXJMaXN0OiBbXQogICAgICAgIFJlZmVyZW5jZWRPYmplY3RUeXBlOiBDdXN0b21lclVzZXIKICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IEN1c3RvbWVyVXNlcgogICAgICBMYWJlbDogQ3VzdG9tZXIKICAgICAgTmFtZTogQ29udGFjdC1Vc2VyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1Db3N0VW5pdDoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogQ29zdCB1bml0CiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUNvc3RVbml0CiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+CiAgICAgICAgVG9vbHRpcDogJycKICAgICAgICBZZWFyc0luRnV0dXJlOiAnMScKICAgICAgICBZZWFyc0luUGFzdDogJzUnCiAgICAgICAgWWVhcnNQZXJpb2Q6ICcxJwogICAgICBGaWVsZFR5cGU6IERhdGUKICAgICAgTGFiZWw6IERhdGUgb2YgSW52b2ljZQogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1EYXRlT2ZJbnZvaWNlCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlbnRvcnlOdW1iZXI6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVudG9yeSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52ZW50b3J5TnVtYmVyCiAgICAgIE9iamVjdFR5cGU6IElUU01Db25maWdJdGVtCiAgICBJVFNNQWNjb3VudGluZy1JbnZlc3RtZW50Q29zdHM6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IEludmVyc3RtZW50IGNvc3RzCiAgICAgIE5hbWU6IElUU01BY2NvdW50aW5nLUludmVzdG1lbnRDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcjoKICAgICAgQ0lDbGFzczogV0xBTiBhY2Nlc3MgcG9pbnQKICAgICAgQ29uZmlnOgogICAgICAgIERlZmF1bHRWYWx1ZTogJycKICAgICAgICBMaW5rOiAnJwogICAgICAgIExpbmtQcmV2aWV3OiAnJwogICAgICAgIE11bHRpVmFsdWU6ICcwJwogICAgICAgIFJlZ0V4TGlzdDogfgogICAgICAgIFRvb2x0aXA6ICcnCiAgICAgIEZpZWxkVHlwZTogVGV4dAogICAgICBMYWJlbDogSW52b2ljZSBOdW1iZXIKICAgICAgTmFtZTogSVRTTUFjY291bnRpbmctSW52b2ljZU51bWJlcgogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3BlcmF0aW5nQ29zdHM6CiAgICAgIENJQ2xhc3M6IFdMQU4gYWNjZXNzIHBvaW50CiAgICAgIENvbmZpZzoKICAgICAgICBEZWZhdWx0VmFsdWU6ICcnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiAnMCcKICAgICAgICBSZWdFeExpc3Q6IH4KICAgICAgICBUb29sdGlwOiAnJwogICAgICBGaWVsZFR5cGU6IFRleHQKICAgICAgTGFiZWw6IE9wZXJhdGluZyBjb3N0cwogICAgICBOYW1lOiBJVFNNQWNjb3VudGluZy1PcGVyYXRpbmdDb3N0cwogICAgICBPYmplY3RUeXBlOiBJVFNNQ29uZmlnSXRlbQogICAgSVRTTUFjY291bnRpbmctT3JkZXJEYXRlOgogICAgICBDSUNsYXNzOiBXTEFOIGFjY2VzcyBwb2ludAogICAgICBDb25maWc6CiAgICAgICAgRGF0ZVJlc3RyaWN0aW9uOiAnJwogICAgICAgIERlZmF1bHRWYWx1ZTogJzAnCiAgICAgICAgTGluazogJycKICAgICAgICBMaW5rUHJldmlldzogJycKICAgICAgICBNdWx0aVZhbHVlOiB+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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ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA2LjAuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjE5MTwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4zNDU8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpVc2VyQ29tbWVudD5TY3JlZW5zaG90PC9leGlmOlVzZXJDb21tZW50PgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAgPC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KCmVuZHN0cmVhbQplbmRvYmoKMTYxIDAgb2JqCjw8L0ludGVudC9QZXJjZXB0dWFsL0NvbG9yU3BhY2VbL0NhbFJHQjw8L1doaXRlUG9pbnRbLjk1MDQ2IDEgMS4wODkwNl0vR2FtbWFbMi4yCjIuMiAyLjJdL01hdHJpeFsuNDEyMzkgLjIxMjY0IC4wMTkzMyAuMzU3NTggLjcxNTE3IC4xMTkxOSAuMTgwNDggLjA3MjE5IC45NTA1M10+Pl0vU01hc2sKMTU5IDAgUi9NZXRhZGF0YSAxNjAgMCBSL1R5cGUvWE9iamVjdC9TdWJ0eXBlL0ltYWdlL1dpZHRoIDM0NS9IZWlnaHQgMTkxL0JpdHNQZXJDb21wb25lbnQKOC9EZWNvZGVQYXJtczw8L0JpdHNQZXJDb21wb25lbnQgOC9Db2xvcnMgMy9Db2x1bW5zIDM0NS9QcmVkaWN0b3IgMTU+Pi9GaWx0ZXIvRmxhdGVEZWNvZGUvTGVuZ3RoCjE3OTIyPj4Kc3RyZWFtCnja7V0FeBRXF93duLuSEBcgAkkguGtwh+IFCqXFKaV/oRRoC4XiToEWdwmaQNAQSPAIwWLE3V3/szswXWZmN5sQWhLe+bZ0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CQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHdKAADeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdEgCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDe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AN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAd0oAAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0SAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHinBADgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeKQEAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwIA3gkA3gkA3gkA3gkA3gkA3gkAeCcAeCcAeCcAeCcAeCcA4J0A4J0A4J0A4J0A4J0A4J0AgHcCgHcCgHcCgHcCgHcCgHcCAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4JwB4JwB4JwB4JwB4JwDgnQDgnQDgnQDgnQDgnQDgnQCAdwKAdwKAdwKAdwKAdwKAd0oAAN4JAN4JAN4JAN4JAN4JAHgnAHgnAHgnAHgnAHgnAHgnAOCdAOCdAOCdAOCdAOCdAIB3AoB3AoB3AoB3AoB3AoB3AgDeCQDeCQDeCQDeCQDeCQDeCQB4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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>